slicPandora
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}" )