Print

Print


Commit in slicPandora on MAIN
CMakeLists.txt+53-2691.7 -> 1.8
rewritten CMake file based on Marlin

slicPandora
CMakeLists.txt 1.7 -> 1.8
diff -u -r1.7 -r1.8
--- CMakeLists.txt	16 Feb 2011 08:16:52 -0000	1.7
+++ CMakeLists.txt	4 Mar 2011 00:05:42 -0000	1.8
@@ -1,288 +1,72 @@
 ########################################################
-# cmake file for building Marlin example Package
-# @author Jan Engels, DESY
+# CMake file for building slicPandora, which is 
+# based on Marlin's CMakeLists.txt by Jan Engels, DESY.
+#
+# @author Jeremy McCormick, SLAC
 ########################################################
 
+# --- Check for Recent CMake ----
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
 
-########################################################
-# CMake compatibility issues: don't modify this, please!
-CMAKE_MINIMUM_REQUIRED( VERSION 2.4.6 )
-#SET( CMAKE_BACKWARDS_COMPATIBILITY 2.4.6 )
-MARK_AS_ADVANCED(CMAKE_BACKWARDS_COMPATIBILITY)
-# allow more human readable "if then else" constructs
-SET( CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS TRUE )
-########################################################
-
-
-
-####################################################################################################
-# User section: modify as needed
-####################################################################################################
-
-
-# project name
-PROJECT( SlicPandora )
-
-# project version
-SET( ${PROJECT_NAME}_MAJOR_VERSION 1 )
-SET( ${PROJECT_NAME}_MINOR_VERSION 0 )
-SET( ${PROJECT_NAME}_PATCH_LEVEL 0 )
-
-
-### SETTINGS #################################################################
-
-# project options
-OPTION( BUILD_SHARED_LIBS "Set to OFF to build static libraries" ON )
-OPTION( BUILD_32BIT_COMPATIBLE "Set to ON to build in 32 bit compatibility mode" ON )
-OPTION( INSTALL_DOC "Set to OFF to skip build/install Documentation" ON )
-
-# project dependencies
-# e.g. SET( ${PROJECT_NAME}_DEPENDS "Marlin MarlinUtil LCIO GEAR CLHEP GSL RAIDA ROOT" )
-#SET( ${PROJECT_NAME}_DEPENDS "LCIO PandoraPFANew ROOT" )
-
-SET( ${PROJECT_NAME}_DEPENDS "LCIO ROOT" )
-
-IF( APPLE )
-    LIST(APPEND ${PROJECT_NAME}_DEPENDS "streamlog")
-ENDIF() 
-
-# set default cmake build type to RelWithDebInfo
-# possible options are: None Debug Release RelWithDebInfo MinSizeRel
-IF( NOT CMAKE_BUILD_TYPE )
-    SET( CMAKE_BUILD_TYPE "RelWithDebInfo" )
-ENDIF()
-
-# set default install prefix to project root directory
-IF( CMAKE_INSTALL_PREFIX STREQUAL "/usr/local" )
-    SET( CMAKE_INSTALL_PREFIX "${PROJECT_SOURCE_DIR}" )
-ENDIF()
+# ---- Project Info ----
+PROJECT( slicPandora )
 
-
-MESSAGE( STATUS "PROJECT_SOURCE_DIR : ${PROJECT_SOURCE_DIR}" )
-#---------------- 32/64 bit issues ---------------------------------------
-IF( CMAKE_SIZEOF_VOID_P EQUAL 4 )
-    MESSAGE( STATUS "32 bit architecture detected" )
-ENDIF()
-
-IF( CMAKE_SIZEOF_VOID_P EQUAL 8 )
-    MESSAGE( STATUS "64 bit architecture detected" )
-
-    IF( BUILD_32BIT_COMPATIBLE )
-        IF( COMMAND SET_PROPERTY )
-            SET_PROPERTY(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS 0)
-            SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32" )
-        ELSE()
-            MESSAGE( FATAL_ERROR "to build in 32 bit compatibility mode you need cmake >= 2.6" )
-        ENDIF()
-        MESSAGE( STATUS "Build in 32 bit compatibility mode" )
-    ELSE()
-        MESSAGE( STATUS "Build in native 64 bit mode" )
+SET( ${PROJECT_NAME}_VERSION_MAJOR 1 )
+SET( ${PROJECT_NAME}_VERSION_MINOR 0 )
+SET( ${PROJECT_NAME}_VERSION_PATCH 0 )
+
+# ---- Find and Setup External Packages ----
+FIND_PACKAGE( ILCUTIL COMPONENTS ILCSOFT_CMAKE_MODULES REQUIRED )
+
+INCLUDE( ilcsoft_default_settings )
+
+FIND_PACKAGE( ROOT REQUIRED )
+FIND_PACKAGE( LCIO REQUIRED )
+FIND_PACKAGE( PandoraPFANew REQUIRED )
+FIND_PACKAGE( PandoraMonitoring REQUIRED )
+
+FOREACH( pkg ROOT LCIO PandoraMonitoring PandoraPFANew )
+    IF ( ${pkg}_FOUND )
+        INCLUDE_DIRECTORIES( ${${pkg}_INCLUDE_DIRS} )
+        LINK_LIBRARIES( ${${pkg}_LIBRARIES} ) 
+        ADD_DEFINITIONS( ${${PKG}_DEFINITIONS} )
     ENDIF()
