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.5 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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 "Linux")
  6. set(EXTRALIB "${EXTRALIB} -lm")
  7. set(NO_EXPRECISION 1)
  8. endif ()
  9. if (${CMAKE_SYSTEM_NAME} STREQUAL "AIX")
  10. set(EXTRALIB "${EXTRALIB} -lm")
  11. endif ()
  12. # TODO: this is probably meant for mingw, not other windows compilers
  13. if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
  14. set(NEED_PIC 0)
  15. set(NO_EXPRECISION 1)
  16. set(EXTRALIB "${EXTRALIB} -defaultlib:advapi32")
  17. # probably not going to use these
  18. set(SUFFIX "obj")
  19. set(PSUFFIX "pobj")
  20. set(LIBSUFFIX "a")
  21. if (${CMAKE_C_COMPILER_ID} STREQUAL "Clang")
  22. set(CCOMMON_OPT "${CCOMMON_OPT} -DMS_ABI")
  23. endif ()
  24. if (${CMAKE_C_COMPILER_ID} STREQUAL "GNU")
  25. # Test for supporting MS_ABI
  26. # removed string parsing in favor of CMake's version comparison -hpa
  27. execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)
  28. if (${GCC_VERSION} VERSION_GREATER 4.7 OR ${GCC_VERSION} VERSION_EQUAL 4.7)
  29. # GCC Version >=4.7
  30. # It is compatible with MSVC ABI.
  31. set(CCOMMON_OPT "${CCOMMON_OPT} -DMS_ABI")
  32. endif ()
  33. endif ()
  34. # Ensure the correct stack alignment on Win32
  35. # http://permalink.gmane.org/gmane.comp.lib.openblas.general/97
  36. if (X86)
  37. if (NOT MSVC AND NOT ${CMAKE_C_COMPILER_ID} STREQUAL "Clang")
  38. set(CCOMMON_OPT "${CCOMMON_OPT} -mincoming-stack-boundary=2")
  39. endif ()
  40. set(FCOMMON_OPT "${FCOMMON_OPT} -mincoming-stack-boundary=2")
  41. endif ()
  42. endif ()
  43. if (${CMAKE_SYSTEM_NAME} STREQUAL "Interix")
  44. set(NEED_PIC 0)
  45. set(NO_EXPRECISION 1)
  46. set(INTERIX_TOOL_DIR STREQUAL "/opt/gcc.3.3/i586-pc-interix3/bin")
  47. endif ()
  48. if (CYGWIN)
  49. set(NEED_PIC 0)
  50. set(NO_EXPRECISION 1)
  51. endif ()
  52. if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows" AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Interix" AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Android")
  53. if (USE_THREAD)
  54. set(EXTRALIB "${EXTRALIB} -lpthread")
  55. endif ()
  56. endif ()
  57. if (QUAD_PRECISION)
  58. set(CCOMMON_OPT "${CCOMMON_OPT} -DQUAD_PRECISION")
  59. set(NO_EXPRECISION 1)
  60. endif ()
  61. if (X86)
  62. set(NO_EXPRECISION 1)
  63. endif ()
  64. if (UTEST_CHECK)
  65. set(CCOMMON_OPT "${CCOMMON_OPT} -DUTEST_CHECK")
  66. set(SANITY_CHECK 1)
  67. endif ()
  68. if (SANITY_CHECK)
  69. # TODO: need some way to get $(*F) (target filename)
  70. set(CCOMMON_OPT "${CCOMMON_OPT} -DSANITY_CHECK -DREFNAME=$(*F)f${BU}")
  71. endif ()