Re #771 CMake config updated for MinGW (builds and installs, but runs bad) and MSVC (not tested, should work with AlphaPixel binaries for 2008/2010)

git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@5085 30fe4595-0a0c-4342-8851-515496e4dcbd

Former-commit-id: 36978a651e9f334608d68e1812aca93789b5786f
Former-commit-id: d774ea355704b88cad0e5d044bbd308b5432b787
This commit is contained in:
pouillot 2013-01-02 15:43:31 +00:00
parent 23c8f84aae
commit ddabc03da3
7 changed files with 180 additions and 80 deletions

View file

@ -187,9 +187,9 @@ MACRO(CHECK_LIBRARIES)
IF(ENET_FOUND) IF(ENET_FOUND)
SET(HAVE_LIBENET 1) SET(HAVE_LIBENET 1)
MESSAGE(STATUS "Looking for library ENET - found") MESSAGE(STATUS "Looking for library ENet - found")
ELSE(ENET_FOUND) ELSE(ENET_FOUND)
MESSAGE(STATUS "Looking for library ENET - NOT found") MESSAGE(STATUS "Looking for library ENet - NOT found")
ENDIF(ENET_FOUND) ENDIF(ENET_FOUND)
# OpenGL # OpenGL
@ -250,18 +250,20 @@ MACRO(CHECK_LIBRARIES)
ENDIF(SDL_FOUND) ENDIF(SDL_FOUND)
# OSG # OSG
IF(OPTION_3RDPARTY_OPENSCENEGRAPH) IF(OPTION_OSGGRAPH)
Find_Package(OPENSCENEGRAPH) IF(NOT OPENSCENEGRAPH_FOUND)
Find_Package(OpenSceneGraph REQUIRED osgDB osgViewer osgGA osgUtil osgFX)
ENDIF()
IF(OPENSCENEGRAPH_FOUND) IF(OPENSCENEGRAPH_FOUND)
SET(HAVE_LIBOPENSCENEGRAPH 1) SET(HAVE_LIBOPENSCENEGRAPH 1)
MESSAGE(STATUS "Looking for library OPENSCENEGRAPH - found") MESSAGE(STATUS "Looking for library OpenScenGraph - found")
ELSE(OPENSCENEGRAPH_FOUND) ELSE(OPENSCENEGRAPH_FOUND)
MESSAGE(STATUS "Looking for library OPENSCENEGRAPH - NOT found") MESSAGE(STATUS "Looking for library OpenScenGraph - NOT found")
ENDIF(OPENSCENEGRAPH_FOUND) ENDIF(OPENSCENEGRAPH_FOUND)
ENDIF(OPTION_3RDPARTY_OPENSCENEGRAPH) ENDIF(OPTION_OSGGRAPH)
# Expat # Expat
IF(OPTION_3RDPARTY_EXPAT) IF(OPTION_3RDPARTY_EXPAT)
@ -270,9 +272,9 @@ MACRO(CHECK_LIBRARIES)
IF(EXPAT_FOUND) IF(EXPAT_FOUND)
SET(HAVE_LIBEXPAT 1) SET(HAVE_LIBEXPAT 1)
MESSAGE(STATUS "Looking for library EXPAT - found") MESSAGE(STATUS "Looking for library Expat - found")
ELSE(EXPAT_FOUND) ELSE(EXPAT_FOUND)
MESSAGE(STATUS "Looking for library EXPAT - NOT found") MESSAGE(STATUS "Looking for library Expat - NOT found")
ENDIF(EXPAT_FOUND) ENDIF(EXPAT_FOUND)
ENDIF(OPTION_3RDPARTY_EXPAT) ENDIF(OPTION_3RDPARTY_EXPAT)
@ -284,9 +286,9 @@ MACRO(CHECK_LIBRARIES)
IF(SOLID_FOUND) IF(SOLID_FOUND)
SET(HAVE_LIBSOLID 1) SET(HAVE_LIBSOLID 1)
MESSAGE(STATUS "Looking for library SOLID - found") MESSAGE(STATUS "Looking for library Solid - found")
ELSE(SOLID_FOUND) ELSE(SOLID_FOUND)
MESSAGE(STATUS "Looking for library SOLID - NOT found") MESSAGE(STATUS "Looking for library Solid - NOT found")
ENDIF(SOLID_FOUND) ENDIF(SOLID_FOUND)
ENDIF(OPTION_3RDPARTY_SOLID) ENDIF(OPTION_3RDPARTY_SOLID)

