blob: 371735e859eea2373f2272e20677ab049c1bf449 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
# This makro sets up additional library directories depending on the compiler.
# The reason behind this are the binary incompatible libraries generated by
# different compilers on Windows (e.g. Microsoft Visual Studio vs. Borland).
#
# Although newer versions of MSVC can operate with older libraries there may
# be libs compiled for a more recent version as MSVC6. Scan through all the
# possible directories for the matching lib.
#
# This makro expects the /lib directory (usually $ENV{SISODIRsomething}) as
# argument BASEDIR and will append a list of all valid library paths to
# variable LIB_DIRS. This may or may not include BASE_DIR depending on the
# platform. If BASEDIR is empty or is just "/lib" nothing will happen to
# LIB_DIRS.
#
# An optional variable name may be passed as third argument. If that argument
# is given the best matching suffix will be stored in that variable (e.g.
# "visualc2008" if you are using MSVC9). This will even work if LIB_DIRS would
# not be touched.
MACRO (SISO_LIB_DIR BASE_DIR LIB_DIRS)
IF (WIN32)
IF (CMAKE_GENERATOR STREQUAL "Borland Makefiles")
IF ("${BASE_DIR}" AND NOT "${BASE_DIR}" STREQUAL "/lib")
LIST(APPEND ${LIB_DIRS} "borland")
ENDIF ("${BASE_DIR}" AND NOT "${BASE_DIR}" STREQUAL "/lib")
IF (${ARGC} EQUAL 3)
set(${ARGV2} "borland")
ENDIF (${ARGC} EQUAL 3)
ELSE (CMAKE_GENERATOR STREQUAL "Borland Makefiles")
# assume MSVC
SET(TMP_MSVC 0)
SET(TMP_MSVC_64 0)
IF (CMAKE_GENERATOR STREQUAL "Visual Studio 6")
SET(TMP_MSVC 6)
SET(TMP_MSVC_64 0)
ELSEIF (CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005")
SET(TMP_MSVC 8)
SET(TMP_MSVC_64 0)
ELSEIF (CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005 Win64")
SET(TMP_MSVC 8)
SET(TMP_MSVC_64 1)
ELSEIF (CMAKE_GENERATOR STREQUAL "Visual Studio 9 2008")
SET(TMP_MSVC 9)
SET(TMP_MSVC_64 0)
ELSEIF (CMAKE_GENERATOR STREQUAL "Visual Studio 9 2008 Win64")
SET(TMP_MSVC 9)
SET(TMP_MSVC_64 1)
ELSEIF (CMAKE_GENERATOR STREQUAL "NMake Makefiles" OR CMAKE_GENERATOR STREQUAL "MinGW Makefiles")
SET(TMP_MSVC_64 ${CMAKE_CL_64})
IF (MSVC_VERSION EQUAL 1400)
SET(TMP_MSVC 8)
ELSEIF (MSVC_VERSION GREATER 1599)
SET(TMP_MSVC 10)
ELSEIF (MSVC_VERSION GREATER 1499)
SET(TMP_MSVC 9)
ELSEIF (CMAKE_COMPILER_2005)
SET(TMP_MSVC 8)
ELSE (MSVC_VERSION EQUAL 1400)
SET(TMP_MSVC 6)
ENDIF (MSVC_VERSION EQUAL 1400)
ENDIF (CMAKE_GENERATOR STREQUAL "Visual Studio 6")
SET(TMP_DIRS "")
IF (TMP_MSVC GREATER 9)
LIST(APPEND TMP_DIRS "visualc2010")
ENDIF (TMP_MSVC GREATER 9)
IF (TMP_MSVC GREATER 8)
LIST(APPEND TMP_DIRS "visualc2008")
ENDIF (TMP_MSVC GREATER 8)
IF (TMP_MSVC GREATER 7)
LIST(APPEND TMP_DIRS "visualc2005")
ENDIF (TMP_MSVC GREATER 7)
IF (TMP_MSVC GREATER 5 AND NOT TMP_MSVC_64)
LIST(APPEND TMP_DIRS "visualc")
ENDIF (TMP_MSVC GREATER 5 AND NOT TMP_MSVC_64)
IF (${ARGC} EQUAL 3)
LIST(GET TMP_DIRS 0 TMPSTR)
IF (TMP_MSVC_64)
SET(TMPSTR "${TMPSTR}_amd64")
ENDIF (TMP_MSVC_64)
set(${ARGV2} ${TMPSTR})
ENDIF (${ARGC} EQUAL 3)
IF (NOT BASE_DIR STREQUAL "" AND NOT BASE_DIR STREQUAL "/lib")
FOREACH (TMP_ITEM ${TMP_DIRS})
IF (TMP_MSVC_64)
LIST(APPEND ${LIB_DIRS} "${BASE_DIR}/${TMP_ITEM}_amd64")
ELSE (TMP_MSVC_64)
LIST(APPEND ${LIB_DIRS} "${BASE_DIR}/${TMP_ITEM}")
ENDIF (TMP_MSVC_64)
ENDFOREACH (TMP_ITEM ${TMP_DIRS})
ENDIF (NOT BASE_DIR STREQUAL "" AND NOT BASE_DIR STREQUAL "/lib")
ENDIF (CMAKE_GENERATOR STREQUAL "Borland Makefiles")
ELSE (WIN32)
IF (NOT BASE_DIR STREQUAL "" AND NOT BASE_DIR STREQUAL "/lib")
LIST(APPEND ${LIB_DIRS} ${BASE_DIR})
ENDIF (NOT BASE_DIR STREQUAL "" AND NOT BASE_DIR STREQUAL "/lib")
IF (${ARGC} EQUAL 3)
set(${ARGV2} "")
ENDIF (${ARGC} EQUAL 3)
ENDIF (WIN32)
IF (${LIB_DIRS})
LIST(REMOVE_ITEM ${LIB_DIRS} "/lib")
ENDIF (${LIB_DIRS})
ENDMACRO (SISO_LIB_DIR BASE_DIR LIB_DIRS)
|