From 08bd7dedc1cbabdd1b82898ee584bae71747a87c Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Wed, 10 Mar 2010 17:23:58 +0000 Subject: [PATCH] From David Fries,"This improves the out of box detection of the 3rd party libraries for Windows. If the 3rdparty directory isn't available it will use the directory names subversion uses such as 3rdParty_win32binaries_vs71 3rdParty_win32binaries_vs80sp1 3rdParty_win32binaries_vs90sp1. That helps when as we are building both vs71 and vs80, and probably vs90 in the future at the same time in addition to not having to rename the directory once it is downloaded. It also adds the _i suffix to match some of the libraries. " --- CMakeModules/Find3rdPartyDependencies.cmake | 46 ++++++++++++++------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/CMakeModules/Find3rdPartyDependencies.cmake b/CMakeModules/Find3rdPartyDependencies.cmake index 882134a42..5557b4b2c 100644 --- a/CMakeModules/Find3rdPartyDependencies.cmake +++ b/CMakeModules/Find3rdPartyDependencies.cmake @@ -3,9 +3,9 @@ # all the paramenter are required, in case of lists, use "" in calling ################################################################################################ -MACRO(FIND_DEPENDENCY DEPNAME INCLUDEFILE LIBRARY_NAMES SEARCHPATHLIST DEBUGSUFFIX) +MACRO(FIND_DEPENDENCY DEPNAME INCLUDEFILE LIBRARY_NAMES_BASE SEARCHPATHLIST DEBUGSUFFIX EXSUFFIX) - MESSAGE(STATUS "searching ${DEPNAME} -->${INCLUDEFILE}<-->${LIBRARY_NAMES}<-->${SEARCHPATHLIST}<--") + MESSAGE(STATUS "searching ${DEPNAME} -->${INCLUDEFILE}<-->${LIBRARY_NAMES_BASE}<-->${SEARCHPATHLIST}<--") SET(MY_PATH_INCLUDE ) SET(MY_PATH_LIB ) @@ -22,14 +22,18 @@ MACRO(FIND_DEPENDENCY DEPNAME INCLUDEFILE LIBRARY_NAMES SEARCHPATHLIST DEBUGSUFF MARK_AS_ADVANCED("${DEPNAME}_INCLUDE_DIR") #MESSAGE( " ${DEPNAME}_INCLUDE_DIR --> ${${DEPNAME}_INCLUDE_DIR}<--") - FIND_LIBRARY("${DEPNAME}_LIBRARY" + SET(LIBRARY_NAMES "") + FOREACH(LIBNAME ${LIBRARY_NAMES_BASE}) + LIST(APPEND LIBRARY_NAMES "${LIBNAME}${EXSUFFIX}") + ENDFOREACH(LIBNAME) + FIND_LIBRARY("${DEPNAME}_LIBRARY" NAMES ${LIBRARY_NAMES} PATHS ${MY_PATH_LIB} NO_DEFAULT_PATH ) SET(LIBRARY_NAMES_DEBUG "") - FOREACH(LIBNAME ${LIBRARY_NAMES}) - LIST(APPEND LIBRARY_NAMES_DEBUG "${LIBNAME}${DEBUGSUFFIX}") + FOREACH(LIBNAME ${LIBRARY_NAMES_BASE}) + LIST(APPEND LIBRARY_NAMES_DEBUG "${LIBNAME}${DEBUGSUFFIX}${EXSUFFIX}") ENDFOREACH(LIBNAME) FIND_LIBRARY("${DEPNAME}_LIBRARY_DEBUG" NAMES ${LIBRARY_NAMES_DEBUG} @@ -46,7 +50,7 @@ MACRO(FIND_DEPENDENCY DEPNAME INCLUDEFILE LIBRARY_NAMES SEARCHPATHLIST DEBUGSUFF SET(${DEPNAME}_LIBRARY_DEBUG "${${DEPNAME}_LIBRARY}") ENDIF(NOT ${DEPNAME}_LIBRARY_DEBUG) ENDIF(${DEPNAME}_INCLUDE_DIR AND ${DEPNAME}_LIBRARY) -ENDMACRO(FIND_DEPENDENCY DEPNAME INCLUDEFILE LIBRARY_NAMES SEARCHPATHLIST DEBUGSUFFIX) +ENDMACRO(FIND_DEPENDENCY DEPNAME INCLUDEFILE LIBRARY_NAMES_BASE SEARCHPATHLIST DEBUGSUFFIX) ################################################################################################ @@ -54,8 +58,8 @@ ENDMACRO(FIND_DEPENDENCY DEPNAME INCLUDEFILE LIBRARY_NAMES SEARCHPATHLIST DEBUGS ################################################################################################ MACRO(SEARCH_3RDPARTY OSG_3RDPARTY_BIN) - FIND_DEPENDENCY(TIFF tiff.h libtiff ${OSG_3RDPARTY_BIN} "D") - FIND_DEPENDENCY(FREETYPE ft2build.h "freetype;freetype234;freetype234MT;freetype235;freetype237" ${OSG_3RDPARTY_BIN} "_D") + FIND_DEPENDENCY(TIFF tiff.h libtiff ${OSG_3RDPARTY_BIN} "D" "_i") + FIND_DEPENDENCY(FREETYPE ft2build.h "freetype;freetype234;freetype234MT;freetype235;freetype237;freetype238" ${OSG_3RDPARTY_BIN} "d" "") IF(FREETYPE_FOUND) #forcing subsequent FindFreeType stuff to not search for other variables.... kind of a hack SET(FREETYPE_INCLUDE_DIR_ft2build ${FREETYPE_INCLUDE_DIR} CACHE PATH "" FORCE) @@ -63,19 +67,19 @@ MACRO(SEARCH_3RDPARTY OSG_3RDPARTY_BIN) MARK_AS_ADVANCED(FREETYPE_INCLUDE_DIR_ft2build FREETYPE_INCLUDE_DIR_freetype2) SET(FREETYPE_INCLUDE_DIRS "${FREETYPE_INCLUDE_DIR_ft2build};${FREETYPE_INCLUDE_DIR_freetype2}") ENDIF(FREETYPE_FOUND) - FIND_DEPENDENCY(CURL curl/curl.h "libcurl;curllib" ${OSG_3RDPARTY_BIN} "D") - FIND_DEPENDENCY(JPEG jpeglib.h libjpeg ${OSG_3RDPARTY_BIN} "D") - #FIND_DEPENDENCY(GDAL gdal.h "gdal;gdal_i" ${OSG_3RDPARTY_BIN}) - FIND_DEPENDENCY(GLUT GL/glut.h glut32 ${OSG_3RDPARTY_BIN} "D") + FIND_DEPENDENCY(CURL curl/curl.h "libcurl;curllib" ${OSG_3RDPARTY_BIN} "D" "") + FIND_DEPENDENCY(JPEG jpeglib.h libjpeg ${OSG_3RDPARTY_BIN} "D" "") + FIND_DEPENDENCY(GDAL gdal.h "gdal;gdal16" ${OSG_3RDPARTY_BIN} "d" "_i") + FIND_DEPENDENCY(GLUT GL/glut.h glut32 ${OSG_3RDPARTY_BIN} "D" "") IF(GLUT_FOUND) #forcing subsequent FindGlut stuff to not search for other variables.... kind of a hack SET(GLUT_glut_LIBRARY ${GLUT_LIBRARY} CACHE FILEPATH "") MARK_AS_ADVANCED(GLUT_glut_LIBRARY) ENDIF(GLUT_FOUND) - FIND_DEPENDENCY(GIFLIB gif_lib.h "ungif;libungif" ${OSG_3RDPARTY_BIN} "D") - FIND_DEPENDENCY(ZLIB zlib.h "z;zlib;zlib1" ${OSG_3RDPARTY_BIN} "D") + FIND_DEPENDENCY(GIFLIB gif_lib.h "ungif;libungif" ${OSG_3RDPARTY_BIN} "D" "") + FIND_DEPENDENCY(ZLIB zlib.h "z;zlib;zlib1" ${OSG_3RDPARTY_BIN} "D" "") IF(ZLIB_FOUND) - FIND_DEPENDENCY(PNG png.h "libpng;libpng13" ${OSG_3RDPARTY_BIN} "D") + FIND_DEPENDENCY(PNG png.h "libpng;libpng13" ${OSG_3RDPARTY_BIN} "D" "") IF(PNG_FOUND) #forcing subsequent FindPNG stuff to not search for other variables.... kind of a hack SET(PNG_PNG_INCLUDE_DIR ${PNG_INCLUDE_DIR} CACHE FILEPATH "") @@ -95,7 +99,17 @@ ENDMACRO(SEARCH_3RDPARTY OSG_3RDPARTY_BIN) OPTION(USE_3DPARTY_BIN "Set to ON to use Mike prebuilt dependencies situated side of OpenSceneGraph source. Use OFF for avoiding." ON) IF(USE_3DPARTY_BIN) GET_FILENAME_COMPONENT(PARENT_DIR ${PROJECT_SOURCE_DIR} PATH) - SET(ACTUAL_3DPARTY_DIR "${PARENT_DIR}/3rdparty" CACHE PATH "Location of 3rdparty dependencies") + SET(TEST_3DPARTY_DIR "${PARENT_DIR}/3rdparty") + IF(NOT EXISTS ${TEST_3DPARTY_DIR}) + IF(MSVC71) + SET(TEST_3DPARTY_DIR "${PARENT_DIR}/3rdParty_win32binaries_vs71") + ELSEIF(MSVC80) + SET(TEST_3DPARTY_DIR "${PARENT_DIR}/3rdParty_win32binaries_vs80sp1") + ELSEIF(MSVC90) + SET(TEST_3DPARTY_DIR "${PARENT_DIR}/3rdParty_win32binaries_vs90sp1") + ENDIF() + ENDIF(NOT EXISTS ${TEST_3DPARTY_DIR}) + SET(ACTUAL_3DPARTY_DIR "${TEST_3DPARTY_DIR}" CACHE PATH "Location of 3rdparty dependencies") IF(EXISTS ${ACTUAL_3DPARTY_DIR}) SEARCH_3RDPARTY(${ACTUAL_3DPARTY_DIR}) ENDIF(EXISTS ${ACTUAL_3DPARTY_DIR})