-ENDIF()
-#-------------------------------------------------------------------------
-
-
-### INCLUDES #################################################################
-
-#include directories
-INCLUDE_DIRECTORIES( "${PROJECT_SOURCE_DIR}/include")
-INCLUDE_DIRECTORIES( "${PandoraPFANew_HOME}/include")
-INCLUDE_DIRECTORIES( "${PandoraPFANew_HOME}/Framework/include/")
-INCLUDE_DIRECTORIES( "${PandoraPFANew_HOME}/FineGranularityContent/include/")
-INCLUDE_DIRECTORIES( "${PandoraMonitoring_HOME}/include")
-
-# install include files
-INSTALL( DIRECTORY "${PROJECT_SOURCE_DIR}/include"
-        DESTINATION .
-        PATTERN "*~" EXCLUDE
-        PATTERN ".svn*" EXCLUDE
-        PATTERN "*#*" EXCLUDE
-        PATTERN ".#*" EXCLUDE
-        PATTERN "*CVS*" EXCLUDE )
-
-### SOURCES ##################################################################
-
-# require proper c++
-# FIXME -pedantic flag crashes under sl4
-ADD_DEFINITIONS( "-Wall -ansi" )
-
-# get list of all source files
-AUX_SOURCE_DIRECTORY( src library_sources )
-
-# Add link libraries.
-LINK_DIRECTORIES( "${PandoraPFANew_HOME}/lib" )
-LINK_DIRECTORIES( "${PandoraMonitoring_HOME}/lib" )
-
-#SET(PROGRAMS JobManagerTest PandoraFrontend SimpleGeometryLoader )
-SET(PROGRAMS PandoraFrontend )
-FOREACH(program ${PROGRAMS})
-  ADD_EXECUTABLE(${program} ${PROJECT_SOURCE_DIR}/tests/${program}.cpp)
-  TARGET_LINK_LIBRARIES(${program} lib_${PROJECT_NAME})
-ENDFOREACH(program)
-
-# PandoraPFANew libraries.
-TARGET_LINK_LIBRARIES( PandoraFrontend PandoraFramework PandoraFineGranularityContent PandoraKMeansContent )
+ENDFOREACH()
 
-# PandoraMonitoring dep.
-FIND_PACKAGE( PandoraMonitoring QUIET )
 IF( PandoraMonitoring_FOUND )
     ADD_DEFINITIONS( -DMONITORING )
-    LINK_LIBRARIES( "${PandoraMonitoring_LIBRARIES}" )
 ELSE()
-    MESSAGE( STATUS "PandoraMonitoring not found -- please set PandoraMonitoring_DIR to activate PandoraMonitoring" )
+    MESSAGE( STATUS "PandoraMonitoring package was not found -- please set PandoraMonitoring_DIR to activate PandoraMonitoring." )
 ENDIF()
 
-### DOCUMENTATION ############################################################
+SET( slicPandora_DEPENDS_INCLUDE_DIRS ${LCIO_INCLUDE_DIRS} ${PandoraPFANew_INCLUDE_DIRS} )
+SET( slicPandora_DEPENDS_LIBRARY_DIRS ${LCIO_LIBRARY_DIRS} ${PandoraPFANew_INCLUDE_DIRS} )
+SET( slicPandora_DEPENDS_LIBRARIES ${LCIO_LIBRARIES} ${ROOT_LIBRARIES} ${PandoraMonitoring_LIBRARIES} ${PandoraPFANew_LIBRARIES} )
 
-FIND_PACKAGE( Doxygen )
-IF( DOXYGEN_FOUND )
+INCLUDE_DIRECTORIES( ${slicPandora_DEPENDS_INCLUDE_DIRS} )
+LINK_LIBRARIES( ${slicPandora_DEPENDS_LIBRARIES} )
 
