IF(WIN32) CMAKE_MINIMUM_REQUIRED(VERSION 2.4.6 FATAL_ERROR) ELSE(WIN32) IF(APPLE) CMAKE_MINIMUM_REQUIRED(VERSION 2.4.6 FATAL_ERROR) IF(${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4 AND ${CMAKE_PATCH_VERSION} LESS 7) MESSAGE("Warning: A critical CMake bug exists in 2.4.6 and below. Trying to build Universal Binaries will result in a compile error that seems unrelated. Either avoid building Universal Binaries by changing the CMAKE_OSX_ARCHITECTURES field to list only your architecture, or upgrade to the current CVS version of CMake or a newer stable version if it exists.") ENDIF(${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4 AND ${CMAKE_PATCH_VERSION} LESS 7) ELSE(APPLE) CMAKE_MINIMUM_REQUIRED(VERSION 2.4.0 FATAL_ERROR) ENDIF(APPLE) ENDIF(WIN32) if(COMMAND cmake_policy) # Works around warnings libraries linked against that don't # have absolute paths (e.g. -lpthreads) cmake_policy(SET CMP0003 NEW) # Works around warnings about escaped quotes in ADD_DEFINITIONS # statements. cmake_policy(SET CMP0005 OLD) endif(COMMAND cmake_policy) PROJECT(MEDCIALVISUALIZATIONPROJECT) SET(MEDCIALVISUALIZATIONPROJECT_MAJOR_VERSION 0) SET(MEDCIALVISUALIZATIONPROJECT_MINOR_VERSION 0) SET(MEDCIALVISUALIZATIONPROJECT_PATCH_VERSION 1) SET(MEDCIALVISUALIZATIONPROJECT_SOVERSION 0) SET(MEDCIALVISUALIZATIONPROJECT_VERSION ${MEDCIALVISUALIZATIONPROJECT_MAJOR_VERSION}.${MEDCIALVISUALIZATIONPROJECT_MINOR_VERSION}.${MEDCIALVISUALIZATIONPROJECT_PATCH_VERSION}) # We want to build SONAMES shared librariess SET(MEDCIALVISUALIZATIONPROJECT_SONAMES TRUE) SET(OPENTHREADS_SONAMES TRUE) SET(OpenThreads_SOURCE_DIR ${MEDCIALVISUALIZATIONPROJECT_SOURCE_DIR}) # We have some custom .cmake scripts not in the official distribution. # Maybe this can be used override existing behavior if needed? SET(CMAKE_MODULE_PATH "${MEDCIALVISUALIZATIONPROJECT_SOURCE_DIR}/CMakeModules;${CMAKE_MODULE_PATH}") # Okay, here's the problem: On some platforms, linking against OpenThreads # is not enough and explicit linking to the underlying thread library # is also required (e.g. FreeBSD). But OpenThreads may be built with different # backends (Pthreads, Sproc, Windows) so we don't know what the underlying # thread library is because some platforms support multiple backends (e.g. # IRIX supports Sproc and Pthreads). Linking all libraries won't work # because the libraries may be incompatible. # So the current solution is to attempt best guess linking and exempt certain # cases. With IRIX, we're going to hope explicit linking to the underlying # library is not necessary. We currently don't case for pthreads on Windows # which might be an issue on things like Cygwin. This may need to be fixed. FIND_PACKAGE(Threads) IF(CMAKE_SYSTEM MATCHES IRIX) # Erase CMAKE_THREAD_LIBS_INIT and hope it works SET(CMAKE_THREAD_LIBS_INIT "" CACHE INTERNAL "") ENDIF(CMAKE_SYSTEM MATCHES IRIX) # Find OpenGL FIND_PACKAGE(OpenGL) IF(UNIX) # Not sure what this will do on Cygwin and Msys # Also, remember OS X X11 is a user installed option so it may not exist. FIND_PACKAGE(X11) # Some Unicies need explicit linkage to the Math library or the build fails. FIND_LIBRARY(MATH_LIBRARY m) ENDIF(UNIX) # Make the headers visible to everything INCLUDE_DIRECTORIES( ${MEDCIALVISUALIZATIONPROJECT_SOURCE_DIR}/include ${OPENGL_INCLUDE_DIR} ) # Common global definitions #ADD_DEFINITIONS(-D) # Platform specific definitions ######################################################################################################## ##### these were settings located in SetupCommon.cmake used in Luigi builds.... find out what are useful ######################################################################################################## #luigi#SET(CMAKE_VERBOSE_MAKEFILE TRUE) #luigi#SET(CMAKE_SKIP_RPATH TRUE) #luigi#SET(CMAKE_SKIP_RULE_DEPENDENCY TRUE) #luigi#IF(UNIX) #luigi# LIST_CONTAINS(contains "g++" ${CMAKE_CXX_COMPILER_LIST}) #luigi# IF (contains) #luigi# MESSAGE(${MY_MESSAGE_DEFAULT} "${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} setting CMAKE_CXX_COMPILER to g++") #luigi# SET(CMAKE_CXX_COMPILER "g++") #luigi# SET(CMAKE_CXX_COMPILER_LOADED 2) #luigi# SET(CMAKE_CXX_COMPILER_WORKS 2) #luigi# ENDIF (contains) #luigi# SET(CMAKE_CXX_FLAGS_RELEASE "-O2") #luigi# SET(CMAKE_CXX_FLAGS_DEBUG "-ggdb -gstabs") #luigi#ENDIF(UNIX) ######################################################################################################## # Common to all platforms: SET(OSG_DIR "" CACHE PATH "set to base osg install path") SET(CMAKE_DEBUG_POSTFIX "d") FIND_PACKAGE(OSG) ################################################################################ # Create bin and lib directories if required IF("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}") FILE(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/bin ${CMAKE_BINARY_DIR}/lib) ENDIF("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}") ################################################################################ # Installation stuff IF(UNIX AND NOT WIN32 AND NOT APPLE) IF(CMAKE_SIZEOF_VOID_P MATCHES "8") SET(LIB_POSTFIX "64" CACHE STRING "suffix for 32/64 dir placement") MARK_AS_ADVANCED(LIB_POSTFIX) ENDIF(CMAKE_SIZEOF_VOID_P MATCHES "8") ENDIF(UNIX AND NOT WIN32 AND NOT APPLE) IF(NOT DEFINED LIB_POSTFIX) SET(LIB_POSTFIX "") ENDIF(NOT DEFINED LIB_POSTFIX) #SET(OUTPUT_BINDIR ${PROJECT_BINARY_DIR}/bin/${CMAKE_SYSTEM_NAME}) SET(OUTPUT_BINDIR ${PROJECT_BINARY_DIR}/bin) MAKE_DIRECTORY(${OUTPUT_BINDIR}) SET(EXECUTABLE_OUTPUT_PATH ${OUTPUT_BINDIR}) #SET(OUTPUT_LIBDIR ${PROJECT_BINARY_DIR}/lib/${CMAKE_SYSTEM_NAME}) SET(OUTPUT_LIBDIR ${PROJECT_BINARY_DIR}/lib) MAKE_DIRECTORY(${OUTPUT_LIBDIR}) SET(LIBRARY_OUTPUT_PATH ${OUTPUT_LIBDIR}) #SET(INSTALL_BINDIR MEDCIALVISUALIZATIONPROJECT/bin) #SET(INSTALL_INCDIR MEDCIALVISUALIZATIONPROJECT/include) #SET(INSTALL_LIBDIR MEDCIALVISUALIZATIONPROJECT/lib) #SET(INSTALL_DOCDIR MEDCIALVISUALIZATIONPROJECT/doc) ################################################################################ # User Options # Expose CMAKE_INCLUDE_PATH and CMAKE_LIBARY_PATH to the GUI so users # may set these values without needing to manipulate the environment. SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} CACHE STRING "You may add additional search paths here. Use ; to separate multiple paths.") SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} CACHE STRING "You may add additional search paths here. Use ; to separate multiple paths.") # We are proposing that a new variable called CMAKE_PREFIX_PATH be introduced # to CMake to compliment CMAKE_INCLUDE_PATH and CMAKE_LIBRARY_PATH. # A formal feature request has been submited to CMake, Bug #4947. # It is intended for those users who have common prefixes for their INCLUDE # and LIBRARY locations. So if users have headers in /usr/local/include # and libraries in /usr/local/lib, the common prefix is /usr/local. # It should also cover the case where headers and libraries are # in the same directory. # Our proposal expects that FIND_* commands will automatically search for # CMAKE_PREFIX_PATH right after CMAKE_INCLUDE_PATH or CMAKE_LIBRARY_PATH. # Obviously, since CMake does not currently support this, we must write # our Find*.cmake modules to explicitly support this. Otherwise, this variable # will have no impact. # This is unofficial so this may be removed or changed at anytime. SET(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} CACHE STRING "(EXPERIMENTAL) You may add additional search paths here. Use ; to separate multiple paths.") # Dynamic vs Static Linking OPTION(DYNAMIC_MEDCIALVISUALIZATIONPROJECT "Set to ON to build MEDCIALVISUALIZATIONPROJECT for dynamic linking. Use OFF for static." ON) IF (DYNAMIC_MEDCIALVISUALIZATIONPROJECT) SET(MEDCIALVISUALIZATIONPROJECT_USER_DEFINED_DYNAMIC_OR_STATIC "SHARED") ELSE (DYNAMIC_MEDCIALVISUALIZATIONPROJECT) SET(MEDCIALVISUALIZATIONPROJECT_USER_DEFINED_DYNAMIC_OR_STATIC "STATIC") ENDIF(DYNAMIC_MEDCIALVISUALIZATIONPROJECT) INCLUDE(MvpMacroUtils) # MVP Core # ADD_SUBDIRECTORY(src) # MVP Applications OPTION(BUILD_APPLICATIONS "Enable to build MVP Applications (e.g. osgdem)" ON) IF (BUILD_APPLICATIONS) ADD_SUBDIRECTORY(applications) ENDIF(BUILD_APPLICATIONS) # Set defaults for Universal Binaries. We want 32-bit Intel/PPC on 10.4 # and 32/64-bit Intel/PPC on >= 10.5. Anything <= 10.3 doesn't support. IF(APPLE) # These are just defaults/recommendations, but how we want to build # out of the box. But the user needs to be able to change these options. # So we must only set the values the first time CMake is run, or we # will overwrite any changes the user sets. # FORCE is used because the options are not reflected in the UI otherwise. # Seems like a good place to add version specific compiler flags too. IF(NOT MVP_CONFIG_HAS_BEEN_RUN_BEFORE) # This is really fragile, but CMake doesn't provide the OS system # version information we need. (Darwin versions can be changed # independently of OS X versions.) # It does look like CMake handles the CMAKE_OSX_SYSROOT automatically. IF(EXISTS /Developer/SDKs/10.5.sdk) SET(CMAKE_OSX_ARCHITECTURES "ppc;i386;ppc64;x86_64" CACHE STRING "Build architectures for OSX" FORCE) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=10.5 -ftree-vectorize -fvisibility-inlines-hidden" CACHE STRING "Flags used by the compiler during all build types." FORCE) ELSE(EXISTS /Developer/SDKs/10.5.sdk) IF(EXISTS /Developer/SDKs/MacOSX10.4u.sdk) SET(CMAKE_OSX_ARCHITECTURES "ppc;i386" CACHE STRING "Build architectures for OSX" FORCE) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=10.4 -ftree-vectorize -fvisibility-inlines-hidden" CACHE STRING "Flags used by the compiler during all build types." FORCE) ELSE(EXISTS /Developer/SDKs/MacOSX10.4u.sdk) # No Universal Binary support # Should break down further to set the -mmacosx-version-min, # but the SDK detection is too unreliable here. ENDIF(EXISTS /Developer/SDKs/MacOSX10.4u.sdk) ENDIF(EXISTS /Developer/SDKs/10.5.sdk) ENDIF(NOT MVP_CONFIG_HAS_BEEN_RUN_BEFORE) OPTION(MVP_BUILD_APPLICATION_BUNDLES "Enable the building of applications and examples as OSX Bundles" OFF) ENDIF(APPLE) # This needs to be run very last so other parts of the scripts can take # advantage of this. IF(NOT MVP_CONFIG_HAS_BEEN_RUN_BEFORE) SET(MVP_CONFIG_HAS_BEEN_RUN_BEFORE 1 CACHE INTERNAL "Flag to track whether this is the first time running CMake or if CMake has been configured before") ENDIF(NOT MVP_CONFIG_HAS_BEEN_RUN_BEFORE) #----------------------------------------------------------------------------- ### uninstall target #----------------------------------------------------------------------------- CONFIGURE_FILE( "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY) ADD_CUSTOM_TARGET(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")