From c39f5f5188e593ee3d2a2edf9449717df31cd234 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Sat, 10 Mar 2007 11:38:13 +0000 Subject: [PATCH] From Luigi Calori, CMakeLists.txt support for wrappers --- src/osgWrappers/CMakeLists.txt | 89 ++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 src/osgWrappers/CMakeLists.txt diff --git a/src/osgWrappers/CMakeLists.txt b/src/osgWrappers/CMakeLists.txt new file mode 100644 index 000000000..6360def01 --- /dev/null +++ b/src/osgWrappers/CMakeLists.txt @@ -0,0 +1,89 @@ +PROJECT(OSG_WRAPPERS) + +MACRO(ADD_WRAPPER_LIB SUBDIR EXPORTDEF) + SET(TARGET_NAME "wrapper_${SUBDIR}") +# MESSAGE(STATUS "--inizio-->${TARGET_NAME}<->${LINK}<-") + + FILE(GLOB SRC_FILES ${OSGWRAPPER_DIR}/${SUBDIR}/*.cpp) + + #-- extract link files, defines, exclude files form additional arguments + + SET(LISTNAME "TEMP") + SET(DEFSTR "") + + FOREACH(ARG ${ARGN}) # parse remaining args + #MESSAGE(STATUS "+ [${ARG}]") + #MESSAGE("ARG-->${ARG}") + # if we find our keywords set the active list to given keyname + STRING(COMPARE EQUAL "${ARG}" "LINK" IS_LINK) + STRING(COMPARE EQUAL "${ARG}" "DEFINE" IS_DEFINE) + STRING(COMPARE EQUAL "${ARG}" "EXCLUDE" IS_EXCLUDE) + + #MESSAGE(STATUS "STRSTUFF L ${IS_LINK} D ${IS_DEFINE} E ${IS_EXCLUDE}") + + SET(EXPRESSION ${IS_LINK} OR ${IS_DEFINE} OR ${IS_EXCLUDE}) + IF(${EXPRESSION}) + SET(${LISTNAME} ${CURRLIST}) + MESSAGE(STATUS "STORED LIST [${LISTNAME}] = (${CURRLIST})") + SET(LISTNAME ${ARG}) + REMOVE(CURRLIST ${CURRLIST} ) + + ELSE(${EXPRESSION}) + SET(CURRLIST ${CURRLIST} ${ARG}) + + ENDIF(${EXPRESSION}) + ENDFOREACH(ARG) + SET(${LISTNAME} ${CURRLIST}) + #MESSAGE(STATUS "STORED LIST [${LISTNAME}] = (${CURRLIST})") + REMOVE(CURRLIST ${CURRLIST} ) + + #MESSAGE(STATUS "AFTER: EXC (${EXCLUDE}) DEF (${DEFINE}) LINK (${LINK})") + FOREACH(EXF ${EXCLUDE}) + REMOVE(SRC_FILES ${OPENSCENEGRAPH_DIR}/src/${SUBDIR}/${EXF}) + ENDFOREACH(EXF) + + FOREACH(DEF ${DEFINE}) + SET(DEFSTR "${DEFSTR} /D \"${DEF}\"") + #MESSAGE(STATUS "add symbol : " ${DEF}) + ENDFOREACH(DEF) + + IF(NOT DEFSTR STREQUAL "") + SET_SOURCE_FILES_PROPERTIES(${SRC_FILES} PROPERTIES COMPILE_FLAGS ${DEFSTR}) + #MESSAGE(STATUS "********* ADD COMPILE FLAGS ${DEFSTR} **********") + ENDIF(NOT DEFSTR STREQUAL "") + + ADD_LIBRARY(${TARGET_NAME} SHARED ${SRC_FILES} ) + SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES DEFINE_SYMBOL "${EXPORTDEF}" PROJECT_LABEL "Wrapper ${SUBDIR}") + TARGET_LINK_LIBRARIES(${TARGET_NAME} ${LINK}) + #MESSAGE(STATUS "--TARGET_LINK_LIBRARIES-->${TARGET_NAME}<->${LINK}<-") + + REMOVE(DEFINE ${DEFINE}) + REMOVE(LINK ${LINK}) + REMOVE(EXCLUDE ${EXCLUDE}) + + INSTALL_TARGETS(/lib ${TARGET_NAME} ) + +ENDMACRO(ADD_WRAPPER_LIB) + + + +SET(OSGWRAPPER_LIB_LIST + osg + osgDB + osgUtil + osgGA + osgText + osgParticle + osgFX + osgSim + osgManipulator + osgShadow + osgTerrain + osgViewer +) + + +SET(OSGWRAPPER_DIR ${CMAKE_CURRENT_SOURCE_DIR}) +FOREACH(LIB ${OSGWRAPPER_LIB_LIST} ) + ADD_WRAPPER_LIB(${LIB} OSGWRAPPERS_LIBRARY LINK osg ${LIB} osgIntrospection) +ENDFOREACH(LIB ${OSGWRAPPER_LIB_LIST} ) \ No newline at end of file