-    ADD_CUSTOM_COMMAND(
-        OUTPUT  "${PROJECT_SOURCE_DIR}/doc/html"
-        COMMAND "${DOXYGEN_EXECUTABLE}"
-        WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/doc"
-        COMMENT "Building API Documentation..."
-        VERBATIM )
-
-    # add doc target
-    ADD_CUSTOM_TARGET( doc DEPENDS
-        "${PROJECT_SOURCE_DIR}/doc/html" )
-ELSE()
-    MESSAGE( STATUS "Doxygen not found in your system!!" )
-    IF( INSTALL_DOC )
-        MESSAGE( STATUS "INSTALL_DOC forced to OFF" )
-        SET( INSTALL_DOC OFF )
-    ENDIF()
-ENDIF()
+# ---- Include Dir ----
+INCLUDE_DIRECTORIES( ./include )
+INSTALL_DIRECTORY( ./include DESTINATION . FILES_MATCHING PATTERN "*.h" )
 
-# install documentation
-IF( INSTALL_DOC )
-    # make sure doxygen is executed (make doc) before make install
-    INSTALL( CODE "EXEC_PROGRAM(${CMAKE_BUILD_TOOL} ${PROJECT_BINARY_DIR} ARGS doc)" )
-    # install documentation
-    INSTALL( DIRECTORY "${PROJECT_SOURCE_DIR}/doc"
-            DESTINATION .
-            PATTERN "*CVS*" EXCLUDE )
-ENDIF()
+# ---- Compiler Flags ----
+ADD_DEFINITIONS( "-Wall -ansi -pedantic" )
+ADD_DEFINITIONS( "-Wno-long-long" )
 
+# ---- Source Directory ----
+AUX_SOURCE_DIRECTORY( ./src library_sources )
 
