mips: implement MB and WMB
[platform/upstream/openblas.git] / cmake / os.cmake
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
6 if (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
7   set(ENV{MACOSX_DEPLOYMENT_TARGET} "10.2") # TODO: should be exported as an env var
8   set(MD5SUM "md5 -r")
9 endif ()
10
11 if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
12   set(MD5SUM "md5 -r")
13 endif ()
14
15 if (${CMAKE_SYSTEM_NAME} STREQUAL "NetBSD")
16   set(MD5SUM "md5 -n")
17 endif ()
18
19 if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
20   set(EXTRALIB "${EXTRALIB} -lm")
21   set(NO_EXPRECISION 1)
22 endif ()
23
24 if (${CMAKE_SYSTEM_NAME} STREQUAL "AIX")
25   set(EXTRALIB "${EXTRALIB} -lm")
26 endif ()
27
28 # TODO: this is probably meant for mingw, not other windows compilers
29 if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
30
31   set(NEED_PIC 0)
32   set(NO_EXPRECISION 1)
33
34   set(EXTRALIB "${EXTRALIB} -defaultlib:advapi32")
35
36   # probably not going to use these
37   set(SUFFIX "obj")
38   set(PSUFFIX "pobj")
39   set(LIBSUFFIX "a")
40
41   if (${CMAKE_C_COMPILER_ID} STREQUAL "Clang")
42     set(CCOMMON_OPT     "${CCOMMON_OPT} -DMS_ABI")
43   endif ()
44
45   if (${CMAKE_C_COMPILER_ID} STREQUAL "GNU")
46
47     # Test for supporting MS_ABI
48     # removed string parsing in favor of CMake's version comparison -hpa
49     execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)
50     if (${GCC_VERSION} VERSION_GREATER 4.7 OR ${GCC_VERSION} VERSION_EQUAL 4.7)
51       # GCC Version >=4.7
52       # It is compatible with MSVC ABI.
53       set(CCOMMON_OPT "${CCOMMON_OPT} -DMS_ABI")
54     endif ()
55   endif ()
56
57   # Ensure the correct stack alignment on Win32
58   # http://permalink.gmane.org/gmane.comp.lib.openblas.general/97
59   if (${ARCH} STREQUAL "x86")
60     if (NOT MSVC AND NOT ${CMAKE_C_COMPILER_ID} STREQUAL "Clang")
61       set(CCOMMON_OPT "${CCOMMON_OPT} -mincoming-stack-boundary=2")
62     endif ()
63     set(FCOMMON_OPT "${FCOMMON_OPT} -mincoming-stack-boundary=2")
64   endif ()
65   
66 endif ()
67
68 if (${CMAKE_SYSTEM_NAME} STREQUAL "Interix")
69   set(NEED_PIC 0)
70   set(NO_EXPRECISION 1)
71   
72   set(INTERIX_TOOL_DIR STREQUAL "/opt/gcc.3.3/i586-pc-interix3/bin")
73 endif ()
74
75 if (CYGWIN)
76   set(NEED_PIC 0)
77   set(NO_EXPRECISION 1)
78 endif ()
79
80 if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows" AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Interix")
81   if (SMP)
82     set(EXTRALIB "${EXTRALIB} -lpthread")
83   endif ()
84 endif ()
85
86 if (QUAD_PRECISION)
87   set(CCOMMON_OPT "${CCOMMON_OPT} -DQUAD_PRECISION")
88   set(NO_EXPRECISION 1)
89 endif ()
90
91 if (${ARCH} STREQUAL "x86")
92   set(NO_EXPRECISION 1)
93 endif ()
94
95 if (UTEST_CHECK)
96   set(CCOMMON_OPT "${CCOMMON_OPT} -DUTEST_CHECK")
97   set(SANITY_CHECK 1)
98 endif ()
99
100 if (SANITY_CHECK)
101   # TODO: need some way to get $(*F) (target filename)
102   set(CCOMMON_OPT "${CCOMMON_OPT} -DSANITY_CHECK -DREFNAME=$(*F)f${BU}")
103 endif ()
104