From 8f9c0b66973e32708fab4c6f1f80345385886e52 Mon Sep 17 00:00:00 2001 From: "commit-queue@webkit.org" Date: Tue, 27 Sep 2016 20:30:09 +0000 Subject: [PATCH] [CMake] Use CMake to determine HAVE_* defines https://bugs.webkit.org/show_bug.cgi?id=162368 Patch by Don Olmstead on 2016-09-27 Reviewed by Alex Christensen. .: * Source/cmake/OptionsCommon.cmake: Source/WTF: * wtf/Platform.h: git-svn-id: https://svn.webkit.org/repository/webkit/trunk@206458 268f45cc-cd09-0410-ab3c-d52691b4dbfc --- ChangeLog | 9 +++++++ Source/WTF/ChangeLog | 9 +++++++ Source/WTF/wtf/Platform.h | 44 +++++++------------------------ Source/cmake/OptionsCommon.cmake | 56 +++++++++++++++++++++++++++++++++++++--- 4 files changed, 81 insertions(+), 37 deletions(-) diff --git a/ChangeLog b/ChangeLog index a51940a..877ab08 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2016-09-27 Don Olmstead + + [CMake] Use CMake to determine HAVE_* defines + https://bugs.webkit.org/show_bug.cgi?id=162368 + + Reviewed by Alex Christensen. + + * Source/cmake/OptionsCommon.cmake: + 2016-09-27 Konstantin Tokarev [cmake] Simplify Clang checks and prepare for compiler ID split diff --git a/Source/WTF/ChangeLog b/Source/WTF/ChangeLog index 1a4fd47..8e69f1e 100644 --- a/Source/WTF/ChangeLog +++ b/Source/WTF/ChangeLog @@ -1,3 +1,12 @@ +2016-09-27 Don Olmstead + + [CMake] Use CMake to determine HAVE_* defines + https://bugs.webkit.org/show_bug.cgi?id=162368 + + Reviewed by Alex Christensen. + + * wtf/Platform.h: + 2016-09-20 Anders Carlsson PlatformEvent::m_modifiers should be an OptionSet diff --git a/Source/WTF/wtf/Platform.h b/Source/WTF/wtf/Platform.h index 77bf8f9..34e06cc 100644 --- a/Source/WTF/wtf/Platform.h +++ b/Source/WTF/wtf/Platform.h @@ -605,45 +605,33 @@ #endif #endif /* !defined(HAVE_ACCESSIBILITY) */ -#if OS(UNIX) +/* FIXME: Remove after CMake build enabled on Darwin */ +#if OS(DARWIN) #define HAVE_ERRNO_H 1 #define HAVE_LANGINFO_H 1 #define HAVE_MMAP 1 #define HAVE_SIGNAL_H 1 +#define HAVE_STAT_BIRTHTIME 1 #define HAVE_STRINGS_H 1 +#define HAVE_STRNSTR 1 #define HAVE_SYS_PARAM_H 1 #define HAVE_SYS_TIME_H 1 +#define HAVE_TM_GMTOFF 1 +#define HAVE_TM_ZONE 1 +#define HAVE_TIMEGM 1 +#endif /* OS(DARWIN) */ + +#if OS(UNIX) #define USE_PTHREADS 1 #endif /* OS(UNIX) */ -#if (OS(FREEBSD) || OS(OPENBSD)) && !defined(__GLIBC__) -#define HAVE_PTHREAD_NP_H 1 -#endif - #if !defined(HAVE_VASPRINTF) #if !COMPILER(MSVC) && !COMPILER(MINGW) #define HAVE_VASPRINTF 1 #endif #endif -#if !defined(HAVE_STRNSTR) -#if OS(DARWIN) || (OS(FREEBSD) && !defined(__GLIBC__)) -#define HAVE_STRNSTR 1 -#endif -#endif - -#if (OS(DARWIN) || OS(FREEBSD) || OS(NETBSD)) && !defined(__GLIBC__) -#define HAVE_STAT_BIRTHTIME 1 -#endif - -#if !OS(WINDOWS) && !OS(SOLARIS) -#define HAVE_TM_GMTOFF 1 -#define HAVE_TM_ZONE 1 -#define HAVE_TIMEGM 1 -#endif - #if OS(DARWIN) - #define HAVE_DISPATCH_H 1 #define HAVE_MADV_FREE 1 #define HAVE_MADV_FREE_REUSE 1 @@ -662,18 +650,6 @@ #endif /* OS(DARWIN) */ -#if OS(WINDOWS) - -#define HAVE_SYS_TIMEB_H 1 -#define HAVE_ALIGNED_MALLOC 1 -#define HAVE_ISDEBUGGERPRESENT 1 - -#endif - -#if OS(WINDOWS) -#define HAVE_VIRTUALALLOC 1 -#endif - #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101200) || (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 100000) #define HAVE_CFNETWORK_STORAGE_PARTITIONING 1 #endif diff --git a/Source/cmake/OptionsCommon.cmake b/Source/cmake/OptionsCommon.cmake index c17d5ea..233f968 100644 --- a/Source/cmake/OptionsCommon.cmake +++ b/Source/cmake/OptionsCommon.cmake @@ -203,8 +203,58 @@ if (NOT APPLE) set(CMAKE_NINJA_FORCE_RESPONSE_FILE 1) endif () +# Macros for determining HAVE values. +include(CheckIncludeFile) +include(CheckFunctionExists) +include(CheckSymbolExists) +include(CheckStructHasMember) + +macro(_HAVE_CHECK_INCLUDE _variable _header) + check_include_file(${_header} ${_variable}_value) + SET_AND_EXPOSE_TO_BUILD(${_variable} ${_variable}_value) +endmacro() + +macro(_HAVE_CHECK_FUNCTION _variable _function) + check_function_exists(${_function} ${_variable}_value) + SET_AND_EXPOSE_TO_BUILD(${_variable} ${_variable}_value) +endmacro() + +macro(_HAVE_CHECK_SYMBOL _variable _symbol _header) + check_symbol_exists(${_symbol} ${_header} ${_variable}_value) + SET_AND_EXPOSE_TO_BUILD(${_variable} ${_variable}_value) +endmacro() + +macro(_HAVE_CHECK_STRUCT _variable _struct _member _header) + check_struct_has_member(${_struct} ${_member} ${_header} ${_variable}_value) + SET_AND_EXPOSE_TO_BUILD(${_variable} ${_variable}_value) +endmacro() + # Check whether features.h header exists. # Including glibc's one defines __GLIBC__, that is used in Platform.h -include(CheckIncludeFiles) -check_include_files(features.h HAVE_FEATURES_H) -SET_AND_EXPOSE_TO_BUILD(HAVE_FEATURES_H ${HAVE_FEATURES_H}) +_HAVE_CHECK_INCLUDE(HAVE_FEATURES_H features.h) + +# Check for headers +_HAVE_CHECK_INCLUDE(HAVE_ERRNO_H errno.h) +_HAVE_CHECK_INCLUDE(HAVE_LANGINFO_H langinfo.h) +_HAVE_CHECK_INCLUDE(HAVE_MMAP sys/mman.h) +_HAVE_CHECK_INCLUDE(HAVE_PTHREAD_NP_H pthread_np.h) +_HAVE_CHECK_INCLUDE(HAVE_STRINGS_H strings.h) +_HAVE_CHECK_INCLUDE(HAVE_SYS_PARAM_H sys/param.h) +_HAVE_CHECK_INCLUDE(HAVE_SYS_TIME_H sys/time.h) +_HAVE_CHECK_INCLUDE(HAVE_SYS_TIMEB_H sys/timeb.h) + +# Check for functions +_HAVE_CHECK_FUNCTION(HAVE_ALIGNED_MALLOC _aligned_malloc) +_HAVE_CHECK_FUNCTION(HAVE_ISDEBUGGERPRESENT IsDebuggerPresent) +_HAVE_CHECK_FUNCTION(HAVE_STRNSTR strnstr) +_HAVE_CHECK_FUNCTION(HAVE_TIMEGM timegm) +_HAVE_CHECK_FUNCTION(HAVE_VASPRINTF vasprintf) + +# Check for symbols +# Windows has signal.h but is missing symbols that are used in calls to signal. +_HAVE_CHECK_SYMBOL(HAVE_SIGNAL_H SIGTRAP signal.h) + +# Check for struct members +_HAVE_CHECK_STRUCT(HAVE_STAT_BIRTHTIME "struct stat" st_birthtime sys/stat.h) +_HAVE_CHECK_STRUCT(HAVE_TM_GMTOFF "struct tm" tm_gmtoff time.h) +_HAVE_CHECK_STRUCT(HAVE_TM_ZONE "struct tm" tm_zone time.h) -- 1.8.3.1