aboutsummaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake')
-rw-r--r--cmake/ConfigureChecks.cmake38
-rw-r--r--cmake/Modules/DefineCompilerFlags.cmake6
-rw-r--r--cmake/Modules/MacroAddCheckTest.cmake12
-rw-r--r--cmake/Modules/MacroEnsureOutOfSourceBuild.cmake18
-rw-r--r--cmake/config.h.cmake12
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}