Ported OS settings from Makefile.system into new cmake file.
authorHank Anderson <hank.p.anderson@gmail.com>
Tue, 3 Feb 2015 17:07:58 +0000 (11:07 -0600)
committerHank Anderson <hank.p.anderson@gmail.com>
Tue, 3 Feb 2015 17:07:58 +0000 (11:07 -0600)
cmake/os.cmake [new file with mode: 0644]
cmake/system.cmake

diff --git a/cmake/os.cmake b/cmake/os.cmake
new file mode 100644 (file)
index 0000000..d897a25
--- /dev/null
@@ -0,0 +1,104 @@
+##\r
+## Author: Hank Anderson <hank@statease.com>\r
+## Created: 12/29/14\r
+## Last Modified: 12/29/14\r
+## Description: Ported from portion of OpenBLAS/Makefile.system\r
+##              Detects the OS and sets appropriate variables.\r
+\r
+if (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")\r
+  set(ENV{MACOSX_DEPLOYMENT_TARGET} "10.2") # TODO: should be exported as an env var\r
+  set(MD5SUM "md5 -r")\r
+endif ()\r
+\r
+if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")\r
+  set(MD5SUM "md5 -r")\r
+endif ()\r
+\r
+if (${CMAKE_SYSTEM_NAME} STREQUAL "NetBSD")\r
+  set(MD5SUM "md5 -n")\r
+endif ()\r
+\r
+if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")\r
+  set(EXTRALIB "${EXTRALIB} -lm")\r
+  set(NO_EXPRECISION 1)\r
+endif ()\r
+\r
+if (${CMAKE_SYSTEM_NAME} STREQUAL "AIX")\r
+  set(EXTRALIB "${EXTRALIB} -lm")\r
+endif ()\r
+\r
+# TODO: this is probably meant for mingw, not other windows compilers\r
+if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")\r
+\r
+  set(NEED_PIC 0)\r
+  set(NO_EXPRECISION 1)\r
+\r
+  set(EXTRALIB "${EXTRALIB} -defaultlib:advapi32")\r
+\r
+  # probably not going to use these\r
+  set(SUFFIX "obj")\r
+  set(PSUFFIX "pobj")\r
+  set(LIBSUFFIX "a")\r
+\r
+  if (${CMAKE_C_COMPILER_ID} STREQUAL "Clang")\r
+    set(CCOMMON_OPT    "${CCOMMON_OPT} -DMS_ABI")\r
+  endif ()\r
+\r
+  if (${CMAKE_C_COMPILER_ID} STREQUAL "GNU")\r
+\r
+    # Test for supporting MS_ABI\r
+    # removed string parsing in favor of CMake's version comparison -hpa\r
+    execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)\r
+    if (${GCC_VERSION} VERSION_GREATER 4.7 OR ${GCC_VERSION} VERSION_EQUAL 4.7)\r
+      # GCC Version >=4.7\r
+      # It is compatible with MSVC ABI.\r
+      set(CCOMMON_OPT "${CCOMMON_OPT} -DMS_ABI")\r
+    endif ()\r
+  endif ()\r
+\r
+  # Ensure the correct stack alignment on Win32\r
+  # http://permalink.gmane.org/gmane.comp.lib.openblas.general/97\r
+  if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86")\r
+    set(CCOMMON_OPT "${CCOMMON_OPT} -mincoming-stack-boundary=2")\r
+    set(FCOMMON_OPT "${FCOMMON_OPT} -mincoming-stack-boundary=2")\r
+  endif ()\r
+  \r
+endif ()\r
+\r
+if (${CMAKE_SYSTEM_NAME} STREQUAL "Interix")\r
+  set(NEED_PIC 0)\r
+  set(NO_EXPRECISION 1)\r
+  \r
+  set(INTERIX_TOOL_DIR STREQUAL "/opt/gcc.3.3/i586-pc-interix3/bin")\r
+endif ()\r
+\r
+if (CYGWIN)\r
+  set(NEED_PIC 0)\r
+  set(NO_EXPRECISION 1)\r
+endif\r
+\r
+if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows" AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Interix")\r
+  if (SMP)\r
+    set(EXTRALIB "${EXTRALIB} -lpthread")\r
+  endif ()\r
+endif ()\r
+\r
+if (QUAD_PRECISION)\r
+  set(CCOMMON_OPT "${CCOMMON_OPT} -DQUAD_PRECISION")\r
+  set(NO_EXPRECISION 1)\r
+endif ()\r
+\r
+if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86")\r
+  set(NO_EXPRECISION 1)\r
+endif ()\r
+\r
+if (UTEST_CHECK)\r
+  set(CCOMMON_OPT "${CCOMMON_OPT} -DUTEST_CHECK")\r
+  set(SANITY_CHECK 1)\r
+endif ()\r
+\r
+if (SANITY_CHECK)\r
+  # TODO: need some way to get $(*F) (target filename)\r
+  set(CCOMMON_OPT "${CCOMMON_OPT} -DSANITY_CHECK -DREFNAME=$(*F)f${BU}")\r
+endif\r
+\r
index 0753ed0..1d9c461 100644 (file)
@@ -128,5 +128,9 @@ set(DLLWRAP "$(CROSS_SUFFIX)dllwrap")
 set(OBJCOPY "$(CROSS_SUFFIX)objcopy")
 set(OBJCONV "$(CROSS_SUFFIX)objconv")
 
-# TODO: convert rest of Makefile.system, left off at "OS dependent settings"
+
+#
+#  OS dependent settings
+#
+include("${CMAKE_SOURCE_DIR}/cmake/os.cmake")