You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

os.cmake 2.8 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. ##
  2. ## Author: Hank Anderson <hank@statease.com>
  3. ## Description: Ported from portion of OpenBLAS/Makefile.system
  4. ## Detects the OS and sets appropriate variables.
  5. if (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
  6. set(ENV{MACOSX_DEPLOYMENT_TARGET} "10.2") # TODO: should be exported as an env var
  7. set(MD5SUM "md5 -r")
  8. endif ()
  9. if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
  10. set(MD5SUM "md5 -r")
  11. endif ()
  12. if (${CMAKE_SYSTEM_NAME} STREQUAL "NetBSD")
  13. set(MD5SUM "md5 -n")
  14. endif ()
  15. if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
  16. set(EXTRALIB "${EXTRALIB} -lm")
  17. set(NO_EXPRECISION 1)
  18. endif ()
  19. if (${CMAKE_SYSTEM_NAME} STREQUAL "AIX")
  20. set(EXTRALIB "${EXTRALIB} -lm")
  21. endif ()
  22. # TODO: this is probably meant for mingw, not other windows compilers
  23. if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
  24. set(NEED_PIC 0)
  25. set(NO_EXPRECISION 1)
  26. set(EXTRALIB "${EXTRALIB} -defaultlib:advapi32")
  27. # probably not going to use these
  28. set(SUFFIX "obj")
  29. set(PSUFFIX "pobj")
  30. set(LIBSUFFIX "a")
  31. if (${CMAKE_C_COMPILER_ID} STREQUAL "Clang")
  32. set(CCOMMON_OPT "${CCOMMON_OPT} -DMS_ABI")
  33. endif ()
  34. if (${CMAKE_C_COMPILER_ID} STREQUAL "GNU")
  35. # Test for supporting MS_ABI
  36. # removed string parsing in favor of CMake's version comparison -hpa
  37. execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)
  38. if (${GCC_VERSION} VERSION_GREATER 4.7 OR ${GCC_VERSION} VERSION_EQUAL 4.7)
  39. # GCC Version >=4.7
  40. # It is compatible with MSVC ABI.
  41. set(CCOMMON_OPT "${CCOMMON_OPT} -DMS_ABI")
  42. endif ()
  43. endif ()
  44. # Ensure the correct stack alignment on Win32
  45. # http://permalink.gmane.org/gmane.comp.lib.openblas.general/97
  46. if (${ARCH} STREQUAL "x86")
  47. if (NOT MSVC AND NOT ${CMAKE_C_COMPILER_ID} STREQUAL "Clang")
  48. set(CCOMMON_OPT "${CCOMMON_OPT} -mincoming-stack-boundary=2")
  49. endif ()
  50. set(FCOMMON_OPT "${FCOMMON_OPT} -mincoming-stack-boundary=2")
  51. endif ()
  52. endif ()
  53. if (${CMAKE_SYSTEM_NAME} STREQUAL "Interix")
  54. set(NEED_PIC 0)
  55. set(NO_EXPRECISION 1)
  56. set(INTERIX_TOOL_DIR STREQUAL "/opt/gcc.3.3/i586-pc-interix3/bin")
  57. endif ()
  58. if (CYGWIN)
  59. set(NEED_PIC 0)
  60. set(NO_EXPRECISION 1)
  61. endif ()
  62. if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows" AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Interix")
  63. if (SMP)
  64. set(EXTRALIB "${EXTRALIB} -lpthread")
  65. endif ()
  66. endif ()
  67. if (QUAD_PRECISION)
  68. set(CCOMMON_OPT "${CCOMMON_OPT} -DQUAD_PRECISION")
  69. set(NO_EXPRECISION 1)
  70. endif ()
  71. if (${ARCH} STREQUAL "x86")
  72. set(NO_EXPRECISION 1)
  73. endif ()
  74. if (UTEST_CHECK)
  75. set(CCOMMON_OPT "${CCOMMON_OPT} -DUTEST_CHECK")
  76. set(SANITY_CHECK 1)
  77. endif ()
  78. if (SANITY_CHECK)
  79. # TODO: need some way to get $(*F) (target filename)
  80. set(CCOMMON_OPT "${CCOMMON_OPT} -DSANITY_CHECK -DREFNAME=$(*F)f${BU}")
  81. endif ()