Changeset 16
- Timestamp:
- 06/06/08 18:00:46
- Files:
-
- trunk/CMakeLists.txt (modified) (7 diffs)
- trunk/CMakeModules/P3dMacroUtils.cmake (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/CMakeLists.txt
r10 r16 12 12 ENDIF(WIN32) 13 13 14 if(COMMAND cmake_policy) 15 # Works around warnings libraries linked against that don't 16 # have absolute paths (e.g. -lpthreads) 17 cmake_policy(SET CMP0003 NEW) 18 19 # Works around warnings about escaped quotes in ADD_DEFINITIONS 20 # statements. 21 cmake_policy(SET CMP0005 OLD) 22 endif(COMMAND cmake_policy) 23 14 24 15 25 PROJECT(PRESENT3D) … … 34 44 35 45 # Okay, here's the problem: On some platforms, linking against OpenThreads 36 # is not enough and explicit linking to the underlying thread library 46 # is not enough and explicit linking to the underlying thread library 37 47 # is also required (e.g. FreeBSD). But OpenThreads may be built with different 38 # backends (Pthreads, Sproc, Windows) so we don't know what the underlying 39 # thread library is because some platforms support multiple backends (e.g. 40 # IRIX supports Sproc and Pthreads). Linking all libraries won't work 48 # backends (Pthreads, Sproc, Windows) so we don't know what the underlying 49 # thread library is because some platforms support multiple backends (e.g. 50 # IRIX supports Sproc and Pthreads). Linking all libraries won't work 41 51 # because the libraries may be incompatible. 42 # So the current solution is to attempt best guess linking and exempt certain 52 # So the current solution is to attempt best guess linking and exempt certain 43 53 # cases. With IRIX, we're going to hope explicit linking to the underlying 44 54 # library is not necessary. We currently don't case for pthreads on Windows … … 47 57 IF(CMAKE_SYSTEM MATCHES IRIX) 48 58 # Erase CMAKE_THREAD_LIBS_INIT and hope it works 49 SET(CMAKE_THREAD_LIBS_INIT "" CACHE INTERNAL "") 59 SET(CMAKE_THREAD_LIBS_INIT "" CACHE INTERNAL "") 50 60 ENDIF(CMAKE_SYSTEM MATCHES IRIX) 51 61 … … 66 76 ${OPENGL_INCLUDE_DIR} 67 77 ) 68 78 69 79 # Common global definitions 70 80 #ADD_DEFINITIONS(-D) … … 120 130 SET(LIB_POSTFIX "") 121 131 ENDIF(NOT DEFINED LIB_POSTFIX) 122 132 123 133 #SET(OUTPUT_BINDIR ${PROJECT_BINARY_DIR}/bin/${CMAKE_SYSTEM_NAME}) 124 134 SET(OUTPUT_BINDIR ${PROJECT_BINARY_DIR}/bin) … … 152 162 # Automatically detected build options 153 163 EXEC_PROGRAM(osgversion ARGS Matrix::value_type OUTPUT_VARIABLE OSG_USE_FLOAT_MATRIX) 154 IF(OSG_USE_FLOAT_MATRIX MATCHES "float") 164 IF(OSG_USE_FLOAT_MATRIX MATCHES "float") 155 165 ADD_DEFINITIONS(-DOSG_USE_FLOAT_MATRIX) 156 ENDIF(OSG_USE_FLOAT_MATRIX MATCHES "float") 166 ENDIF(OSG_USE_FLOAT_MATRIX MATCHES "float") 157 167 158 168 EXEC_PROGRAM(osgversion ARGS Plane::value_type OUTPUT_VARIABLE OSG_USE_FLOAT_PLANE) 159 IF(OSG_USE_FLOAT_PLANE MATCHES "float") 169 IF(OSG_USE_FLOAT_PLANE MATCHES "float") 160 170 ADD_DEFINITIONS(-DOSG_USE_FLOAT_PLANE) 161 ENDIF(OSG_USE_FLOAT_PLANE MATCHES "float") 171 ENDIF(OSG_USE_FLOAT_PLANE MATCHES "float") 162 172 163 173 EXEC_PROGRAM(osgversion ARGS BoundingSphere::value_type OUTPUT_VARIABLE OSG_USE_FLOAT_BOUNDINGSPHERE) 164 IF(OSG_USE_FLOAT_BOUNDINGSPHERE MATCHES "double") 174 IF(OSG_USE_FLOAT_BOUNDINGSPHERE MATCHES "double") 165 175 ADD_DEFINITIONS(-DOSG_USE_DOUBLE_BOUNDINGSPHERE) 166 ENDIF(OSG_USE_FLOAT_BOUNDINGSPHERE MATCHES "double") 176 ENDIF(OSG_USE_FLOAT_BOUNDINGSPHERE MATCHES "double") 167 177 168 178 EXEC_PROGRAM(osgversion ARGS BoundingBox::value_type OUTPUT_VARIABLE OSG_USE_FLOAT_BOUNDINGBOX) 169 IF(OSG_USE_FLOAT_BOUNDINGBOX MATCHES "double") 179 IF(OSG_USE_FLOAT_BOUNDINGBOX MATCHES "double") 170 180 ADD_DEFINITIONS(-DOSG_USE_DOUBLE_BOUNDINGBOX) 171 ENDIF(OSG_USE_FLOAT_BOUNDINGBOX MATCHES "double") 181 ENDIF(OSG_USE_FLOAT_BOUNDINGBOX MATCHES "double") 172 182 173 183 … … 187 197 188 198 189 # Set defaults for Universal Binaries. We want 32-bit Intel/PPC on 10.4 199 200 # Set defaults for Universal Binaries. We want 32-bit Intel/PPC on 10.4 190 201 # and 32/64-bit Intel/PPC on >= 10.5. Anything <= 10.3 doesn't support. 191 202 IF(APPLE) 192 203 # These are just defaults/recommendations, but how we want to build 193 204 # out of the box. But the user needs to be able to change these options. 194 # So we must only set the values the first time CMake is run, or we 205 # So we must only set the values the first time CMake is run, or we 195 206 # will overwrite any changes the user sets. 196 207 # FORCE is used because the options are not reflected in the UI otherwise. trunk/CMakeModules/P3dMacroUtils.cmake
r1 r16 6 6 # is intended as a list of variable names each one containing the path of the libraries to link to 7 7 # The existance of a varibale name with _DEBUG appended is tested and, in case it' s value is used 8 # for linking to when in debug mode 8 # for linking to when in debug mode 9 9 # the content of this library for linking when in debugging 10 10 ####################################################################################################### … … 22 22 23 23 MACRO(LINK_INTERNAL TRGTNAME) 24 FOREACH(LINKLIB ${ARGN}) 25 TARGET_LINK_LIBRARIES(${TRGTNAME} optimized "${LINKLIB}" debug "${LINKLIB}${CMAKE_DEBUG_POSTFIX}") 26 ENDFOREACH(LINKLIB) 24 IF(${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} GREATER 4) 25 TARGET_LINK_LIBRARIES(${TRGTNAME} ${ARGN}) 26 ELSE(${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} GREATER 4) 27 FOREACH(LINKLIB ${ARGN}) 28 TARGET_LINK_LIBRARIES(${TRGTNAME} optimized "${LINKLIB}" debug "${LINKLIB}${CMAKE_DEBUG_POSTFIX}") 29 ENDFOREACH(LINKLIB) 30 ENDIF(${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} GREATER 4) 27 31 ENDMACRO(LINK_INTERNAL TRGTNAME) 28 32 … … 39 43 40 44 MACRO(LINK_CORELIB_DEFAULT CORELIB_NAME) 41 LINK_EXTERNAL(${CORELIB_NAME} ${OPENGL_LIBRARIES}) 45 LINK_EXTERNAL(${CORELIB_NAME} ${OPENGL_LIBRARIES}) 42 46 LINK_WITH_VARIABLES(${CORELIB_NAME} OPENTHREADS_LIBRARY) 43 47 IF(PRESENT3D_SONAMES) … … 63 67 # 64 68 # This set up the libraries to link to, it assumes there are two variable: one common for a group of examples or plagins 65 # kept in the variable TARGET_COMMON_LIBRARIES and an example or plugin specific kept in TARGET_ADDED_LIBRARIES 66 # they are combined in a single list checked for unicity 69 # kept in the variable TARGET_COMMON_LIBRARIES and an example or plugin specific kept in TARGET_ADDED_LIBRARIES 70 # they are combined in a single list checked for unicity 67 71 # the suffix ${CMAKE_DEBUG_POSTFIX} is used for differentiating optimized and debug 68 72 # 69 # a second variable TARGET_EXTERNAL_LIBRARIES hold the list of libraries not differentiated between debug and optimized 73 # a second variable TARGET_EXTERNAL_LIBRARIES hold the list of libraries not differentiated between debug and optimized 70 74 ################################################################################## 71 75 SET(TARGET_LIBRARIES ${TARGET_COMMON_LIBRARIES}) … … 83 87 ENDFOREACH(LINKLIB) 84 88 85 FOREACH(LINKLIB ${TARGET_LIBRARIES}) 86 TARGET_LINK_LIBRARIES(${TARGET_TARGETNAME} optimized ${LINKLIB} debug "${LINKLIB}${CMAKE_DEBUG_POSTFIX}") 87 ENDFOREACH(LINKLIB) 89 # FOREACH(LINKLIB ${TARGET_LIBRARIES}) 90 # TARGET_LINK_LIBRARIES(${TARGET_TARGETNAME} optimized ${LINKLIB} debug "${LINKLIB}${CMAKE_DEBUG_POSTFIX}") 91 # ENDFOREACH(LINKLIB) 92 LINK_INTERNAL(${TARGET_TARGETNAME} ${TARGET_LIBRARIES}) 88 93 89 94 FOREACH(LINKLIB ${TARGET_EXTERNAL_LIBRARIES}) … … 109 114 110 115 IF(${IS_COMMANDLINE_APP}) 111 116 112 117 ADD_EXECUTABLE(${TARGET_TARGETNAME} ${TARGET_SRC} ${TARGET_H}) 113 118 114 119 ELSE(${IS_COMMANDLINE_APP}) 115 120 116 121 IF(APPLE) 117 122 # SET(MACOSX_BUNDLE_LONG_VERSION_STRING "${PRESENT3D_MAJOR_VERSION}.${PRESENT3D_MINOR_VERSION}.${PRESENT3D_PATCH_VERSION}") … … 141 146 142 147 ADD_EXECUTABLE(${TARGET_TARGETNAME} ${PLATFORM_SPECIFIC_CONTROL} ${TARGET_SRC} ${TARGET_H}) 143 148 144 149 ENDIF(${IS_COMMANDLINE_APP}) 145 150 SET_TARGET_PROPERTIES(${TARGET_TARGETNAME} PROPERTIES PROJECT_LABEL "${TARGET_LABEL}") 146 151 SET_TARGET_PROPERTIES(${TARGET_TARGETNAME} PROPERTIES DEBUG_POSTFIX ${CMAKE_DEBUG_POSTFIX}) 147 152 SET_TARGET_PROPERTIES(${TARGET_TARGETNAME} PROPERTIES OUTPUT_NAME ${TARGET_NAME}) 148 149 SETUP_LINK_LIBRARIES() 153 154 SETUP_LINK_LIBRARIES() 150 155 151 156 ENDMACRO(SETUP_EXE) … … 161 166 SET(IS_COMMANDLINE_APP 0) 162 167 ENDIF(${ARGC} GREATER 1) 163 168 164 169 SETUP_EXE(${IS_COMMANDLINE_APP}) 165 170 166 171 INSTALL(TARGETS ${TARGET_TARGETNAME} RUNTIME DESTINATION bin ) 167 172 … … 184 189 SET(IS_COMMANDLINE_APP 0) 185 190 ENDIF(${ARGC} GREATER 1) 186 191 187 192 SETUP_EXE(${IS_COMMANDLINE_APP}) 188 189 INSTALL(TARGETS ${TARGET_TARGETNAME} RUNTIME DESTINATION share/OpenSceneGraph/bin ) 193 194 INSTALL(TARGETS ${TARGET_TARGETNAME} RUNTIME DESTINATION share/OpenSceneGraph/bin ) 190 195 191 196 ENDMACRO(SETUP_EXAMPLE)
