diff options
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/ConfigureChecks.cmake | 38 | ||||
-rw-r--r-- | cmake/Modules/DefineCompilerFlags.cmake | 6 | ||||
-rw-r--r-- | cmake/Modules/MacroAddCheckTest.cmake | 12 | ||||
-rw-r--r-- | cmake/Modules/MacroEnsureOutOfSourceBuild.cmake | 18 | ||||
-rw-r--r-- | cmake/config.h.cmake | 12 |
5 files changed, 86 insertions, 0 deletions
diff --git a/cmake/ConfigureChecks.cmake b/cmake/ConfigureChecks.cmake new file mode 100644 index 000000000000..b72a390af8cf --- /dev/null +++ b/cmake/ConfigureChecks.cmake @@ -0,0 +1,38 @@ +INCLUDE( CheckIncludeFile ) +INCLUDE( CheckFunctionExists ) +INCLUDE( CheckSymbolExists ) +INCLUDE( CheckCSourceCompiles ) + +SET( PACKAGE ${PACKAGE_NAME} ) +SET( VERSION ${PACKAGE_VERSION} ) + +SET( BINARYDIR ${CMAKE_BINARY_DIR} ) +SET( SOURCEDIR ${CMAKE_SOURCE_DIR} ) + +# HEADER FILES +CHECK_INCLUDE_FILE( sys/byteorder.h HAVE_SYS_BYTEORDER_H ) +CHECK_INCLUDE_FILE( AvailabilityMacros.h HAVE_AVAILABILITY_MACROS_H ) +CHECK_INCLUDE_FILE( TargetConditionals.h HAVE_TARGET_CONDITIONALS_H ) +CHECK_INCLUDE_FILE( libkern/OSAtomic.h HAVE_LIBKERN_OSATOMIC_H ) + +# FUNCTIONS +CHECK_FUNCTION_EXISTS( sysconf HAVE_SYSCONF ) +CHECK_SYMBOL_EXISTS( OSAtomicCompareAndSwapInt libkern/OSAtomic.h HAVE_OSATOMIC_COMPARE_AND_SWAP_INT ) +CHECK_SYMBOL_EXISTS( OSAtomicCompareAndSwapLong libkern/OSAtomic.h HAVE_OSATOMIC_COMPARE_AND_SWAP_LONG ) + +# BUILTIN +CHECK_C_SOURCE_COMPILES( " +volatile int a; +int main(int argc, char *argv[]) { + (void)__sync_bool_compare_and_swap(&a, 1, 2); + return 0; +} +" HAVE_SYNC_BOOL_COMPARE_AND_SWAP_INT ) + +CHECK_C_SOURCE_COMPILES( " +volatile long a; +int main(int argc, char *argv[]) { + (void)__sync_bool_compare_and_swap(&a, 1, 2); + return 0; +} +" HAVE_SYNC_BOOL_COMPARE_AND_SWAP_LONG ) diff --git a/cmake/Modules/DefineCompilerFlags.cmake b/cmake/Modules/DefineCompilerFlags.cmake new file mode 100644 index 000000000000..9e262b94bc4b --- /dev/null +++ b/cmake/Modules/DefineCompilerFlags.cmake @@ -0,0 +1,6 @@ +# Define compiler flags + +if( CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX ) + #ADD_DEFINITIONS( -Wall -W -Werror -pedantic ) + ADD_DEFINITIONS( -std=c99 -Wall -Wextra -W -pedantic -Wno-unused-parameter ) +endif( CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX ) diff --git a/cmake/Modules/MacroAddCheckTest.cmake b/cmake/Modules/MacroAddCheckTest.cmake new file mode 100644 index 000000000000..a13912188716 --- /dev/null +++ b/cmake/Modules/MacroAddCheckTest.cmake @@ -0,0 +1,12 @@ +# - macro_add_check_test(test_name test_source linklib1 ... linklibN) + +ENABLE_TESTING() +include(CTest) +set(CMAKE_C_FLAGS_PROFILING "-g -pg") + +macro (MACRO_ADD_CHECK_TEST _testName _testSource) + add_executable(${_testName} ${_testSource}) + target_link_libraries(${_testName} ${ARGN}) + get_target_property(_targetLocation ${_testName} LOCATION) + add_test(${_testName} ${_targetLocation}) +endmacro (MACRO_ADD_CHECK_TEST) diff --git a/cmake/Modules/MacroEnsureOutOfSourceBuild.cmake b/cmake/Modules/MacroEnsureOutOfSourceBuild.cmake new file mode 100644 index 000000000000..a0669365bf99 --- /dev/null +++ b/cmake/Modules/MacroEnsureOutOfSourceBuild.cmake @@ -0,0 +1,18 @@ +# MACRO_ENSURE_OUT_OF_SOURCE_BUILD(<errorMessage>) + +macro( MACRO_ENSURE_OUT_OF_SOURCE_BUILD _errorMessage ) + +string( COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}" _insource ) +if( _insource ) + message( SEND_ERROR "${_errorMessage}" ) + message( FATAL_ERROR + "In-source builds are not allowed. + CMake would overwrite the makefiles distributed with Compiler-RT. + Please create a directory and run cmake from there, passing the path + to this source directory as the last argument. + This process created the file `CMakeCache.txt' and the directory `CMakeFiles'. + Please delete them." + ) +endif( _insource ) + +endmacro( MACRO_ENSURE_OUT_OF_SOURCE_BUILD ) diff --git a/cmake/config.h.cmake b/cmake/config.h.cmake new file mode 100644 index 000000000000..307e277872ac --- /dev/null +++ b/cmake/config.h.cmake @@ -0,0 +1,12 @@ +#cmakedefine HAVE_SYS_BYTEORDER_H ${HAVE_SYS_BYTEORDER} +#cmakedefine HAVE_AVAILABILITY_MACROS_H ${HAVE_AVAILABILITY_MACROS_H} +#cmakedefine HAVE_TARGET_CONDITIONALS_H ${HAVE_TARGET_CONDITIONALS_H} +#cmakedefine HAVE_LIBKERN_OSATOMIC_H ${HAVE_LIBKERN_OSATOMIC_H} + +#cmakedefine HAVE_SYSCONF ${HAVE_SYSCONF} + +#cmakedefine HAVE_OSATOMIC_COMPARE_AND_SWAP_INT ${HAVE_OSATOMIC_COMPARE_AND_SWAP_INT} +#cmakedefine HAVE_OSATOMIC_COMPARE_AND_SWAP_LONG ${HAVE_OSATOMIC_COMPARE_AND_SWAP_LONG} + +#cmakedefine HAVE_SYNC_BOOL_COMPARE_AND_SWAP_INT ${HAVE_SYNC_BOOL_COMPARE_AND_SWAP_INT} +#cmakedefine HAVE_SYNC_BOOL_COMPARE_AND_SWAP_LONG ${HAVE_SYNC_BOOL_COMPARE_AND_SWAP_LONG} |