View file

@ -17,9 +17,10 @@
############################################################################ ############################################################################
# @file Custom 3rdParty location handling for some Windows builds # @file Custom 3rdParty location handling for some Windows builds
# (standard CMake Find<package> macros can't find it, # (standard CMake Find<package> macros can't find it, or don't do
# so we needed another solution). # it the way we need, so we needed another solution).
# @author Brian Gavin # Heavily based on OpenScenGraph cmake scripts.
# @author Brian Gavin, Jean-Philippe Meuret
# @version $Id$ # @version $Id$
################################################################################################ ################################################################################################
@ -58,7 +59,7 @@ MACRO(_FIND_3RDPARTY_DEPENDENCY DEP_NAME INCLUDE_FILE INCLUDE_SUBDIRS LIBRARY_NA
NO_DEFAULT_PATH NO_DEFAULT_PATH
) )
MARK_AS_ADVANCED("${DEP_NAME}_INCLUDE_DIR") MARK_AS_ADVANCED("${DEP_NAME}_INCLUDE_DIR")
#MESSAGE(STATUS " ${DEP_NAME}_INCLUDE_DIR = '${${DEP_NAME}_INCLUDE_DIR}'") #MESSAGE(STATUS "${DEP_NAME}_INCLUDE_DIR = '${${DEP_NAME}_INCLUDE_DIR}'")
# Find library files # Find library files
SET(MY_PATH_LIB ) SET(MY_PATH_LIB )
@ -131,8 +132,9 @@ MACRO(_FIND_3RDPARTY_DEPENDENCIES ROOT_DIR)
# ENet. # ENet.
_FIND_3RDPARTY_DEPENDENCY(ENET enet/enet.h "" enet ${ROOT_DIR} "") _FIND_3RDPARTY_DEPENDENCY(ENET enet/enet.h "" enet ${ROOT_DIR} "")
#OpenSceneGraph # OpenSceneGraph
IF(OPTION_3RDPARTY_OSG) IF(OPTION_OSGGRAPH)
_FIND_3RDPARTY_DEPENDENCY(OPENTHREADS OpenThreads/Thread "" OpenThreads ${ROOT_DIR} "") _FIND_3RDPARTY_DEPENDENCY(OPENTHREADS OpenThreads/Thread "" OpenThreads ${ROOT_DIR} "")
_FIND_3RDPARTY_DEPENDENCY(OSGDB osgDB/fstream "" osgDB ${ROOT_DIR} "") _FIND_3RDPARTY_DEPENDENCY(OSGDB osgDB/fstream "" osgDB ${ROOT_DIR} "")
_FIND_3RDPARTY_DEPENDENCY(OSGFX osgFX/version "" osgFX ${ROOT_DIR} "") _FIND_3RDPARTY_DEPENDENCY(OSGFX osgFX/version "" osgFX ${ROOT_DIR} "")
@ -140,7 +142,25 @@ MACRO(_FIND_3RDPARTY_DEPENDENCIES ROOT_DIR)
_FIND_3RDPARTY_DEPENDENCY(OSG osg/viewport "" osg ${ROOT_DIR} "") _FIND_3RDPARTY_DEPENDENCY(OSG osg/viewport "" osg ${ROOT_DIR} "")
_FIND_3RDPARTY_DEPENDENCY(OSGVIEWER osgViewer/api/Win32/GraphicsHandleWin32 "" osgViewer ${ROOT_DIR} "") _FIND_3RDPARTY_DEPENDENCY(OSGVIEWER osgViewer/api/Win32/GraphicsHandleWin32 "" osgViewer ${ROOT_DIR} "")
_FIND_3RDPARTY_DEPENDENCY(OSGUTIL osgUtil/Optimizer "" osgUtil ${ROOT_DIR} "") _FIND_3RDPARTY_DEPENDENCY(OSGUTIL osgUtil/Optimizer "" osgUtil ${ROOT_DIR} "")
ENDIF(OPTION_3RDPARTY_OSG)
# If everything found, set things as if it was Find_Package(OpenSceneGraph) which had did it,
# in order CHECK_LIBRARIES does not call it again.
IF(OPENTHREADS_FOUND AND OSGDB_FOUND AND OSGFX_FOUND AND OSGGA_FOUND
AND OSG_FOUND AND OSGVIEWER_FOUND AND OSGUTIL_FOUND)
SET(OPENSCENEGRAPH_FOUND "YES")
SET(OPENSCENEGRAPH_INCLUDE_DIRS "${OSG_INCLUDE_DIR}") # We assume they are all together.
SET(OPENSCENEGRAPH_LIBRARIES "${OPENTHREADS_LIBRARY};${OSGDB_LIBRARY};${OSGFX_LIBRARY}")
SET(OPENSCENEGRAPH_LIBRARIES "${OPENSCENEGRAPH_LIBRARIES};${OSGGA_LIBRARY};${OSG_LIBRARY}")
SET(OPENSCENEGRAPH_LIBRARIES "${OPENSCENEGRAPH_LIBRARIES};${OSGVIEWER_LIBRARY};${OSGUTIL_LIBRARY}")
MESSAGE(STATUS "OPENSCENEGRAPH_INCLUDE_DIRS=${OPENSCENEGRAPH_INCLUDE_DIRS}")
MESSAGE(STATUS "OPENSCENEGRAPH_LIBRARIES=${OPENSCENEGRAPH_LIBRARIES}")
ENDIF()
ENDIF(OPTION_OSGGRAPH)
# Expat : Replaces bundled libs/txml (that will soon be removed). # Expat : Replaces bundled libs/txml (that will soon be removed).
IF(OPTION_3RDPARTY_EXPAT) IF(OPTION_3RDPARTY_EXPAT)
@ -201,43 +221,67 @@ ENDMACRO(SD_FIND_CUSTOM_3RDPARTY)
# Under Windows, install needed 3rd party DLLs close to Speed Dreams executable # Under Windows, install needed 3rd party DLLs close to Speed Dreams executable
# (but stay compatible with the old 2.0.0 3rd party package which had less DLLs inside) # (but stay compatible with the old 2.0.0 3rd party package which had less DLLs inside)
MACRO(_FIND_3RDPARTY_DLL PACKAGE_NAME LINK_LIBRARY NAME_HINTS DLL_PATHNAME_VAR) # Find the full path-name of the 3rd party DLL corresponding to the given 3rd party link library
#
# Parameters :
# * LIB_PATH_NAMES : The link library (or list of link libraries) path-name.
# * LIB_NAME_HINTS : Hints for retrieving in LIB_PATH_NAMES the only lib we are taking care of,
# and for retrieving on disk the corresponding DLL.
# * DLL_NAME_PREFIXES : Possible prefixes (to the lib name hint) for retrieving the DLL.
# Note: the empty "" prefix is always tried at the end.
# Ex: "lib;xx" for "lib" and "xx" prefixes.
# * DLL_PATHNAME_VAR : Name of the output variable for the retrieved DLL path-name.
FIND_PACKAGE(${PACKAGE_NAME}) MACRO(_FIND_3RDPARTY_DLL LIB_PATH_NAMES LIB_NAME_HINTS DLL_NAME_PREFIXES DLL_PATHNAME_VAR)
FOREACH(_LIB_NAME ${NAME_HINTS}) FOREACH(_LIB_NAME_HINT ${LIB_NAME_HINTS})
# Must handle the case of multiple libs listed in ${LINK_LIBRARY} # Must handle the case of multiple libs listed in ${LIB_PATH_NAMES} :
SET(_LIB_PATHNAME ${LINK_LIBRARY}) # Use LIB_NAME_HINTS to retrieve the one we are interested in here.
FOREACH(_LIB_PATHNAME_ ${LINK_LIBRARY}) SET(_LIB_PATHNAME ${LIB_PATH_NAMES})
IF(${_LIB_PATHNAME_} MATCHES "${_LIB_NAME}\\.") FOREACH(_LIB_PATHNAME_ ${LIB_PATH_NAMES})
IF(${_LIB_PATHNAME_} MATCHES "${_LIB_NAME_HINT}\\.")
SET(_LIB_PATHNAME ${_LIB_PATHNAME_}) SET(_LIB_PATHNAME ${_LIB_PATHNAME_})
BREAK() BREAK()
ENDIF(${_LIB_PATHNAME_} MATCHES "${_LIB_NAME}\\.") ENDIF(${_LIB_PATHNAME_} MATCHES "${_LIB_NAME_HINT}\\.")
ENDFOREACH(_LIB_PATHNAME_ ${LINK_LIBRARY}) ENDFOREACH(_LIB_PATHNAME_ ${LIB_PATH_NAMES})
# Got 1 link library pathname : check if any corresponding DLL around. # Got the link library pathname : check if any corresponding DLL around (try all prefixes).
# 1) Check the empty prefix
# (CMake ignores it when specified at the beginning of DLL_NAME_PREFIXES ... bull shit).
GET_FILENAME_COMPONENT(_LIB_PATH "${_LIB_PATHNAME}" PATH) GET_FILENAME_COMPONENT(_LIB_PATH "${_LIB_PATHNAME}" PATH)
SET(${DLL_PATHNAME_VAR} "${_LIB_PATH}/../bin/${_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}") SET(${DLL_PATHNAME_VAR} "${_LIB_PATH}/../bin/${_LIB_NAME_HINT}${CMAKE_SHARED_LIBRARY_SUFFIX}")
#MESSAGE(STATUS "Trying 3rdParty DLL ${${DLL_PATHNAME_VAR}} for ${PACKAGE_NAME}") #MESSAGE(STATUS "Trying 3rdParty DLL ${${DLL_PATHNAME_VAR}}")
IF(NOT EXISTS "${${DLL_PATHNAME_VAR}}")
SET(_LIB_NAME "${CMAKE_SHARED_LIBRARY_PREFIX}${_LIB_NAME}")
SET(${DLL_PATHNAME_VAR} "${_LIB_PATH}/../bin/${_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}")
#MESSAGE(STATUS "Trying 3rdParty DLL ${${DLL_PATHNAME_VAR}} for ${PACKAGE_NAME}")
ENDIF(NOT EXISTS "${${DLL_PATHNAME_VAR}}")
#MESSAGE(STATUS "XX ${${DLL_PATHNAME_VAR}} <= ${LINK_LIBRARY} : ${_LIB_NAME} in ${_LIB_PATH}")
IF(EXISTS "${${DLL_PATHNAME_VAR}}") IF(EXISTS "${${DLL_PATHNAME_VAR}}")
#MESSAGE(STATUS "Found 3rdParty DLL ${${DLL_PATHNAME_VAR}} for ${PACKAGE_NAME}") MESSAGE(STATUS "Will install 3rdParty DLL ${${DLL_PATHNAME_VAR}}")
BREAK() BREAK() # First found is the one.
ELSE(EXISTS "${${DLL_PATHNAME_VAR}}") ELSE(EXISTS "${${DLL_PATHNAME_VAR}}")
UNSET(${DLL_PATHNAME_VAR}) UNSET(${DLL_PATHNAME_VAR})
ENDIF(EXISTS "${${DLL_PATHNAME_VAR}}") ENDIF(EXISTS "${${DLL_PATHNAME_VAR}}")
ENDFOREACH(_LIB_NAME ${NAME_HINTS}) # 2) Check other (specified) prefixes.
FOREACH(_DLL_NAME_PREFIX ${DLL_NAME_PREFIXES})
SET(${DLL_PATHNAME_VAR} "${_LIB_PATH}/../bin/${_DLL_NAME_PREFIX}${_LIB_NAME_HINT}${CMAKE_SHARED_LIBRARY_SUFFIX}")
#MESSAGE(STATUS "Trying 3rdParty DLL ${${DLL_PATHNAME_VAR}}")
IF(EXISTS "${${DLL_PATHNAME_VAR}}")
BREAK() # First found is the one.
ELSE(EXISTS "${${DLL_PATHNAME_VAR}}")
UNSET(${DLL_PATHNAME_VAR})
ENDIF(EXISTS "${${DLL_PATHNAME_VAR}}")
ENDFOREACH(_DLL_NAME_PREFIX ${DLL_NAME_PREFIXES})
IF(NOT ${_DLL_PATHNAME_VAR}) IF(EXISTS "${${DLL_PATHNAME_VAR}}")
MESSAGE(STATUS "Could not find 3rdParty DLL in ${NAME_HINTS} for ${PACKAGE_NAME}") MESSAGE(STATUS "Will install 3rdParty DLL ${${DLL_PATHNAME_VAR}}")
ENDIF(NOT ${_DLL_PATHNAME_VAR}) BREAK() # First found is the one.
ELSE(EXISTS "${${DLL_PATHNAME_VAR}}")
UNSET(${DLL_PATHNAME_VAR})
ENDIF(EXISTS "${${DLL_PATHNAME_VAR}}")
ENDFOREACH(_LIB_NAME_HINT ${LIB_NAME_HINTS})
#IF(NOT EXISTS "${${DLL_PATHNAME_VAR}}")
# MESSAGE(STATUS "Could not find 3rdParty DLL for lib ${LIB_NAME_HINTS} (prefixes ${DLL_NAME_PREFIXES})")
#ENDIF()
ENDMACRO(_FIND_3RDPARTY_DLL DLL_PATHNAME) ENDMACRO(_FIND_3RDPARTY_DLL DLL_PATHNAME)
@ -245,7 +289,7 @@ MACRO(SD_INSTALL_CUSTOM_3RDPARTY)
SET(_THIRDPARTY_DLL_PATHNAMES) SET(_THIRDPARTY_DLL_PATHNAMES)
_FIND_3RDPARTY_DLL("OpenAL" "${OPENAL_LIBRARY}" "OpenAL32" _DLL_PATHNAME) _FIND_3RDPARTY_DLL("${OPENAL_LIBRARY}" "OpenAL32" "lib" _DLL_PATHNAME)
LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}") LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}")
# Menu Music requires ogg, vorbis, and vorbisfile # Menu Music requires ogg, vorbis, and vorbisfile
@ -253,51 +297,87 @@ MACRO(SD_INSTALL_CUSTOM_3RDPARTY)
# and these libs become part of Official 3rdParty package # and these libs become part of Official 3rdParty package
IF(OPTION_MENU_MUSIC) IF(OPTION_MENU_MUSIC)
_FIND_3RDPARTY_DLL("OGG" "${OGG_LIBRARY}" "libogg;libogg-0" _DLL_PATHNAME) _FIND_3RDPARTY_DLL("${OGG_LIBRARY}" "libogg;libogg-0" "" _DLL_PATHNAME)
LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}") LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}")
_FIND_3RDPARTY_DLL("VORBIS" "${VORBIS_LIBRARY}" "libvorbis;libvorbis-0" _DLL_PATHNAME) _FIND_3RDPARTY_DLL("${VORBIS_LIBRARY}" "libvorbis;libvorbis-0" "" _DLL_PATHNAME)
LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}") LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}")
_FIND_3RDPARTY_DLL("VORBISFILE" "${VORBISFILE_LIBRARY}" "libvorbisfile;libvorbisfile-3" _DLL_PATHNAME) _FIND_3RDPARTY_DLL("${VORBISFILE_LIBRARY}" "libvorbisfile;libvorbisfile-3" "" _DLL_PATHNAME)
LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}") LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}")
ENDIF(OPTION_MENU_MUSIC) ENDIF(OPTION_MENU_MUSIC)
_FIND_3RDPARTY_DLL("SDL" "${SDL_LIBRARY}" "SDL" _DLL_PATHNAME) _FIND_3RDPARTY_DLL("${SDL_LIBRARY}" "SDL" ";lib" _DLL_PATHNAME)
LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}") LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}")
IF(OPTION_3RDPARTY_EXPAT) IF(OPTION_3RDPARTY_EXPAT)
_FIND_3RDPARTY_DLL("EXPAT" "${EXPAT_LIBRARY}" "expat;expat-1" _DLL_PATHNAME) _FIND_3RDPARTY_DLL("${EXPAT_LIBRARY}" "expat;expat-1" "lib" _DLL_PATHNAME)
LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}") LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}")
ENDIF(OPTION_3RDPARTY_EXPAT) ENDIF(OPTION_3RDPARTY_EXPAT)
IF(OPTION_3RDPARTY_OSG) IF(OPTION_OSGGRAPH)
_FIND_3RDPARTY_DLL("OSG" "${OSG_LIBRARY}" "osg" _DLL_PATHNAME) # DLLs whose libs we link with.
LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}") SET(_OSG_DLLS_NAME_HINTS "OpenThreads;osgDB;osgFX;osgGA;osgViewer;osgUtil;osg")
FOREACH(_LIB_NAME ${OPENSCENEGRAPH_LIBRARIES})
FOREACH(_NAME_HINT ${_OSG_DLLS_NAME_HINTS})
IF("${_LIB_NAME}" MATCHES "${_NAME_HINT}\\.")
_FIND_3RDPARTY_DLL("${_LIB_NAME}" "${_NAME_HINT}" "lib;ot12-;osg80-" _DLL_PATHNAME)
SET(_NAME_HINT_ "${_NAME_HINT}") # For later (see below DLLs we don't link with).
SET(_LIB_NAME_ "${_LIB_NAME}") # For later (see below DLLs we don't link with).
SET(_DLL_PATHNAME_ "${_DLL_PATHNAME}") # For later (see below plugins).
BREAK()
ENDIF()
ENDFOREACH()
LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}")
ENDFOREACH()
ENDIF(OPTION_3RDPARTY_OSG) # Other needed DLLs we don't link with.
# We use _LIB_NAME_ as a template, and _NAME_HINT_ as the string to replace inside.
SET(_EXTRA_OSG_DLLS_NAME_HINTS "osgText") # ';'-separated list
FOREACH(_NAME_HINT ${_EXTRA_OSG_DLLS_NAME_HINTS})
STRING(REPLACE "${_NAME_HINT_}" "${_NAME_HINT}" _LIB_NAME "${_LIB_NAME_}")
_FIND_3RDPARTY_DLL("${_LIB_NAME}" "${_NAME_HINT}" ";lib;ot12-;osg80-" _DLL_PATHNAME)
LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}")
ENDFOREACH()
# Plugins : Complete the list right below according to the actual needs.
# TODO: Find a way to install them in the osgPlugins-xxx subdir (works as is, but ...)
SET(_OSG_PLUGIN_NAME_HINTS "glsl;jpeg;png;rgb") # ';'-separated list
GET_FILENAME_COMPONENT(_OSG_PLUGINS_DIR "${_DLL_PATHNAME_}" PATH)
FILE(GLOB_RECURSE _OSG_PLUGIN_NAMES "${_OSG_PLUGINS_DIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}")
FOREACH(_NAME_HINT ${_OSG_PLUGIN_NAME_HINTS})
FOREACH(_PLUGIN_NAME ${_OSG_PLUGIN_NAMES})
IF("${_PLUGIN_NAME}" MATCHES "osgPlugins.*/.*${_NAME_HINT}\\.")
LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_PLUGIN_NAME}")
MESSAGE(STATUS "Will install 3rdParty plugin ${_PLUGIN_NAME}")
BREAK()
ENDIF()
ENDFOREACH()
ENDFOREACH()
ENDIF(OPTION_OSGGRAPH)
IF(OPTION_3RDPARTY_SOLID) IF(OPTION_3RDPARTY_SOLID)
_FIND_3RDPARTY_DLL("SOLID" "${SOLID_SOLID_LIBRARY}" "solid" _DLL_PATHNAME) _FIND_3RDPARTY_DLL("${SOLID_SOLID_LIBRARY}" "solid" "lib" _DLL_PATHNAME)
LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}") LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}")
_FIND_3RDPARTY_DLL("SOLID" "${SOLID_BROAD_LIBRARY}" "broad" _DLL_PATHNAME) _FIND_3RDPARTY_DLL("${SOLID_BROAD_LIBRARY}" "broad" "lib" _DLL_PATHNAME)
LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}") LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}")
ENDIF(OPTION_3RDPARTY_SOLID) ENDIF(OPTION_3RDPARTY_SOLID)
_FIND_3RDPARTY_DLL("ZLIB" "${ZLIB_LIBRARY}" "zlib" _DLL_PATHNAME) _FIND_3RDPARTY_DLL("${ZLIB_LIBRARY}" "zlib" "lib" _DLL_PATHNAME)
LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}") LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}")
_FIND_3RDPARTY_DLL("PNG" "${PNG_LIBRARY}" "png" _DLL_PATHNAME) _FIND_3RDPARTY_DLL("${PNG_LIBRARY}" "png" "lib" _DLL_PATHNAME)
LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}") LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}")
_FIND_3RDPARTY_DLL("JPEG" "${JPEG_LIBRARY}" "jpeg-8" _DLL_PATHNAME) _FIND_3RDPARTY_DLL("${JPEG_LIBRARY}" "jpeg;jpeg-8" "lib" _DLL_PATHNAME)
LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}") LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}")
#MESSAGE(STATUS "3rdParty dependencies : Will install ${_THIRDPARTY_DLL_PATHNAMES}") #MESSAGE(STATUS "3rdParty dependencies : Will install ${_THIRDPARTY_DLL_PATHNAMES}")

