summaryrefslogtreecommitdiffstats
path: root/cmake/SisoLibDir.cmake
diff options
context:
space:
mode:
authorMatthias Vogelgesang <matthias.vogelgesang@ipe.fzk.de>2011-02-21 15:06:42 +0100
committerMatthias Vogelgesang <matthias.vogelgesang@ipe.fzk.de>2011-02-21 15:06:42 +0100
commit28619821bc90ed4c15844b2e6b6a5a2971ef5f2e (patch)
treec313b5b77087c18027d152c4c69c49b8ea0254d9 /cmake/SisoLibDir.cmake
downloaduca-28619821bc90ed4c15844b2e6b6a5a2971ef5f2e.tar.gz
uca-28619821bc90ed4c15844b2e6b6a5a2971ef5f2e.tar.bz2
uca-28619821bc90ed4c15844b2e6b6a5a2971ef5f2e.tar.xz
uca-28619821bc90ed4c15844b2e6b6a5a2971ef5f2e.zip
Initial commit
Diffstat (limited to 'cmake/SisoLibDir.cmake')
-rw-r--r--cmake/SisoLibDir.cmake108
1 files changed, 108 insertions, 0 deletions
diff --git a/cmake/SisoLibDir.cmake b/cmake/SisoLibDir.cmake
new file mode 100644
index 0000000..371735e
--- /dev/null
+++ b/cmake/SisoLibDir.cmake
@@ -0,0 +1,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)