From Philip Lowman, "Here's the promised cleanup of the OSG's CMakeLists.txt files for the src/ folder. I'll submit the others separately.

Also, there was also a small bug in osgDB's CMakeLists.txt that was causing an error when I tested with CMake 2.4.4.

IF(${OSG_DEFAULT_IMAGE_PLUGIN_FOR_OSX} STREQUAL "quicktime")
was changed to
IF(OSG_DEFAULT_IMAGE_PLUGIN_FOR_OSX STREQUAL "quicktime")
"
This commit is contained in:
Robert Osfield
2009-03-23 16:01:02 +00:00
parent 51964a2b79
commit 39cecd2a72
23 changed files with 256 additions and 281 deletions

View File

@@ -1,18 +1,18 @@
PROJECT(OSG_WRAPPERS)
IF (NOT DYNAMIC_OPENSCENEGRAPH)
IF(NOT DYNAMIC_OPENSCENEGRAPH)
ADD_DEFINITIONS(-DOSG_LIBRARY_STATIC)
ENDIF(NOT DYNAMIC_OPENSCENEGRAPH)
ENDIF()
SET(LIBRARY_OUTPUT_PATH "${LIBRARY_OUTPUT_PATH}/${OSG_PLUGINS}")
SET(CMAKE_SHARED_MODULE_PREFIX ${OSG_PLUGIN_PREFIX})
IF(MSVC80)
IF(NOT OSG_MSVC_GENERATE_PLUGINS_AND_WRAPPERS_MANIFESTS)
SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /MANIFEST:NO")
ENDIF(NOT OSG_MSVC_GENERATE_PLUGINS_AND_WRAPPERS_MANIFESTS)
ENDIF(MSVC80)
IF(NOT OSG_MSVC_GENERATE_PLUGINS_AND_WRAPPERS_MANIFESTS)
SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /MANIFEST:NO")
ENDIF()
ENDIF()
MACRO(ADD_WRAPPER_LIB SUBDIR EXPORTDEF)
SET(TARGET_NAME "osgwrapper_${SUBDIR}")
@@ -41,12 +41,10 @@ MACRO(ADD_WRAPPER_LIB SUBDIR EXPORTDEF)
# MESSAGE(STATUS "STORED LIST [${LISTNAME}] = (${CURRLIST})")
SET(LISTNAME ${ARG})
REMOVE(CURRLIST ${CURRLIST} )
ELSE(${EXPRESSION})
ELSE()
SET(CURRLIST ${CURRLIST} ${ARG})
ENDIF(${EXPRESSION})
ENDFOREACH(ARG)
ENDIF()
ENDFOREACH()
SET(${LISTNAME} ${CURRLIST})
#MESSAGE(STATUS "STORED LIST [${LISTNAME}] = (${CURRLIST})")
REMOVE(CURRLIST ${CURRLIST} )
@@ -54,49 +52,45 @@ MACRO(ADD_WRAPPER_LIB SUBDIR EXPORTDEF)
#MESSAGE(STATUS "AFTER: EXC (${EXCLUDE}) DEF (${DEFINE}) LINK (${LINK})")
FOREACH(EXF ${EXCLUDE})
REMOVE(SRC_FILES ${OPENSCENEGRAPH_DIR}/src/${SUBDIR}/${EXF})
ENDFOREACH(EXF)
ENDFOREACH()
FOREACH(DEF ${DEFINE})
SET(DEFSTR "${DEFSTR} /D \"${DEF}\"")
#MESSAGE(STATUS "add symbol : " ${DEF})
ENDFOREACH(DEF)
ENDFOREACH()
IF(NOT DEFSTR STREQUAL "")
SET_SOURCE_FILES_PROPERTIES(${SRC_FILES} PROPERTIES COMPILE_FLAGS ${DEFSTR})
#MESSAGE(STATUS "********* ADD COMPILE FLAGS ${DEFSTR} **********")
ENDIF(NOT DEFSTR STREQUAL "")
ENDIF()
#ADD_LIBRARY(${TARGET_NAME} SHARED ${SRC_FILES} )
ADD_LIBRARY(${TARGET_NAME} MODULE ${SRC_FILES} )
ADD_LIBRARY(${TARGET_NAME} MODULE ${SRC_FILES} )
#not sure if needed, but for plugins only msvc need the d suffix
IF(NOT MSVC)
SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES DEBUG_POSTFIX "")
ELSE(NOT MSVC)
ELSE()
IF(OSG_MSVC_VERSIONED_DLL)
#this is a hack... the build place is set to lib/<debug or release> by LIBARARY_OUTPUT_PATH equal to OUTPUT_LIBDIR
#the .lib will be crated in ../ so going straight in lib by the IMPORT_PREFIX property
#because we want dll placed in OUTPUT_BINDIR ie the bin folder sibling of lib, we can use ../../bin to go there,
#it is hardcoded, we should compute OUTPUT_BINDIR position relative to OUTPUT_LIBDIR ... to be implemented
#changing bin to something else breaks this hack
#the dll are placed in bin/${OSG_PLUGINS}
IF(NOT MSVC_IDE)
SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES PREFIX "../bin/${OSG_PLUGINS}/")
ELSE(NOT MSVC_IDE)
SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES PREFIX "../../bin/${OSG_PLUGINS}/" IMPORT_PREFIX "../")
ENDIF(NOT MSVC_IDE)
ELSE(OSG_MSVC_VERSIONED_DLL)
#this is a hack... the build place is set to lib/<debug or release> by LIBARARY_OUTPUT_PATH equal to OUTPUT_LIBDIR
#the .lib will be crated in ../ so going straight in lib by the IMPORT_PREFIX property
#because we want dll placed in OUTPUT_BINDIR ie the bin folder sibling of lib, we can use ../../bin to go there,
#it is hardcoded, we should compute OUTPUT_BINDIR position relative to OUTPUT_LIBDIR ... to be implemented
#changing bin to something else breaks this hack
#the dll are placed in bin/${OSG_PLUGINS}
IF(NOT MSVC_IDE)
SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES PREFIX "../bin/${OSG_PLUGINS}/")
ELSE()
SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES PREFIX "../../bin/${OSG_PLUGINS}/" IMPORT_PREFIX "../")
ENDIF()
ELSE()
#in standard mode (unversioned) the .lib and .dll are placed in lib/<debug or release>/${OSG_PLUGINS}.
#here the PREFIX property has been used, the same result would be accomplidhe by prepending ${OSG_PLUGINS}/ to OUTPUT_NAME target property
SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES PREFIX "${OSG_PLUGINS}/")
ENDIF(OSG_MSVC_VERSIONED_DLL)
ENDIF(NOT MSVC)
ENDIF()
ENDIF()
SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES DEFINE_SYMBOL "${EXPORTDEF}" PROJECT_LABEL "Wrapper ${SUBDIR}")
IF(MSVC AND OSG_MSVC_VERSIONED_DLL)
@@ -104,25 +98,31 @@ MACRO(ADD_WRAPPER_LIB SUBDIR EXPORTDEF)
#when using full path name to specify linkage, it seems that already linked libs must be specified
LINK_EXTERNAL(${TARGET_NAME} ${OPENGL_LIBRARIES})
ELSE(MSVC AND OSG_MSVC_VERSIONED_DLL)
ELSE()
TARGET_LINK_LIBRARIES(${TARGET_NAME} ${LINK})
ENDIF(MSVC AND OSG_MSVC_VERSIONED_DLL)
ENDIF()
#MESSAGE(STATUS "--TARGET_LINK_LIBRARIES-->${TARGET_NAME}<->${LINK}<-")
#FIXME: Deprecated
REMOVE(DEFINE ${DEFINE})
REMOVE(LINK ${LINK})
REMOVE(EXCLUDE ${EXCLUDE})
IF(WIN32)
INSTALL(TARGETS ${TARGET_NAME} RUNTIME DESTINATION bin ARCHIVE DESTINATION lib/${OSG_PLUGINS} LIBRARY DESTINATION bin/${OSG_PLUGINS} COMPONENT libopenscenegraph-wrappers)
ELSE(WIN32)
INSTALL(TARGETS ${TARGET_NAME} RUNTIME DESTINATION bin ARCHIVE DESTINATION lib${LIB_POSTFIX}/${OSG_PLUGINS} LIBRARY DESTINATION lib${LIB_POSTFIX}/${OSG_PLUGINS} COMPONENT libopenscenegraph-wrappers)
ENDIF(WIN32)
INSTALL(TARGETS ${TARGET_NAME}
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib/${OSG_PLUGINS}
LIBRARY DESTINATION bin/${OSG_PLUGINS}
COMPONENT libopenscenegraph-wrappers)
ELSE()
INSTALL(TARGETS ${TARGET_NAME}
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib${LIB_POSTFIX}/${OSG_PLUGINS}
LIBRARY DESTINATION lib${LIB_POSTFIX}/${OSG_PLUGINS}
COMPONENT libopenscenegraph-wrappers)
ENDIF()
ENDMACRO(ADD_WRAPPER_LIB)
SET(OSGWRAPPER_LIB_LIST
OpenThreads
osg
@@ -144,9 +144,11 @@ SET(OSGWRAPPER_LIB_LIST
SET(OSGWRAPPER_DIR ${CMAKE_CURRENT_SOURCE_DIR})
IF(MSVC)
SET(LIBRARY_OUTPUT_PATH ${OUTPUT_LIBDIR})
ENDIF(MSVC)
FOREACH(LIB ${OSGWRAPPER_LIB_LIST} )
ADD_WRAPPER_LIB(${LIB} OSGWRAPPERS_LIBRARY LINK OpenThreads osg osgGA ${LIB} osgIntrospection)
ENDFOREACH(LIB ${OSGWRAPPER_LIB_LIST} )
ENDIF()
FOREACH(LIB ${OSGWRAPPER_LIB_LIST})
ADD_WRAPPER_LIB(${LIB} OSGWRAPPERS_LIBRARY LINK OpenThreads osg osgGA ${LIB} osgIntrospection)
ENDFOREACH()