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.
--
David Fries <[email protected]>
http://fries.net/~david/ (PGP encryption key available)
diff --git a/CMakeModules/Find3rdPartyDependencies.cmake
b/CMakeModules/Find3rdPartyDependencies.cmake
index 882134a..5557b4b 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})
################################################################################################
# this Macro find a generic dependency, handling debug suffix
# all the paramenter are required, in case of lists, use "" in calling
################################################################################################
MACRO(FIND_DEPENDENCY DEPNAME INCLUDEFILE LIBRARY_NAMES_BASE SEARCHPATHLIST
DEBUGSUFFIX EXSUFFIX)
MESSAGE(STATUS "searching ${DEPNAME}
-->${INCLUDEFILE}<-->${LIBRARY_NAMES_BASE}<-->${SEARCHPATHLIST}<--")
SET(MY_PATH_INCLUDE )
SET(MY_PATH_LIB )
FOREACH( MYPATH ${SEARCHPATHLIST} )
SET(MY_PATH_INCLUDE ${MY_PATH_INCLUDE} ${MYPATH}/include)
SET(MY_PATH_LIB ${MY_PATH_LIB} ${MYPATH}/lib)
ENDFOREACH( MYPATH ${SEARCHPATHLIST} )
FIND_PATH("${DEPNAME}_INCLUDE_DIR" ${INCLUDEFILE}
${MY_PATH_INCLUDE}
NO_DEFAULT_PATH
)
MARK_AS_ADVANCED("${DEPNAME}_INCLUDE_DIR")
#MESSAGE( " ${DEPNAME}_INCLUDE_DIR --> ${${DEPNAME}_INCLUDE_DIR}<--")
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_BASE})
LIST(APPEND LIBRARY_NAMES_DEBUG "${LIBNAME}${DEBUGSUFFIX}${EXSUFFIX}")
ENDFOREACH(LIBNAME)
FIND_LIBRARY("${DEPNAME}_LIBRARY_DEBUG"
NAMES ${LIBRARY_NAMES_DEBUG}
PATHS ${MY_PATH_LIB}
NO_DEFAULT_PATH
)
MARK_AS_ADVANCED("${DEPNAME}_LIBRARY")
#MESSAGE( " ${DEPNAME}_LIBRARY --> ${${DEPNAME}_LIBRARY}<--")
SET( ${DEPNAME}_FOUND "NO" )
IF(${DEPNAME}_INCLUDE_DIR AND ${DEPNAME}_LIBRARY)
SET( ${DEPNAME}_FOUND "YES" )
IF(NOT ${DEPNAME}_LIBRARY_DEBUG)
MESSAGE("-- Warning Debug ${DEPNAME} not found, using:
${${DEPNAME}_LIBRARY}")
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_BASE SEARCHPATHLIST
DEBUGSUFFIX)
################################################################################################
# this Macro is tailored to Mike dependencies
################################################################################################
MACRO(SEARCH_3RDPARTY OSG_3RDPARTY_BIN)
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)
SET(FREETYPE_INCLUDE_DIR_freetype2 ${FREETYPE_INCLUDE_DIR} CACHE
PATH "" FORCE)
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;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" "")
IF(ZLIB_FOUND)
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 "")
MARK_AS_ADVANCED(PNG_PNG_INCLUDE_DIR)
ENDIF(PNG_FOUND)
ENDIF(ZLIB_FOUND)
#luigi#INCLUDE(FindOSGDepends.cmake)
ENDMACRO(SEARCH_3RDPARTY OSG_3RDPARTY_BIN)
################################################################################################
# this is code for handling optional 3DPARTY usage
################################################################################################
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(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})
ENDIF(USE_3DPARTY_BIN)
_______________________________________________
osg-submissions mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org