summaryrefslogtreecommitdiffhomepage
path: root/cmake/modules
diff options
context:
space:
mode:
authorJon <[email protected]>2012-05-02 20:46:09 -0400
committerJon <[email protected]>2012-05-22 10:50:28 -0400
commit9f89da6eef2c830db6fc3abb08fe755ae7ce9b6c (patch)
treed1feb367d93853b5f05ce2bbed2171a561631b31 /cmake/modules
parentb5dcb7128d7d235b66b4d9be879d26364dd1e3e9 (diff)
downloadmruby-9f89da6eef2c830db6fc3abb08fe755ae7ce9b6c.tar.gz
mruby-9f89da6eef2c830db6fc3abb08fe755ae7ce9b6c.zip
Add native and cross compiling CMake build support
Diffstat (limited to 'cmake/modules')
-rw-r--r--cmake/modules/IntrospectSystem.cmake52
1 files changed, 52 insertions, 0 deletions
diff --git a/cmake/modules/IntrospectSystem.cmake b/cmake/modules/IntrospectSystem.cmake
new file mode 100644
index 000000000..e148563fa
--- /dev/null
+++ b/cmake/modules/IntrospectSystem.cmake
@@ -0,0 +1,52 @@
+# system capabilities checking
+
+# initial system defaults
+if(CMAKE_COMPILER_IS_GNUCC)
+ set(MRUBY_DEFAULT_CFLAGS "-Wall -Werror-implicit-function-declaration")
+ set(CMAKE_C_FLAGS "${MRUBY_DEFAULT_CFLAGS}")
+ set(CMAKE_C_FLAGS_DEBUG "-O3 -ggdb")
+ set(CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG")
+ set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 -g")
+ set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG")
+
+ set(MRUBY_LIBS m)
+else()
+ if(MSVC)
+ # TODO default MSVC flags
+ add_definitions(
+ -D_CRT_SECURE_NO_WARNINGS
+ -wd4018 # suppress 'signed/unsigned mismatch'
+ )
+ endif()
+endif()
+
+if(MSVC)
+ add_definitions(
+ -DRUBY_EXPORT # required by oniguruma.h
+ )
+endif()
+
+
+# include helpers
+include(CheckIncludeFile)
+include(CheckSymbolExists)
+
+# header checks
+CHECK_INCLUDE_FILE(string.h HAVE_STRING_H)
+if(HAVE_STRING_H)
+ add_definitions(-DHAVE_STRING_H)
+endif()
+
+CHECK_INCLUDE_FILE(float.h HAVE_FLOAT_H)
+if(HAVE_FLOAT_H)
+ add_definitions(-DHAVE_FLOAT_H)
+endif()
+
+
+# symbol checks
+CHECK_SYMBOL_EXISTS(gettimeofday sys/time.h HAVE_GETTIMEOFDAY)
+if(NOT HAVE_GETTIMEOFDAY)
+ add_definitions(-DNO_GETTIMEOFDAY)
+endif()
+
+# vim: ts=2 sts=2 sw=2 et