-##########################################################################################
-# End of User section: please try not to modify below this line
-##########################################################################################
-
-
-# library *nix style versioning
-SET( ${PROJECT_NAME}_SOVERSION "${${PROJECT_NAME}_MAJOR_VERSION}.${${PROJECT_NAME}_MINOR_VERSION}" )
-SET( ${PROJECT_NAME}_VERSION "${${PROJECT_NAME}_SOVERSION}.${${PROJECT_NAME}_PATCH_LEVEL}" )
-
-# add install path to the rpath list
-SET( CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib" )
-MARK_AS_ADVANCED( CMAKE_INSTALL_RPATH )
-
-# add install path to the rpath list (apple)
-IF( APPLE )
-    SET( CMAKE_INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib" )
-    MARK_AS_ADVANCED( CMAKE_INSTALL_NAME_DIR )
-ENDIF()
+# ---- Shared Lib ----
+ADD_SHARED_LIBRARY( ${PROJECT_NAME} ${library_sources} )
+INSTALL_SHARED_LIBRARY( ${PROJECT_NAME} DESTINATION lib )
 
-# append link pathes to rpath list
-SET( CMAKE_INSTALL_RPATH_USE_LINK_PATH 1 )
-MARK_AS_ADVANCED( CMAKE_INSTALL_RPATH_USE_LINK_PATH )
-
-# output directories
-SET( EXECUTABLE_OUTPUT_PATH "${PROJECT_BINARY_DIR}/bin" CACHE PATH
-    "EXECUTABLE_OUTPUT_PATH" FORCE )
-SET( LIBRARY_OUTPUT_PATH "${PROJECT_BINARY_DIR}/lib" CACHE PATH
-    "LIBRARY_OUTPUT_PATH" FORCE )
-MARK_AS_ADVANCED( EXECUTABLE_OUTPUT_PATH LIBRARY_OUTPUT_PATH )
-
-# DEPENDENCIES: this code has to be placed before adding any library or
-# executable so that these are linked properly against the dependencies
-IF( DEFINED ${PROJECT_NAME}_DEPENDS OR DEFINED BUILD_WITH OR DEFINED LINK_WITH )
-    IF( NOT DEFINED CMAKE_MODULE_PATH )
-        MESSAGE( FATAL_ERROR "CMAKE_MODULE_PATH not set! Set it with: "
-            "-DCMAKE_MODULE_PATH=\"/path_to_ilcsoft/CMakeModules\"" )
-    ENDIF()
-    # load macro
-    INCLUDE( "MacroCheckDeps" )
-    CHECK_DEPS()
-ENDIF()
-
-# LIBRARY
-ADD_LIBRARY( lib_${PROJECT_NAME} ${library_sources} )
-# create symbolic lib target for calling target lib_XXX
-ADD_CUSTOM_TARGET( lib DEPENDS lib_${PROJECT_NAME} )
-# change lib_target properties
-SET_TARGET_PROPERTIES( lib_${PROJECT_NAME} PROPERTIES
-    # create *nix style library versions + symbolic links
-    VERSION ${${PROJECT_NAME}_VERSION}
-    SOVERSION ${${PROJECT_NAME}_SOVERSION}
-    # allow creating static and shared libs without conflicts
-    CLEAN_DIRECT_OUTPUT 1
-    # avoid conflicts between library and binary target names
-    OUTPUT_NAME ${PROJECT_NAME} )
-
-
-# install library
-INSTALL( TARGETS lib_${PROJECT_NAME} DESTINATION lib PERMISSIONS
-        OWNER_READ OWNER_WRITE OWNER_EXECUTE
-        GROUP_READ GROUP_EXECUTE
-        WORLD_READ WORLD_EXECUTE )
-
-# create uninstall configuration file 
-CONFIGURE_FILE( "${PROJECT_SOURCE_DIR}/cmake_uninstall.cmake.in"
-                "${PROJECT_BINARY_DIR}/cmake_uninstall.cmake"
-                IMMEDIATE @ONLY )
-
-# create uninstall target
-ADD_CUSTOM_TARGET( uninstall
-  "${CMAKE_COMMAND}" -P "${PROJECT_BINARY_DIR}/cmake_uninstall.cmake" )
-
-# create configuration file from .in file
-CONFIGURE_FILE( "${PROJECT_SOURCE_DIR}/${PROJECT_NAME}Config.cmake.in"
-                "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" @ONLY )
-
-# install configuration file
-INSTALL( FILES "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" DESTINATION . )
-
-# display status message for important variables
-MESSAGE( STATUS )
-MESSAGE( STATUS "-------------------------------------------------------------------------------" )
-MESSAGE( STATUS "BUILD_SHARED_LIBS = ${BUILD_SHARED_LIBS}" )
-MESSAGE( STATUS "CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX}" )
-MESSAGE( STATUS "CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}" )
-MESSAGE( STATUS "CMAKE_MODULE_PATH = ${CMAKE_MODULE_PATH}" )
-IF( CMAKE_SIZEOF_VOID_P EQUAL 8 )
-    MESSAGE( STATUS "BUILD_32BIT_COMPATIBLE = ${BUILD_32BIT_COMPATIBLE}" )
-ENDIF()
-MESSAGE( STATUS "${PROJECT_NAME}_DEPENDS = \"${${PROJECT_NAME}_DEPENDS}\"" )
-MESSAGE( STATUS "BUILD_WITH = \"${BUILD_WITH}\"" )
-MESSAGE( STATUS "INSTALL_DOC = ${INSTALL_DOC}" )
-MESSAGE( STATUS "Change a value with: cmake -D<Variable>=<Value>" )
-MESSAGE( STATUS "-------------------------------------------------------------------------------" )
-MESSAGE( STATUS )
-
-# force some variables that could be defined in the command line
-# to be written to cache
-SET( BUILD_SHARED_LIBS "${BUILD_SHARED_LIBS}" CACHE BOOL
-    "Set to OFF to build static libraries" FORCE )
-SET( CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" CACHE PATH
-    "Where to install ${PROJECT_NAME}" FORCE )
-SET( CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING
-    "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE )
-SET( BUILD_32BIT_COMPATIBLE "${BUILD_32BIT_COMPATIBLE}" CACHE BOOL
-    "Set to ON to build 32 bit compatible" FORCE )
-SET( CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" CACHE PATH
-    "Path to custom CMake Modules" FORCE )
-SET( INSTALL_DOC "${INSTALL_DOC}" CACHE BOOL
-    "Set to OFF to skip build/install Documentation" FORCE )
-
-# export build settings
-INCLUDE( CMakeExportBuildSettings )
-CMAKE_EXPORT_BUILD_SETTINGS( "${PROJECT_NAME}BuildSettings.cmake" )
-INSTALL( FILES "${PROJECT_BINARY_DIR}/${PROJECT_NAME}BuildSettings.cmake" DESTINATION lib/cmake )
-
-# export library dependencies (keep this as the last line in the file)
-EXPORT_LIBRARY_DEPENDENCIES( "${PROJECT_NAME}LibDeps.cmake" )
-INSTALL( FILES "${PROJECT_BINARY_DIR}/${PROJECT_NAME}LibDeps.cmake" DESTINATION lib/cmake )
+# ---- Executable ----
+ADD_EXECUTABLE( bin_${PROJECT_NAME} ./tests/PandoraFrontend )
+SET_TARGET_PROPERTIES( bin_${PROJECT_NAME} PROPERTIES OUTPUT_NAME PandoraFrontend )
+TARGET_LINK_LIBRARIES( bin_${PROJECT_NAME} slicPandora ) 
+INSTALL( TARGETS bin_${PROJECT_NAME} DESTINATION bin )
 
+#MESSAGE( STATUS "include_dirs: ${slicPandora_DEPENDS_INCLUDE_DIRS}" )
+#MESSAGE( STATUS "lib dirs: ${slicPandora_DEPENDS_LIBRARY_DIRS}" )
+#MESSAGE( STATUS "libs: ${slicPandora_DEPENDS_LIBRARIES}" )
CVSspam 0.2.8