View file

@ -81,6 +81,8 @@ MACRO(ADD_SD_COMPILE_OPTIONS)
SET(OPTION_UNLOAD_SSGGRAPH true CACHE BOOL "If false, never unload ssggraph module (useful on some Linuxes to avoid XOrg crashes)") SET(OPTION_UNLOAD_SSGGRAPH true CACHE BOOL "If false, never unload ssggraph module (useful on some Linuxes to avoid XOrg crashes)")
ENDIF(UNIX) ENDIF(UNIX)
SET(OPTION_OSGGRAPH false CACHE BOOL "Build OpenScenGraph-based WIP osggraph graphics module")
SET(OPTION_AUTOVERSION true CACHE BOOL "Enable automatic computation of the version from SVN source tree") SET(OPTION_AUTOVERSION true CACHE BOOL "Enable automatic computation of the version from SVN source tree")
# Custom 3rdParty location for some Windows builds (standard CMake Find<package> macros # Custom 3rdParty location for some Windows builds (standard CMake Find<package> macros

View file

@ -73,6 +73,34 @@ MACRO(ADD_PLIB_LIBRARY TARGET)
ENDMACRO(ADD_PLIB_LIBRARY TARGET) ENDMACRO(ADD_PLIB_LIBRARY TARGET)
MACRO(ADD_OSG_INCLUDEDIR)
IF(NOT OPENSCENEGRAPH_FOUND)
FIND_PACKAGE(OpenSceneGraph REQUIRED osgDB osgViewer osgGA osgUtil osgFX)
ENDIF(NOT OPENSCENEGRAPH_FOUND)
IF(OPENSCENEGRAPH_FOUND)
INCLUDE_DIRECTORIES(${OPENSCENEGRAPH_INCLUDE_DIRS})
ELSE(OPENSCENEGRAPH_FOUND)
MESSAGE(FATAL_ERROR "Cannot find OSG header files")
ENDIF(OPENSCENEGRAPH_FOUND)
ENDMACRO(ADD_OSG_INCLUDEDIR)
MACRO(ADD_OSG_LIBRARY TARGET)
IF(NOT OPENSCENEGRAPH_FOUND)
FIND_PACKAGE(OpenSceneGraph REQUIRED osgDB osgViewer osgGA osgUtil osgFX)
ENDIF(NOT OPENSCENEGRAPH_FOUND)
IF(OPENSCENEGRAPH_FOUND)
TARGET_LINK_LIBRARIES(${TARGET} ${OPENSCENEGRAPH_LIBRARIES})
ELSE(OPENSCENEGRAPH_FOUND)
MESSAGE(FATAL_ERROR "Cannot find OSG libraries")
ENDIF(OPENSCENEGRAPH_FOUND)
ENDMACRO(ADD_OSG_LIBRARY TARGET)
MACRO(ADD_SDL_INCLUDEDIR) MACRO(ADD_SDL_INCLUDEDIR)
FIND_PACKAGE(SDL) FIND_PACKAGE(SDL)

