diff options
author | Isaac Hier <isaachier@gmail.com> | 2017-11-03 09:10:27 -0400 |
---|---|---|
committer | Aliaksey Kandratsenka <alkondratenko@gmail.com> | 2020-12-19 18:52:40 -0800 |
commit | 515fb221966a2413d00184186da97719b90e3915 (patch) | |
tree | bd982179c896e512984e974780e260393d330599 /cmake | |
parent | 4adb5ff74d35900dd8d0ed07959eef68f85c8886 (diff) | |
download | gperftools-515fb221966a2413d00184186da97719b90e3915.tar.gz |
Generate config header
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/DefineArchVariables.cmake | 10 | ||||
-rw-r--r-- | cmake/DefineTargetVariables.cmake | 13 | ||||
-rw-r--r-- | cmake/PCFromUContext.cmake | 6 | ||||
-rw-r--r-- | cmake/config.h.in | 294 | ||||
-rw-r--r-- | cmake/tcmalloc.h.in | 147 |
5 files changed, 457 insertions, 13 deletions
diff --git a/cmake/DefineArchVariables.cmake b/cmake/DefineArchVariables.cmake deleted file mode 100644 index 74e2b05..0000000 --- a/cmake/DefineArchVariables.cmake +++ /dev/null @@ -1,10 +0,0 @@ -if(NOT COMMAND check_cxx_source_compiles) - include(CheckCXXSourceCompiles) -endif() - -macro(define_arch_variables) - check_cxx_source_compiles("int main() { return __s390__; }" s390) - check_cxx_source_compiles("int main() { return __PPC64__; }" PPC64) - check_cxx_source_compiles("int main() { return __x86_64__; }" x86_64) - check_cxx_source_compiles("int main() { return __arm__; }" arm) -endmacro() diff --git a/cmake/DefineTargetVariables.cmake b/cmake/DefineTargetVariables.cmake new file mode 100644 index 0000000..cff175d --- /dev/null +++ b/cmake/DefineTargetVariables.cmake @@ -0,0 +1,13 @@ +if(NOT COMMAND check_cxx_source_compiles) + include(CheckCXXSourceCompiles) +endif() + +macro(define_target_variables) + check_cxx_source_compiles("int main() { return __s390__; }" s390) + check_cxx_source_compiles("int main() { return __PPC64__; }" PPC64) + check_cxx_source_compiles("int main() { return __x86_64__; }" x86_64) + check_cxx_source_compiles("int main() { return __arm__; }" ARM) + check_cxx_source_compiles("int main() { return __FreeBSD__; }" FreeBSD) + check_cxx_source_compiles("int main() { return __MINGW__; }" MINGW) + check_cxx_source_compiles("int main() { return __linux; }" LINUX) +endmacro() diff --git a/cmake/PCFromUContext.cmake b/cmake/PCFromUContext.cmake index c8ee57a..1d4eb85 100644 --- a/cmake/PCFromUContext.cmake +++ b/cmake/PCFromUContext.cmake @@ -42,7 +42,6 @@ macro(pc_from_ucontext variable) "uc_mcontext->__ss.__srr0") # OS X (>=10.5 [untested]) set(CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE=1) - set(CMAKE_REQUIRED_QUIET ON) if(HAVE_CYGWIN_SIGNAL_H) set(_inc "cygwin/signal.h") elseif(HAVE_SYS_UCONTEXT_H) @@ -51,10 +50,11 @@ macro(pc_from_ucontext variable) set(_inc "ucontext.h") endif() foreach(pc_field IN LISTS pc_fields) + string(MAKE_C_IDENTIFIER ${pc_field} pc_field_id) check_cxx_source_compiles( "#include <${_inc}>\nint main() { ucontext_t u; return u.${pc_field} == 0; }" - pc_field_found) - if(DEFINED pc_field_found) + HAVE_${pc_field_id}) + if(HAVE_${pc_field_id}) set(HAVE_${variable} ON) set(${variable} ${pc_field}) break() diff --git a/cmake/config.h.in b/cmake/config.h.in new file mode 100644 index 0000000..6bf5a57 --- /dev/null +++ b/cmake/config.h.in @@ -0,0 +1,294 @@ +#ifndef GPERFTOOLS_CONFIG_H_ +#define GPERFTOOLS_CONFIG_H_ + +#cmakedefine HAVE_SNPRINTF + +/* Define to 1 if compiler supports __builtin_stack_pointer */ +#cmakedefine HAVE_BUILTIN_STACK_POINTER + +/* Define to 1 if you have the <conflict-signal.h> header file. */ +#cmakedefine HAVE_CONFLICT_SIGNAL_H + +/* Define to 1 if you have the <cygwin/signal.h> header file. */ +#cmakedefine HAVE_CYGWIN_SIGNAL_H + +/* Define to 1 if you have the declaration of `cfree', and to 0 if you don't. + */ +#cmakedefine HAVE_DECL_CFREE + +/* Define to 1 if you have the declaration of `memalign', and to 0 if you + don't. */ +#cmakedefine HAVE_DECL_MEMALIGN + +/* Define to 1 if you have the declaration of `posix_memalign', and to 0 if + you don't. */ +#cmakedefine HAVE_DECL_POSIX_MEMALIGN + +/* Define to 1 if you have the declaration of `pvalloc', and to 0 if you + don't. */ +#cmakedefine HAVE_DECL_PVALLOC + +/* Define to 1 if you have the declaration of `uname', and to 0 if you don't. + */ +#cmakedefine HAVE_DECL_UNAME + +/* Define to 1 if you have the declaration of `valloc', and to 0 if you don't. + */ +#cmakedefine HAVE_DECL_VALLOC + +/* Define to 1 if you have the <dlfcn.h> header file. */ +#cmakedefine HAVE_DLFCN_H + +/* Define to 1 if the system has the type `Elf32_Versym'. */ +#cmakedefine HAVE_ELF32_VERSYM + +/* Define to 1 if you have the <execinfo.h> header file. */ +#cmakedefine HAVE_EXECINFO_H + +/* Define to 1 if you have the <fcntl.h> header file. */ +#cmakedefine HAVE_FCNTL_H + +/* Define to 1 if you have the <features.h> header file. */ +#cmakedefine HAVE_FEATURES_H + +/* Define to 1 if you have the `geteuid' function. */ +#cmakedefine HAVE_GETEUID + +/* Define to 1 if you have the `getpagesize' function. */ +#cmakedefine HAVE_GETPAGESIZE + +/* Define to 1 if you have the <glob.h> header file. */ +#cmakedefine HAVE_GLOB_H + +/* Define to 1 if you have the <grp.h> header file. */ +#cmakedefine HAVE_GRP_H + +/* Define to 1 if you have the <inttypes.h> header file. */ +#cmakedefine HAVE_INTTYPES_H + +/* Define to 1 if you have the <libunwind.h> header file. */ +#cmakedefine HAVE_LIBUNWIND_H + +/* Define to 1 if you have the <linux/ptrace.h> header file. */ +#cmakedefine HAVE_LINUX_PTRACE_H + +/* Define to 1 if you have the <malloc.h> header file. */ +#cmakedefine HAVE_MALLOC_H + +/* Define to 1 if you have the <malloc/malloc.h> header file. */ +#cmakedefine HAVE_MALLOC_MALLOC_H + +/* Define to 1 if you have the <memory.h> header file. */ +#cmakedefine HAVE_MEMORY_H + +/* Define to 1 if you have a working `mmap' system call. */ +#cmakedefine HAVE_MMAP + +/* define if the compiler implements namespaces */ +#cmakedefine HAVE_NAMESPACES + +/* Define to 1 if you have the <poll.h> header file. */ +#cmakedefine HAVE_POLL_H + +/* define if libc has program_invocation_name */ +#cmakedefine HAVE_PROGRAM_INVOCATION_NAME + +/* Define if you have POSIX threads libraries and header files. */ +#cmakedefine HAVE_PTHREAD + +/* Define to 1 if you have the <pwd.h> header file. */ +#cmakedefine HAVE_PWD_H + +/* Define to 1 if you have the `sbrk' function. */ +#cmakedefine HAVE_SBRK + +/* Define to 1 if you have the <sched.h> header file. */ +#cmakedefine HAVE_SCHED_H + +/* Define to 1 if you have the <stdint.h> header file. */ +#cmakedefine HAVE_STDINT_H + +/* Define to 1 if you have the <stdlib.h> header file. */ +#cmakedefine HAVE_STDLIB_H 1 + +/* Define to 1 if you have the <strings.h> header file. */ +#cmakedefine HAVE_STRINGS_H + +/* Define to 1 if you have the <string.h> header file. */ +#cmakedefine HAVE_STRING_H 1 + +/* Define to 1 if the system has the type `struct mallinfo'. */ +#cmakedefine HAVE_STRUCT_MALLINFO + +/* Define to 1 if you have the <sys/cdefs.h> header file. */ +#cmakedefine HAVE_SYS_CDEFS_H + +/* Define to 1 if you have the <sys/malloc.h> header file. */ +#cmakedefine HAVE_SYS_MALLOC_H + +/* Define to 1 if you have the <sys/param.h> header file. */ +#cmakedefine HAVE_SYS_PARAM_H + +/* Define to 1 if you have the <sys/prctl.h> header file. */ +#cmakedefine HAVE_SYS_PRCTL_H + +/* Define to 1 if you have the <sys/resource.h> header file. */ +#cmakedefine HAVE_SYS_RESOURCE_H + +/* Define to 1 if you have the <sys/socket.h> header file. */ +#cmakedefine HAVE_SYS_SOCKET_H + +/* Define to 1 if you have the <sys/stat.h> header file. */ +#cmakedefine HAVE_SYS_STAT_H + +/* Define to 1 if you have the <sys/syscall.h> header file. */ +#cmakedefine HAVE_SYS_SYSCALL_H + +/* Define to 1 if you have the <sys/types.h> header file. */ +#cmakedefine HAVE_SYS_TYPES_H + +/* <sys/ucontext.h> is broken on redhat 7 */ +#cmakedefine HAVE_SYS_UCONTEXT_H + +/* Define to 1 if you have the <sys/wait.h> header file. */ +#cmakedefine HAVE_SYS_WAIT_H + +/* Define to 1 if compiler supports __thread */ +#cmakedefine HAVE_TLS + +/* Define to 1 if you have the <ucontext.h> header file. */ +#cmakedefine HAVE_UCONTEXT_H + +/* Define to 1 if you have the <unistd.h> header file. */ +#cmakedefine HAVE_UNISTD_H + +/* Define to 1 if you have the <unwind.h> header file. */ +#cmakedefine HAVE_UNWIND_H + +/* Define to 1 if you have the <valgrind.h> header file. */ +#cmakedefine HAVE_VALGRIND_H + +/* define if your compiler has __attribute__ */ +#cmakedefine HAVE___ATTRIBUTE__ + +/* Define to 1 if compiler supports __environ */ +#cmakedefine HAVE___ENVIRON + +/* Define to 1 if the system has the type `__int64'. */ +#cmakedefine HAVE___INT64 + +/* prefix where we look for installed files */ +#cmakedefine INSTALL_PREFIX + +/* Define to 1 if int32_t is equivalent to intptr_t */ +#cmakedefine INT32_EQUALS_INTPTR + +/* Define to the sub-directory in which libtool stores uninstalled libraries. */ +#cmakedefine LT_OBJDIR + +/* Define to 'volatile' if __malloc_hook is declared volatile */ +#cmakedefine MALLOC_HOOK_MAYBE_VOLATILE + +/* Define to 1 if your C compiler doesn't accept -c and -o together. */ +#undef NO_MINUS_C_MINUS_O + +/* Name of package */ +#define PACKAGE "@PROJECT_NAME@" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "gperftools@googlegroups.com" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "@PROJECT_NAME@" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "@PROJECT_NAME@ @PROJECT_VERSION@" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "@PROJECT_NAME@" + +/* Define to the home page for this package. */ +#cmakedefine PACKAGE_URL + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "@PROJECT_VERSION@" + +/* How to access the PC from a struct ucontext */ +#define PC_FROM_UCONTEXT @PC_FROM_UCONTEXT_DEF@ + +/* Always the empty-string on non-windows systems. On windows, should be + "__declspec(dllexport)". This way, when we compile the dll, we export our + functions/classes. It's safe to define this here because config.h is only + used internally, to compile the DLL, and every DLL source file #includes + "config.h" before anything else. */ +#cmakedefine WIN32 +#if defined(WIN32) +#ifndef PERFTOOLS_DLL_DECL +# define PERFTOOLS_IS_A_DLL 1 /* not set if you're statically linking */ +# define PERFTOOLS_DLL_DECL __declspec(dllexport) +# define PERFTOOLS_DLL_DECL_FOR_UNITTESTS __declspec(dllimport) +#endif +#endif + +/* printf format code for printing a size_t and ssize_t */ +#define PRIdS "Id" + +/* printf format code for printing a size_t and ssize_t */ +#define PRIuS "Iu" + +/* printf format code for printing a size_t and ssize_t */ +#define PRIxS "Ix" + +/* Mark the systems where we know it's bad if pthreads runs too + early before main (before threads are initialized, presumably). */ +#cmakedefine PTHREADS_CRASHES_IF_RUN_TOO_EARLY + +/* Define to necessary symbol if this constant uses a non-standard name on + your system. */ +#define PTHREAD_CREATE_JOINABLE @PTHREAD_CREATE_JOINABLE@ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* the namespace where STL code like vector<> is defined */ +#cmakedefine STL_NAMESPACE std + +/* Version number of package */ +#define VERSION @PROJECT_VERSION@ + +/* C99 says: define this to get the PRI... macros from stdint.h */ +#ifndef __STDC_FORMAT_MACROS +# define __STDC_FORMAT_MACROS 1 +#endif + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#define inline @inline@ +#endif + +#if defined(WIN32) + +// --------------------------------------------------------------------- +// Extra stuff not found in config.h.in + +// This must be defined before the windows.h is included. We need at +// least 0x0400 for mutex.h to have access to TryLock, and at least +// 0x0501 for patch_functions.cc to have access to GetModuleHandleEx. +// (This latter is an optimization we could take out if need be.) +#ifndef _WIN32_WINNT +# define _WIN32_WINNT 0x0501 +#endif + +#define NO_HEAP_CHECK 1 + +// TODO(csilvers): include windows/port.h in every relevant source file instead? +#include "windows/port.h" + +#endif + +#ifdef __MINGW32__ +#include "windows/mingw.h" +#endif + +#endif /* #ifndef GPERFTOOLS_CONFIG_H_ */ diff --git a/cmake/tcmalloc.h.in b/cmake/tcmalloc.h.in new file mode 100644 index 0000000..3bffb6f --- /dev/null +++ b/cmake/tcmalloc.h.in @@ -0,0 +1,147 @@ +// -*- Mode: C; c-basic-offset: 2; indent-tabs-mode: nil -*- +/* Copyright (c) 2003, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * --- + * Author: Sanjay Ghemawat <opensource@google.com> + * .h file by Craig Silverstein <opensource@google.com> + */ + +#ifndef TCMALLOC_TCMALLOC_H_ +#define TCMALLOC_TCMALLOC_H_ + +#include <stddef.h> /* for size_t */ + +/* Define the version number so folks can check against it */ +#define TC_VERSION_MAJOR @PROJECT_VERSION_MAJOR@ +#define TC_VERSION_MINOR @PROJECT_VERSION_MINOR@ +#define TC_VERSION_PATCH "@PROJECT_VERSION_PATCH@" +#define TC_VERSION_STRING "gperftools @TC_VERSION_MAJOR@.@TC_VERSION_MINOR@@TC_VERSION_PATCH@" + +/* For struct mallinfo, if it's defined. */ +#ifdef HAVE_STRUCT_MALLINFO +# include <malloc.h> +#endif + +#ifndef PERFTOOLS_NOTHROW + +#if __cplusplus >= 201103L +#define PERFTOOLS_NOTHROW noexcept +#elif defined(__cplusplus) +#define PERFTOOLS_NOTHROW throw() +#else +# ifdef __GNUC__ +# define PERFTOOLS_NOTHROW __attribute__((__nothrow__)) +# else +# define PERFTOOLS_NOTHROW +# endif +#endif + +#endif + +#ifndef PERFTOOLS_DLL_DECL +# ifdef _WIN32 +# define PERFTOOLS_DLL_DECL __declspec(dllimport) +# else +# define PERFTOOLS_DLL_DECL +# endif +#endif + +#ifdef __cplusplus +namespace std { +struct nothrow_t; +} + +extern "C" { +#endif + /* + * Returns a human-readable version string. If major, minor, + * and/or patch are not NULL, they are set to the major version, + * minor version, and patch-code (a string, usually ""). + */ + PERFTOOLS_DLL_DECL const char* tc_version(int* major, int* minor, + const char** patch) PERFTOOLS_NOTHROW; + + PERFTOOLS_DLL_DECL void* tc_malloc(size_t size) PERFTOOLS_NOTHROW; + PERFTOOLS_DLL_DECL void* tc_malloc_skip_new_handler(size_t size) PERFTOOLS_NOTHROW; + PERFTOOLS_DLL_DECL void tc_free(void* ptr) PERFTOOLS_NOTHROW; + PERFTOOLS_DLL_DECL void tc_free_sized(void *ptr, size_t size) PERFTOOLS_NOTHROW; + PERFTOOLS_DLL_DECL void* tc_realloc(void* ptr, size_t size) PERFTOOLS_NOTHROW; + PERFTOOLS_DLL_DECL void* tc_calloc(size_t nmemb, size_t size) PERFTOOLS_NOTHROW; + PERFTOOLS_DLL_DECL void tc_cfree(void* ptr) PERFTOOLS_NOTHROW; + + PERFTOOLS_DLL_DECL void* tc_memalign(size_t __alignment, + size_t __size) PERFTOOLS_NOTHROW; + PERFTOOLS_DLL_DECL int tc_posix_memalign(void** ptr, + size_t align, size_t size) PERFTOOLS_NOTHROW; + PERFTOOLS_DLL_DECL void* tc_valloc(size_t __size) PERFTOOLS_NOTHROW; + PERFTOOLS_DLL_DECL void* tc_pvalloc(size_t __size) PERFTOOLS_NOTHROW; + + PERFTOOLS_DLL_DECL void tc_malloc_stats(void) PERFTOOLS_NOTHROW; + PERFTOOLS_DLL_DECL int tc_mallopt(int cmd, int value) PERFTOOLS_NOTHROW; +#if HAVE_STRUCT_MALLINFO + PERFTOOLS_DLL_DECL struct mallinfo tc_mallinfo(void) PERFTOOLS_NOTHROW; +#endif + + /* + * This is an alias for MallocExtension::instance()->GetAllocatedSize(). + * It is equivalent to + * OS X: malloc_size() + * glibc: malloc_usable_size() + * Windows: _msize() + */ + PERFTOOLS_DLL_DECL size_t tc_malloc_size(void* ptr) PERFTOOLS_NOTHROW; + +#ifdef __cplusplus + PERFTOOLS_DLL_DECL int tc_set_new_mode(int flag) PERFTOOLS_NOTHROW; + PERFTOOLS_DLL_DECL void* tc_new(size_t size); + PERFTOOLS_DLL_DECL void* tc_new_nothrow(size_t size, + const std::nothrow_t&) PERFTOOLS_NOTHROW; + PERFTOOLS_DLL_DECL void tc_delete(void* p) PERFTOOLS_NOTHROW; + PERFTOOLS_DLL_DECL void tc_delete_sized(void* p, size_t size) PERFTOOLS_NOTHROW; + PERFTOOLS_DLL_DECL void tc_delete_nothrow(void* p, + const std::nothrow_t&) PERFTOOLS_NOTHROW; + PERFTOOLS_DLL_DECL void* tc_newarray(size_t size); + PERFTOOLS_DLL_DECL void* tc_newarray_nothrow(size_t size, + const std::nothrow_t&) PERFTOOLS_NOTHROW; + PERFTOOLS_DLL_DECL void tc_deletearray(void* p) PERFTOOLS_NOTHROW; + PERFTOOLS_DLL_DECL void tc_deletearray_sized(void* p, size_t size) PERFTOOLS_NOTHROW; + PERFTOOLS_DLL_DECL void tc_deletearray_nothrow(void* p, + const std::nothrow_t&) PERFTOOLS_NOTHROW; +} +#endif + +/* We're only un-defining for public */ +#if !defined(GPERFTOOLS_CONFIG_H_) + +#undef PERFTOOLS_NOTHROW + +#endif /* GPERFTOOLS_CONFIG_H_ */ + +#endif /* #ifndef TCMALLOC_TCMALLOC_H_ */ |