lcio
diff -u -r1.51 -r1.51.2.1
--- CMakeLists.txt 13 Dec 2008 13:13:49 -0000 1.51
+++ CMakeLists.txt 7 Jul 2009 12:48:42 -0000 1.51.2.1
@@ -29,6 +29,7 @@
OPTION( BUILD_LCIO_TESTS "Set to ON to build LCIO tests under src/cpp/src/TESTS" OFF )
OPTION( BUILD_LCIO_EXAMPLES "Set to ON to build LCIO examples under src/cpp/src/EXAMPLES" OFF )
OPTION( BUILD_F77_TESTJOBS "Set to ON to build LCIO F77 testjobs" OFF )
+OPTION( BUILD_ROOTIO "Set to ON to build ROOT I/O" OFF )
OPTION( BUILD_WITH_DCAP "Set to ON to build LCIO with dcap (dCache) support" OFF )
OPTION( INSTALL_DOC "Set to OFF to skip build/install Documentation" ON )
OPTION( INSTALL_JAR "Set to OFF to skip build/install lcio.jar" ON )
@@ -377,6 +378,7 @@
MESSAGE( STATUS "BUILD_LCIO_TESTS = ${BUILD_LCIO_TESTS}" )
MESSAGE( STATUS "BUILD_LCIO_EXAMPLES = ${BUILD_LCIO_EXAMPLES}" )
MESSAGE( STATUS "BUILD_F77_TESTJOBS = ${BUILD_F77_TESTJOBS}" )
+MESSAGE( STATUS "BUILD_ROOTIO = ${BUILD_ROOTIO}" )
MESSAGE( STATUS "BUILD_WITH_DCAP = ${BUILD_WITH_DCAP}" )
MESSAGE( STATUS "INSTALL_DOC = ${INSTALL_DOC}" )
MESSAGE( STATUS "INSTALL_JAR = ${INSTALL_JAR}" )
@@ -398,6 +400,8 @@
"Set to ON to build LCIO examples under src/cpp/src/EXAMPLES" FORCE )
SET( BUILD_F77_TESTJOBS "${BUILD_F77_TESTJOBS}" CACHE BOOL
"Set to ON to build LCIO F77 testbobs" FORCE )
+SET( BUILD_ROOTIO "${BUILD_ROOTIO}" CACHE BOOL
+ "Set to ON to build LCIO ROOT I/O" FORCE )
SET( BUILD_WITH_DCAP "${BUILD_WITH_DCAP}" CACHE BOOL
"Set to ON to build LCIO with dcap support (dCache)" FORCE )
SET( DCAP_HOME "${DCAP_HOME}" CACHE PATH
lcio/src/cpp
diff -u -r1.22 -r1.22.2.1
--- CMakeLists.txt 27 Nov 2008 16:48:54 -0000 1.22
+++ CMakeLists.txt 7 Jul 2009 12:48:43 -0000 1.22.2.1
@@ -116,6 +116,144 @@
./src/UTIL/PIDHandler.cc
)
+
+#------ root dict -----------------------------
+IF( BUILD_ROOTIO )
+
+#-----------------------------------------------------------------
+
+
+#SET( CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR} )
+#FIND_PACKAGE( ROOT )
+
+ INCLUDE( ${PROJECT_SOURCE_DIR}/FindROOT.cmake )
+
+
+ IF( ROOT_FOUND )
+
+
+ SET( ENV{ROOTSYS} "${ROOT_HOME}" )
+ SET( ENV{PATH} $ENV{ROOTSYS}/bin:$ENV{PATH} )
+ SET( ENV{LD_LIBRARY_PATH} $ENV{ROOTSYS}/lib:$ENV{LD_LIBRARY_PATH} )
+
+
+ #TODO test ROOT_FOUND and ${ROOT_HOME}/bin/rootcint
+
+ # list of headers
+ FILE( GLOB_RECURSE lcio_headers include/*.h )
+
+ # list of headers to exclude
+ FILE( GLOB_RECURSE exclude_headers include/empty_ignore.h include/SIO/*.h include/CPPFORT/*.h )
+
+ # remove items to exclude
+ LIST( REMOVE_ITEM lcio_headers ${exclude_headers} )
+
+ SET( DICT_OUTPUT_DIR "${PROJECT_BINARY_DIR}/dict" )
+
+ # create output directory
+# ADD_CUSTOM_COMMAND(
+# OUTPUT "${DICT_OUTPUT_DIR}"
+# COMMAND "${CMAKE_COMMAND}"
+# ARGS -E make_directory "${DICT_OUTPUT_DIR}"
+# COMMENT "create directory ${DICT_OUTPUT_DIR}"
+# )
+ file(MAKE_DIRECTORY ${DICT_OUTPUT_DIR})
+
+
+
+ SET( dict_lib_srcs )
+
+ # FIXME variables must be set by FindROOT.cmake
+ #SET( cint_script "${PROJECT_BINARY_DIR}/rootcint.cmake" )
+ #FILE( WRITE "${cint_script}" "# little script to run rootcint\n" )
+ #FILE( APPEND "${cint_script}" "SET( ENV{ROOTSYS} ${ROOT_HOME} )\n" )
+ #FILE( APPEND "${cint_script}" "SET( ENV{PATH} \$ENV{ROOTSYS}/bin:\$ENV{PATH} )\n" )
+ #FILE( APPEND "${cint_script}" "SET( ENV{LD_LIBRARY_PATH} \$ENV{ROOTSYS}/lib:\$ENV{LD_LIBRARY_PATH} )\n" )
+ #FILE( APPEND "${cint_script}" "EXEC_PROGRAM( rootcint -f \${dict_src_file} -c -DHANDLE_LCIO_EXCEPTIONS=IGNORED_FOR_CINT -Iinclude \${lcio_hdr_rel_path} \${dict_hdr_file} )\n" )
+
+
+ FOREACH( lcio_hdr ${lcio_headers} )
+
+ # get the relative path
+ #FILE( RELATIVE_PATH lcio_hdr_rel_path "${PROJECT_SOURCE_DIR}" ${lcio_hdr} )
+ #STRING( REPLACE "${CMAKE_CURRENT_SOURCE_DIR}" "" lcio_hdr_rel_path ${lcio_hdr} )
+ FILE( RELATIVE_PATH lcio_hdr_rel_path "${CMAKE_CURRENT_SOURCE_DIR}" ${lcio_hdr} )
+
+ # generate a basename from the header + relative path, e.g.:
+ # include/EVENT/TrackerPulse.h -->> include_EVENT_TrackerPulse
+ STRING( REPLACE "/" "_" dict_basename ${lcio_hdr_rel_path} )
+ STRING( REPLACE ".h" "" dict_basename ${dict_basename} )
+
+
+ SET( dict_hdr "${dict_basename}_Linkdef.h" )
+ SET( dict_hdr_file "${DICT_OUTPUT_DIR}/${dict_hdr}" )
+
+ SET( dict_src "${dict_basename}_dict.cxx" )
+ SET( dict_src_file "${DICT_OUTPUT_DIR}/${dict_src}" )
+
+ # generate dict header file
+ ADD_CUSTOM_COMMAND(
+ OUTPUT ${dict_hdr_file}
+ COMMAND ${CMAKE_COMMAND}
+ ARGS -E echo "\\#pragma link C++ defined_in \\\"${lcio_hdr_rel_path}\\\"\; >${dict_hdr}"
+ #ARGS -E echo "\\#pragma link C++ defined_in ${lcio_hdr_rel_path}\; >${dict_hdr}"
+ WORKING_DIRECTORY "${DICT_OUTPUT_DIR}"
+ DEPENDS ${lcio_hdr} # ${DICT_OUTPUT_DIR}
+ COMMENT "generating ${dict_hdr}"
+ )
+
+ # generate dict source file
+ ADD_CUSTOM_COMMAND(
+ OUTPUT ${dict_src_file}
+ #COMMAND ${ROOT_HOME}/bin/rootcint
+ #COMMAND $ENV{ROOTSYS}/bin/rootcint
+ COMMAND rootcint
+ ARGS -f ${dict_src_file} -c -DHANDLE_LCIO_EXCEPTIONS=IGNORED_FOR_CINT -Iinclude ${lcio_hdr_rel_path} ${dict_hdr_file}
+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
+ DEPENDS ${dict_hdr_file}
+ COMMENT "generating ${dict_src}"
+ )
+
+ LIST( APPEND dict_lib_srcs ${dict_src_file} )
+ ENDFOREACH()
+
+ INCLUDE_DIRECTORIES( "${DICT_OUTPUT_DIR}" )
+ INCLUDE_DIRECTORIES( "${ROOT_INCLUDE_DIRS}" )
+ # FIXME next line should not be needed
+ # xxx_dict.h files should have:
+ # #include "IOIMPL/TrackerRawDataIOImpl.h"
+ # instead of:
+ # #include "include/IOIMPL/TrackerRawDataIOImpl.h"
+ INCLUDE_DIRECTORIES( "${CMAKE_CURRENT_SOURCE_DIR}" )
+
+ ADD_LIBRARY( lib_LCIODICT ${dict_lib_srcs} )
+
+ SET_TARGET_PROPERTIES( lib_LCIODICT PROPERTIES
+ # create *nix style library versions + symbolic links
+ VERSION ${LCIO_VERSION}
+ SOVERSION ${LCIO_SOVERSION}
+ # allow creating static and shared libs without conflicts
+ CLEAN_DIRECT_OUTPUT 1
+ # avoid conflicts between library and binary target names
+ OUTPUT_NAME lcioDict
+ )
+
+ ADD_CUSTOM_TARGET( dict DEPENDS lib_LCIODICT )
+
+
+ ELSE( ROOT_FOUND )
+
+ MESSAGE( STATUS " NO ROOT found :-( " )
+
+
+ ENDIF( ROOT_FOUND )
+ENDIF( BUILD_ROOTIO )
+#----------------------------------------------
+
+
+
+
+
#------ require proper C++ -------
ADD_DEFINITIONS( "-Wall -ansi -pedantic" )
#----- need long long for int64 for now ------
@@ -208,8 +346,21 @@
ELSE()
MESSAGE( STATUS "Warning: didn't find curses and/or readline libraries. Cannot build lsh" )
ENDIF()
+
+
+
+# INCLUDE( ${PROJECT_SOURCE_DIR}/FindROOT.cmake )
+# INCLUDE( ${PROJECT_SOURCE_DIR}/MacroLoadPackage.cmake )
+# SET( CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR} )
+# LOAD_PACKAGE( ROOT REQUIRED )
+
ENDIF()
+IF( BUILD_ROOTIO )
+ ADD_LCIO_BIN( rootio )
+ TARGET_LINK_LIBRARIES( bin_rootio lib_LCIODICT )
+ TARGET_LINK_LIBRARIES( bin_rootio ${ROOT_LIBRARIES} )
+ENDIF( BUILD_ROOTIO )