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

Reply via email to