View file

@ -2,8 +2,7 @@ INCLUDE(../../../cmake/macros.cmake)
ADD_SUBDIRECTORY(ssggraph) ADD_SUBDIRECTORY(ssggraph)
SET(OPTION_OSG false CACHE BOOL "Enable OpenSceneGraph") IF(OPTION_OSGGRAPH)
IF(OPTION_OSG)
ADD_SUBDIRECTORY(osggraph) ADD_SUBDIRECTORY(osggraph)
ENDIF(OPTION_OSG) ENDIF(OPTION_OSGGRAPH)

View file

@ -11,7 +11,9 @@ SET(OSGGRAPH_SOURCES AccGeode.cpp AccException.cpp ReaderWriterACC.cpp
ADD_INTERFACE_INCLUDEDIR() ADD_INTERFACE_INCLUDEDIR()
ADD_SDLIB_INCLUDEDIR(portability math tgf tgfclient robottools) ADD_SDLIB_INCLUDEDIR(portability math tgf tgfclient robottools)
ADD_SDL_INCLUDEDIR() ADD_SDL_INCLUDEDIR()
ADD_OSG_INCLUDEDIR()
IF(COMMAND CMAKE_POLICY) IF(COMMAND CMAKE_POLICY)
CMAKE_POLICY(SET CMP0003 NEW) CMAKE_POLICY(SET CMP0003 NEW)
@ -31,28 +33,16 @@ ENDIF(MSVC)
ADD_LIBRARY(osggraph SHARED ${OSGGRAPH_SOURCES} ${OSGGRAPH_HEADERS} ${OSGGRAPH_OTHER_SOURCES}) ADD_LIBRARY(osggraph SHARED ${OSGGRAPH_SOURCES} ${OSGGRAPH_HEADERS} ${OSGGRAPH_OTHER_SOURCES})
# Might not work with GCC 4.5 or + (non-robot modules crash at 1st reload = after 1 dlclose) # Might not work with GCC 4.5 or + (non-robot modules crash at 1st reload = after 1 dlclose)
#SET_TARGET_PROPERTIES(ssggraph PROPERTIES VERSION ${VERSION} SOVERSION 0.0.0) #SET_TARGET_PROPERTIES(osggraph PROPERTIES VERSION ${VERSION} SOVERSION 0.0.0)
IF(UNIX OR MINGW) IF(UNIX OR MINGW)
SET_TARGET_PROPERTIES(osggraph PROPERTIES PREFIX "") SET_TARGET_PROPERTIES(osggraph PROPERTIES PREFIX "")
ENDIF(UNIX OR MINGW) ENDIF(UNIX OR MINGW)
#ADD_OSG_LIBRARY(osggraph osgviewer osgFX osgGA osgUtils osgDB OpenThreads osg) ADD_OSG_LIBRARY(osggraph)
ADD_SDL_LIBRARY(osggraph) ADD_SDL_LIBRARY(osggraph)
ADD_OPENGL_LIBRARY(osggraph)
ADD_SDLIB_LIBRARY(osggraph tgf tgfclient robottools) ADD_SDLIB_LIBRARY(osggraph tgf tgfclient robottools)
find_package(OpenSceneGraph REQUIRED osgDB osgViewer osgGA osgUtil osgFX)
# libOpenThreads & libosg automatically searched
include_directories(${OPENSCENEGRAPH_INCLUDE_DIRS})
target_link_libraries(osggraph ${OPENSCENEGRAPH_LIBRARIES})
IF(OPENAL_FOUND)
TARGET_LINK_LIBRARIES(osggraph ${OPENAL_LIBRARY})
ENDIF(OPENAL_FOUND)
IF(OPENGL_FOUND)
TARGET_LINK_LIBRARIES(osggraph ${OPENGL_LIBRARY})
ENDIF(OPENGL_FOUND)
SD_INSTALL_FILES(LIB modules/graphic TARGETS osggraph) SD_INSTALL_FILES(LIB modules/graphic TARGETS osggraph)

View file

@ -36,6 +36,7 @@ SET(SSGGRAPH_OTHER_SOURCES graph.xml)
ADD_INTERFACE_INCLUDEDIR() ADD_INTERFACE_INCLUDEDIR()
ADD_SDLIB_INCLUDEDIR(portability math tgf tgfclient robottools) ADD_SDLIB_INCLUDEDIR(portability math tgf tgfclient robottools)
ADD_PLIB_INCLUDEDIR() ADD_PLIB_INCLUDEDIR()
ADD_SDL_INCLUDEDIR() ADD_SDL_INCLUDEDIR()
@ -65,12 +66,10 @@ ENDIF(UNIX OR MINGW)
ADD_PLIB_LIBRARY(ssggraph ul sg sl ssg ssgaux) ADD_PLIB_LIBRARY(ssggraph ul sg sl ssg ssgaux)
ADD_SDL_LIBRARY(ssggraph) ADD_SDL_LIBRARY(ssggraph)
ADD_OPENGL_LIBRARY(ssggraph)
ADD_SDLIB_LIBRARY(ssggraph portability tgf tgfclient robottools) ADD_SDLIB_LIBRARY(ssggraph portability tgf tgfclient robottools)
IF(OPENGL_FOUND)
TARGET_LINK_LIBRARIES(ssggraph ${OPENGL_LIBRARY})
ENDIF(OPENGL_FOUND)
SD_INSTALL_FILES(DATA config USER config FILES graph.xml) SD_INSTALL_FILES(DATA config USER config FILES graph.xml)
SD_INSTALL_FILES(LIB modules/graphic TARGETS ssggraph) SD_INSTALL_FILES(LIB modules/graphic TARGETS ssggraph)