diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..d11d19b20 --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +# Generated Files +config/lcio.properties +doc/index.html +doc/lcio.xml +pom.xml +src/aid/EVENT/LCIO.aid +src/cpp/include/lcio.h +src/cpp/include/pre-generated/EVENT/LCIO.h +src/latex/manual/manual.tex + +# Default folder +/build +/bin diff --git a/CMakeLists.txt b/CMakeLists.txt index 9ad4c5d40..2c991b0ac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,20 +2,41 @@ # cmake file for building LCIO # @author Frank Gaede, DESY # @author Jan Engels, DESY -CMAKE_MINIMUM_REQUIRED( VERSION 2.8 FATAL_ERROR ) +cmake_minimum_required( VERSION 3.0 FATAL_ERROR ) ######################################################## - - # project name -PROJECT( LCIO ) - - +project( LCIO ) # project version SET( LCIO_VERSION_MAJOR 2 ) SET( LCIO_VERSION_MINOR 14 ) SET( LCIO_VERSION_PATCH 2 ) +# lcio.jar +option( INSTALL_JAR "Set to OFF to skip build/install lcio.jar" OFF ) +option( BUILD_APPS "Set to OFF to skip build/install of apps" ON ) +# allow C++ only builds +option( LCIO_GENERATE_HEADERS "Set to OFF to use pre-generated headers (no java needed)" OFF) +option( BUILD_ROOTDICT "Set to ON to build ROOT dictionary" OFF ) +option( BUILD_FORTRAN "Set to OFF to skip build/install Fortran codes" ON ) +option( BUILD_F77_TESTJOBS "Set to ON to build LCIO F77 testjobs" OFF ) +option( INSTALL_DOC "Set to OFF to skip build/install Documentation" OFF ) +option( BUILD_LCIO_EXAMPLES "Set to ON to build LCIO examples" ON ) +option( INSTALL_PYTHON "Set to ON to install python codes" ON) + +include(CheckLanguage) + +if(BUILD_FORTRAN OR BUILD_F77_TESTJOBS) + check_language(Fortran) + if(CMAKE_Fortran_COMPILER) + enable_language(Fortran) + else() + message(STATUS "No Fortran support !!!") + set(BUILD_FORTRAN OFF) + set(BUILD_F77_TESTJOBS OFF) + endif() +endif() + ### set correct LCIO version in relevant files ############################ configure_file ( @@ -66,12 +87,6 @@ IF( NOT CMAKE_CXX_STANDARD ) ENDIF() SET( CMAKE_CXX_STANDARD_REQUIRED ON ) -# lcio.jar -OPTION( INSTALL_JAR "Set to OFF to skip build/install lcio.jar" OFF ) - -# allow C++ only builds -OPTION( LCIO_GENERATE_HEADERS "Set to OFF to use pre-generated headers (no java needed)" OFF) - IF( INSTALL_JAR ) INSTALL( CODE "EXECUTE_PROCESS( COMMAND ${CMAKE_BUILD_TOOL} jar)" ) INSTALL( FILES "${PROJECT_SOURCE_DIR}/lib/lcio.jar" DESTINATION lib )# OPTIONAL ) @@ -79,8 +94,10 @@ ENDIF() # install python stuff (for out-of-source-build) -INSTALL( DIRECTORY "${PROJECT_SOURCE_DIR}/src/python/" DESTINATION python ) -INSTALL( DIRECTORY "${PROJECT_SOURCE_DIR}/examples/python/" DESTINATION python/examples ) +if( INSTALL_PYTHON ) + install( DIRECTORY "${PROJECT_SOURCE_DIR}/src/python/" DESTINATION python ) + install( DIRECTORY "${PROJECT_SOURCE_DIR}/examples/python/" DESTINATION python/examples ) +endif() # JAVA (needed to generate c++ headers) @@ -94,10 +111,16 @@ endif() # ROOT -OPTION( BUILD_ROOTDICT "Set to ON to build ROOT dictionary" OFF ) -IF( BUILD_ROOTDICT ) - FIND_PACKAGE( ROOT 6.04 REQUIRED ) # look for ROOT versions >= 5.27.06 -ENDIF() +if( BUILD_ROOTDICT ) + find_package( ROOT 6.04 REQUIRED ) + ##Need to check if ROOT has been compiled with other CXX_STANDARD + get_property(ROOT_CXX_STANDARD TARGET ROOT::Core PROPERTY INTERFACE_COMPILE_FEATURES) + if(${ROOT_CXX_STANDARD} STREQUAL "cxx_std_17") + set( CMAKE_CXX_STANDARD 17 ) + elseif(${ROOT_CXX_STANDARD} STREQUAL "cxx_std_20") + set( CMAKE_CXX_STANDARD 20 ) + endif() +endif() # DCAP @@ -123,11 +146,11 @@ ENDIF() # UNIX SHELL (needed for calling LCIO_ENV_INIT script) -FIND_PROGRAM( SH sh ${CYGWIN_INSTALL_PATH}/bin /bin /usr/bin /usr/local/bin /sbin ) -MARK_AS_ADVANCED( SH ) -IF( NOT SH ) - MESSAGE( FATAL_ERROR "unix shell not found" ) -ENDIF() +#FIND_PROGRAM( SH sh ${CYGWIN_INSTALL_PATH}/bin /bin /usr/bin /usr/local/bin /sbin ) +#MARK_AS_ADVANCED( SH ) +#IF( NOT SH ) +# MESSAGE( FATAL_ERROR "unix shell not found" ) +#ENDIF() @@ -270,7 +293,7 @@ endif() # replaced by standard cmake variable BUILD_TESTING #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" ON ) + # lcio library ADD_SUBDIRECTORY( ./src/cpp lcio ) @@ -278,23 +301,22 @@ ADD_SUBDIRECTORY( ./src/cpp lcio ) # fortran examples -OPTION( BUILD_F77_TESTJOBS "Set to ON to build LCIO F77 testjobs" OFF ) IF( BUILD_F77_TESTJOBS ) ADD_SUBDIRECTORY( ./src/f77 f77 ) ENDIF() # directory containing lcio tests -ADD_SUBDIRECTORY( ./tests ) +if( BUILD_TESTING ) + ADD_SUBDIRECTORY( ./tests ) +endif() ### DOCUMENTATION ########################################################### - -OPTION( INSTALL_DOC "Set to OFF to skip build/install Documentation" OFF ) -IF( INSTALL_DOC ) - ADD_SUBDIRECTORY( ./doc ) - INSTALL( CODE "EXECUTE_PROCESS( COMMAND ${CMAKE_BUILD_TOOL} doc)" ) -ENDIF() +if( INSTALL_DOC ) + ADD_SUBDIRECTORY( ./doc ) + INSTALL( CODE "EXECUTE_PROCESS( COMMAND ${CMAKE_BUILD_TOOL} doc)" ) +endif() @@ -302,15 +324,17 @@ ENDIF() DISPLAY_STD_VARIABLES() MESSAGE( STATUS "BUILD_LCIO_EXAMPLES = ${BUILD_LCIO_EXAMPLES}" ) +message( STATUS "BUILD_APPS = ${BUILD_APPS}" ) +message( STATUS "BUILD_FORTRAN = ${BUILD_FORTRAN}" ) MESSAGE( STATUS "BUILD_F77_TESTJOBS = ${BUILD_F77_TESTJOBS}" ) MESSAGE( STATUS "BUILD_ROOTDICT = ${BUILD_ROOTDICT}" ) MESSAGE( STATUS "INSTALL_JAR = ${INSTALL_JAR}" ) MESSAGE( STATUS "LCIO_JAVA_USE_MAVEN = ${LCIO_JAVA_USE_MAVEN}" ) MESSAGE( STATUS "SIO_PRINT_DEBUG = ${SIO_PRINT_DEBUG}" ) -MESSAGE( STATUS "" ) +MESSAGE( "" ) # generate and install following configuration files GENERATE_PACKAGE_CONFIGURATION_FILES( LCIOConfig.cmake LCIOConfigVersion.cmake ) -INSTALL( FILES cmake/MacroCheckPackageLibs.cmake cmake/MacroCheckPackageVersion.cmake DESTINATION lib/cmake) +INSTALL( FILES cmake/MacroCheckPackageLibs.cmake cmake/MacroCheckPackageVersion.cmake DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/cmake") diff --git a/cmake/FindROOT.cmake b/cmake/FindROOT.cmake deleted file mode 100644 index dbacd0a54..000000000 --- a/cmake/FindROOT.cmake +++ /dev/null @@ -1,319 +0,0 @@ -############################################################################### -# cmake module for finding ROOT -# -# requires: -# MacroCheckPackageLibs.cmake for checking package libraries -# -# Following cmake variables are returned by this module: -# -# ROOT_FOUND : set to TRUE if ROOT found -# If FIND_PACKAGE is called with REQUIRED and COMPONENTS arguments -# ROOT_FOUND is only set to TRUE if ALL components are found. -# If REQUIRED is NOT set components may or may not be available -# -# ROOT_LIBRARIES : list of ROOT libraries (NOT including COMPONENTS) -# ROOT_INCLUDE_DIRS : list of paths to be used with INCLUDE_DIRECTORIES -# ROOT_LIBRARY_DIRS : list of paths to be used with LINK_DIRECTORIES -# ROOT_COMPONENT_LIBRARIES : list of ROOT component libraries -# ROOT_${COMPONENT}_FOUND : set to TRUE or FALSE for each library -# ROOT_${COMPONENT}_LIBRARY : path to individual libraries -# -# -# Please note that by convention components should be entered exactly as -# the library names, i.e. the component name equivalent to the library -# $ROOTSYS/lib/libMathMore.so should be called MathMore and NOT: -# mathmore or Mathmore or MATHMORE -# -# However to follow the usual cmake convention it is agreed that the -# ROOT_${COMPONENT}_FOUND and ROOT_${COMPONENT}_LIBRARY variables are ALL -# uppercase, i.e. the MathMore component returns: ROOT_MATHMORE_FOUND and -# ROOT_MATHMORE_LIBRARY NOT ROOT_MathMore_FOUND or ROOT_MathMore_LIBRARY -# -# -# The additional ROOT components should be defined as follows: -# FIND_PACKAGE( ROOT COMPONENTS MathMore Gdml Geom ...) -# -# If components are required use: -# FIND_PACKAGE( ROOT REQUIRED COMPONENTS MathMore Gdml Geom ...) -# -# If only root is required and components are NOT required use: -# FIND_PACKAGE( ROOT REQUIRED ) -# FIND_PACKAGE( ROOT COMPONENTS MathMore Gdml Geom ... QUIET ) -# then you need to check for ROOT_MATHMORE_FOUND, ROOT_GDML_FOUND, etc. -# -# The variable ROOT_USE_COMPONENTS can also be used before calling -# FIND_PACKAGE, i.e.: -# SET( ROOT_USE_COMPONENTS MathMore Gdml Geom ) -# FIND_PACKAGE( ROOT REQUIRED ) # all ROOT_USE_COMPONENTS must also be found -# FIND_PACKAGE( ROOT ) # check for ROOT_FOUND, ROOT_MATHMORE_FOUND, etc. -# -# @author Jan Engels, DESY -############################################################################### - - - -# ============================================== -# === ROOT_CONFIG_EXECUTABLE === -# ============================================== - -SET( ROOT_CONFIG_EXECUTABLE ROOT_CONFIG_EXECUTABLE-NOTFOUND ) -MARK_AS_ADVANCED( ROOT_CONFIG_EXECUTABLE ) -FIND_PROGRAM( ROOT_CONFIG_EXECUTABLE root-config PATHS ${ROOT_DIR}/bin NO_DEFAULT_PATH ) -IF( NOT ROOT_DIR ) - FIND_PROGRAM( ROOT_CONFIG_EXECUTABLE root-config ) -ENDIF() - - -IF( NOT ROOT_FIND_QUIETLY ) - MESSAGE( STATUS "Check for ROOT_CONFIG_EXECUTABLE: ${ROOT_CONFIG_EXECUTABLE}" ) -ENDIF() - - -IF( ROOT_CONFIG_EXECUTABLE ) - - - # ============================================== - # === ROOT_VERSION === - # ============================================== - - INCLUDE( MacroCheckPackageVersion ) - - EXECUTE_PROCESS( COMMAND "${ROOT_CONFIG_EXECUTABLE}" --version - OUTPUT_VARIABLE _version - RESULT_VARIABLE _exit_code - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - IF( _exit_code EQUAL 0 ) - - # set required variables for MacroCheckPackageVersion - STRING(REGEX REPLACE "^([0-9]+).*" "\\1" ROOT_VERSION_MAJOR "${_version}") - STRING(REGEX REPLACE "^[0-9]+.([0-9]+).*" "\\1" ROOT_VERSION_MINOR "${_version}") - STRING(REGEX REPLACE "^[0-9]+.[0-9]+.([0-9]+).*" "\\1" ROOT_VERSION_PATCH "${_version}") - - SET( ROOT_VERSION "${ROOT_VERSION_MAJOR}.${ROOT_VERSION_MINOR}.${ROOT_VERSION_PATCH}" ) - ENDIF() - - CHECK_PACKAGE_VERSION( ROOT ${ROOT_VERSION} ) - - - - # ============================================== - # === ROOT_PREFIX === - # ============================================== - - # get root prefix from root-config output - EXECUTE_PROCESS( COMMAND "${ROOT_CONFIG_EXECUTABLE}" --prefix - OUTPUT_VARIABLE ROOT_PREFIX - RESULT_VARIABLE _exit_code - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - IF( NOT _exit_code EQUAL 0 ) - # clear variable if root-config exits with error - # it might contain garbage - SET( ROOT_PREFIX ) - ENDIF() - - # PKG_ROOT variables are a cmake standard - # since this package is also called ROOT the variable name - # becomes ROOT_ROOT ... - SET( ROOT_ROOT ${ROOT_PREFIX} ) - - - - # ============================================== - # === ROOT_BIN_DIR === - # ============================================== - - # get bindir from root-config output - EXECUTE_PROCESS( COMMAND "${ROOT_CONFIG_EXECUTABLE}" --bindir - OUTPUT_VARIABLE ROOT_BIN_DIR - RESULT_VARIABLE _exit_code - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - IF( NOT _exit_code EQUAL 0 ) - # clear variable if root-config exits with error - # it might contain garbage - SET( ROOT_BIN_DIR ) - ENDIF() - - - - # ============================================== - # === ROOT_EXECUTABLE === - # ============================================== - - - SET( ROOT_EXECUTABLE ROOT_EXECUTABLE-NOTFOUND ) - MARK_AS_ADVANCED( ROOT_EXECUTABLE ) - FIND_PROGRAM( ROOT_EXECUTABLE root PATHS ${ROOT_BIN_DIR} NO_DEFAULT_PATH ) - - IF( NOT ROOT_FIND_QUIETLY ) - MESSAGE( STATUS "Check for ROOT_EXECUTABLE: ${ROOT_EXECUTABLE}" ) - ENDIF() - - - - - # ============================================== - # === ROOT_CINT_EXECUTABLE === - # ============================================== - - - # find rootcint - SET( ROOT_CINT_EXECUTABLE ROOT_CINT_EXECUTABLE-NOTFOUND ) - MARK_AS_ADVANCED( ROOT_CINT_EXECUTABLE ) - FIND_PROGRAM( ROOT_CINT_EXECUTABLE rootcint PATHS ${ROOT_BIN_DIR} NO_DEFAULT_PATH ) - - IF( NOT ROOT_FIND_QUIETLY ) - MESSAGE( STATUS "Check for ROOT_CINT_EXECUTABLE: ${ROOT_CINT_EXECUTABLE}" ) - ENDIF() - - - - # ============================================== - # === ROOT_INCLUDE_DIR === - # ============================================== - - # get include dir from root-config output - EXECUTE_PROCESS( COMMAND "${ROOT_CONFIG_EXECUTABLE}" --incdir - OUTPUT_VARIABLE _inc_dir - RESULT_VARIABLE _exit_code - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - IF( NOT _exit_code EQUAL 0 ) - # clear variable if root-config exits with error - # it might contain garbage - SET( _inc_dir ) - ENDIF() - - - SET( ROOT_INCLUDE_DIRS ROOT_INCLUDE_DIRS-NOTFOUND ) - MARK_AS_ADVANCED( ROOT_INCLUDE_DIRS ) - - FIND_PATH( ROOT_INCLUDE_DIRS - NAMES TH1.h - PATHS ${ROOT_DIR}/include ${_inc_dir} - NO_DEFAULT_PATH - ) - - - - # ============================================== - # === ROOT_LIBRARIES === - # ============================================== - - # get library dir from root-config output - EXECUTE_PROCESS( COMMAND "${ROOT_CONFIG_EXECUTABLE}" --libdir - OUTPUT_VARIABLE ROOT_LIBRARY_DIR - RESULT_VARIABLE _exit_code - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - IF( NOT _exit_code EQUAL 0 ) - # clear variable if root-config exits with error - # it might contain garbage - SET( ROOT_LIBRARY_DIR ) - ENDIF() - - - - # ========== standard root libraries ================= - - # standard root libraries (without components) - SET( _root_libnames ) - - # get standard root libraries from 'root-config --libs' output - EXECUTE_PROCESS( COMMAND "${ROOT_CONFIG_EXECUTABLE}" --noauxlibs --libs - OUTPUT_VARIABLE _aux - RESULT_VARIABLE _exit_code - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - IF( _exit_code EQUAL 0 ) - - # create a list out of the output - SEPARATE_ARGUMENTS( _aux ) - - # remove first item -L compiler flag - LIST( REMOVE_AT _aux 0 ) - - FOREACH( _lib ${_aux} ) - - # extract libnames from -l compiler flags - STRING( REGEX REPLACE "^-.(.*)$" "\\1" _libname "${_lib}") - - # fix for some root-config versions which export -lz even if using --noauxlibs - IF( NOT _libname STREQUAL "z" ) - - # append all library names into a list - LIST( APPEND _root_libnames ${_libname} ) - - ENDIF() - - ENDFOREACH() - - ENDIF() - - - - # ========== additional root components ================= - - #LIST( APPEND ROOT_FIND_COMPONENTS Minuit2 ) # DEPRECATED !!! - - - # ---------- libraries -------------------------------------------------------- - INCLUDE( MacroCheckPackageLibs ) - - SET( ROOT_LIB_SEARCH_PATH ${ROOT_LIBRARY_DIR} ) - - # only standard libraries should be passed as arguments to CHECK_PACKAGE_LIBS - # additional components are set by cmake in variable PKG_FIND_COMPONENTS - # first argument should be the package name - CHECK_PACKAGE_LIBS( ROOT ${_root_libnames} ) - - - - - # ====== DL LIBRARY ================================================== - # workaround for cmake bug in 64 bit: - # see: http://public.kitware.com/mantis/view.php?id=10813 - IF( CMAKE_SIZEOF_VOID_P EQUAL 8 ) - FIND_LIBRARY( DL_LIB NAMES ${CMAKE_DL_LIBS} dl PATHS /usr/lib64 /lib64 NO_DEFAULT_PATH ) - ENDIF( CMAKE_SIZEOF_VOID_P EQUAL 8 ) - - FIND_LIBRARY( DL_LIB NAMES ${CMAKE_DL_LIBS} dl ) - MARK_AS_ADVANCED( DL_LIB ) - - IF( NOT ROOT_FIND_QUIETLY ) - MESSAGE( STATUS "Check for libdl.so: ${DL_LIB}" ) - ENDIF() - -ENDIF( ROOT_CONFIG_EXECUTABLE ) - -# Threads library -#FIND_PACKAGE( Threads REQUIRED) - - -# ---------- final checking --------------------------------------------------- -INCLUDE( FindPackageHandleStandardArgs ) -# set ROOT_FOUND to TRUE if all listed variables are TRUE and not empty -# ROOT_COMPONENT_VARIABLES will be set if FIND_PACKAGE is called with REQUIRED argument -FIND_PACKAGE_HANDLE_STANDARD_ARGS( ROOT DEFAULT_MSG ROOT_INCLUDE_DIRS ROOT_LIBRARIES ${ROOT_COMPONENT_VARIABLES} PACKAGE_VERSION_COMPATIBLE DL_LIB ) - -IF( ROOT_FOUND ) - LIST( APPEND ROOT_LIBRARIES ${DL_LIB} ) - # FIXME DEPRECATED - SET( ROOT_DEFINITIONS "-DUSEROOT -DUSE_ROOT -DMARLIN_USE_ROOT" ) - MARK_AS_ADVANCED( ROOT_DEFINITIONS ) - - # file including MACROS for generating root dictionary sources - GET_FILENAME_COMPONENT( _aux ${CMAKE_CURRENT_LIST_FILE} PATH ) - SET( ROOT_DICT_MACROS_FILE ${_aux}/MacroRootDict.cmake ) - -ENDIF( ROOT_FOUND ) - -# ---------- cmake bug -------------------------------------------------------- -# ROOT_FIND_REQUIRED is not reset between FIND_PACKAGE calls, i.e. the following -# code fails when geartgeo component not available: (fixed in cmake 2.8) -# FIND_PACKAGE( ROOT REQUIRED ) -# FIND_PACKAGE( ROOT COMPONENTS geartgeo QUIET ) -SET( ROOT_FIND_REQUIRED ) - diff --git a/cmake/MacroDisplayStandardVariables.cmake b/cmake/MacroDisplayStandardVariables.cmake index 678884dab..99c66b4cf 100644 --- a/cmake/MacroDisplayStandardVariables.cmake +++ b/cmake/MacroDisplayStandardVariables.cmake @@ -30,20 +30,20 @@ MACRO( DISPLAY_STD_VARIABLES ) IF( DEFINED CMAKE_PREFIX_PATH ) LIST( REMOVE_DUPLICATES CMAKE_PREFIX_PATH ) #MESSAGE( STATUS "CMAKE_PREFIX_PATH = ${CMAKE_PREFIX_PATH}" ) - MESSAGE( STATUS "CMAKE_PREFIX_PATH =" ) FOREACH( _path ${CMAKE_PREFIX_PATH} ) - MESSAGE( STATUS " ${_path};" ) + LIST(APPEND LCIO_PREFIX_PATH "${_path}\n") ENDFOREACH() + MESSAGE( STATUS "CMAKE_PREFIX_PATH = ${LCIO_PREFIX_PATH}" ) #SET( CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH}" CACHE PATH "CMAKE_PREFIX_PATH" FORCE ) ENDIF() IF( DEFINED CMAKE_MODULE_PATH ) LIST( REMOVE_DUPLICATES CMAKE_MODULE_PATH ) #MESSAGE( STATUS "CMAKE_MODULE_PATH = ${CMAKE_MODULE_PATH}" ) - MESSAGE( STATUS "CMAKE_MODULE_PATH =" ) FOREACH( _path ${CMAKE_MODULE_PATH} ) - MESSAGE( STATUS " ${_path};" ) + LIST(APPEND LCIO_MODULE_PATH "${_path}\n") ENDFOREACH() + MESSAGE( STATUS "CMAKE_MODULE_PATH = ${LCIO_MODULE_PATH}" ) SET( CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" CACHE PATH "CMAKE_MODULE_PATH" FORCE ) ENDIF() diff --git a/cmake/MacroGeneratePackageConfigFiles.cmake b/cmake/MacroGeneratePackageConfigFiles.cmake index e4a7b1259..a66ae8f67 100644 --- a/cmake/MacroGeneratePackageConfigFiles.cmake +++ b/cmake/MacroGeneratePackageConfigFiles.cmake @@ -9,13 +9,7 @@ MACRO( GENERATE_PACKAGE_CONFIGURATION_FILES ) CONFIGURE_FILE( "${PROJECT_SOURCE_DIR}/cmake/${arg}.in" "${PROJECT_BINARY_DIR}/${arg}" @ONLY ) - INSTALL( FILES "${PROJECT_BINARY_DIR}/${arg}" DESTINATION . ) - #IF( EXISTS "${_current_dir}/MacroCheckPackageLibs.cmake" ) - # INSTALL( FILES "${_current_dir}/MacroCheckPackageLibs.cmake" DESTINATION cmake ) - #ENDIF() - #IF( EXISTS "${_current_dir}/MacroExportPackageDeps.cmake" ) - # INSTALL( FILES "${_current_dir}/MacroExportPackageDeps.cmake" DESTINATION cmake ) - #ENDIF() + INSTALL( FILES "${PROJECT_BINARY_DIR}/${arg}" DESTINATION "lib/cmake" ) ENDIF() ENDIF() @@ -26,10 +20,7 @@ MACRO( GENERATE_PACKAGE_CONFIGURATION_FILES ) CONFIGURE_FILE( "${PROJECT_SOURCE_DIR}/cmake/${arg}.in" "${PROJECT_BINARY_DIR}/${arg}" @ONLY ) - INSTALL( FILES "${PROJECT_BINARY_DIR}/${arg}" DESTINATION . ) - #IF( EXISTS "${_current_dir}/MacroCheckPackageVersion.cmake" ) - # INSTALL( FILES "${_current_dir}/MacroCheckPackageVersion.cmake" DESTINATION cmake ) - #ENDIF() + INSTALL( FILES "${PROJECT_BINARY_DIR}/${arg}" DESTINATION "lib/cmake" ) ENDIF( EXISTS "${PROJECT_SOURCE_DIR}/cmake/${arg}.in" ) ENDIF() diff --git a/cmake/MacroRootDict.cmake b/cmake/MacroRootDict.cmake index 707d130dd..9fd600945 100644 --- a/cmake/MacroRootDict.cmake +++ b/cmake/MacroRootDict.cmake @@ -124,7 +124,7 @@ MACRO( GEN_ROOT_DICT_SOURCE _dict_src_filename ) ADD_CUSTOM_COMMAND( OUTPUT ${_dict_src_file} ${_dict_hdr_file} COMMAND mkdir -p ${ROOT_DICT_OUTPUT_DIR} - COMMAND ${ROOT_CINT_WRAPPER} -f "${_dict_src_file}" -c ${ROOT_DICT_CINT_DEFINITIONS} ${_dict_includes} ${ROOT_DICT_INPUT_HEADERS} + COMMAND ${ROOT_rootcint_CMD} -f "${_dict_src_file}" ${ROOT_DICT_CINT_DEFINITIONS} ${_dict_includes} ${ROOT_DICT_INPUT_HEADERS} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" DEPENDS ${ROOT_DICT_INPUT_HEADERS} COMMENT "generating: ${_dict_src_file} ${_dict_hdr_file}" diff --git a/cmake/ilcsoft_default_build_output_directories.cmake b/cmake/ilcsoft_default_build_output_directories.cmake deleted file mode 100644 index 6fcdd67a1..000000000 --- a/cmake/ilcsoft_default_build_output_directories.cmake +++ /dev/null @@ -1,7 +0,0 @@ - -# output directories -SET( EXECUTABLE_OUTPUT_PATH "${PROJECT_BINARY_DIR}/bin" ) -SET( LIBRARY_OUTPUT_PATH "${PROJECT_BINARY_DIR}/lib" ) -MARK_AS_ADVANCED( EXECUTABLE_OUTPUT_PATH ) -MARK_AS_ADVANCED( LIBRARY_OUTPUT_PATH ) - diff --git a/cmake/ilcsoft_default_install_prefix.cmake b/cmake/ilcsoft_default_install_prefix.cmake index 6b85d14c6..affc0b2ac 100644 --- a/cmake/ilcsoft_default_install_prefix.cmake +++ b/cmake/ilcsoft_default_install_prefix.cmake @@ -2,7 +2,7 @@ # instead of the cmake default /usr/local IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - SET(CMAKE_INSTALL_PREFIX "${PROJECT_SOURCE_DIR}" CACHE PATH "Where to install ${PROJECT_NAME}" FORCE) + SET(CMAKE_INSTALL_PREFIX "${PROJECT_SOURCE_DIR}/bin" CACHE PATH "Where to install ${PROJECT_NAME}" FORCE) ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) diff --git a/cmake/ilcsoft_default_settings.cmake b/cmake/ilcsoft_default_settings.cmake index de2eeb0a7..7f5448a95 100644 --- a/cmake/ilcsoft_default_settings.cmake +++ b/cmake/ilcsoft_default_settings.cmake @@ -18,7 +18,6 @@ INCLUDE( ilcsoft_default_install_prefix ) INCLUDE( ilcsoft_default_build_type ) INCLUDE( ilcsoft_default_enable_ctest ) INCLUDE( ilcsoft_default_library_versioning ) -INCLUDE( ilcsoft_default_build_output_directories ) INCLUDE( ilcsoft_default_rpath_settings ) INCLUDE( ilcsoft_default_cxx_flags ) #INCLUDE( ilcsoft_build_32bit_compatible ) diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 56cdde3e8..28842c379 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -2,6 +2,14 @@ # cmake file for building LCIO documentation # @author Jan Engels, DESY ############################################### +# required packages to build documentation +FIND_PACKAGE( Doxygen ) +FIND_PACKAGE( LATEX ) +if(NOT DOXYGEN_FOUND OR NOT LATEX_FOUND) + message(STATUS "Doxygen or LATEX not found ! Abording doc generation") + return() +endif() + # build documentation out-of-source SET( DOC_SRC_DIR "${PROJECT_SOURCE_DIR}/doc" ) @@ -15,9 +23,6 @@ SET_DIRECTORY_PROPERTIES( PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${DOC_BIN_DIR} ADD_CUSTOM_TARGET( doc ) -# required packages to build documentation -FIND_PACKAGE( Doxygen REQUIRED ) -FIND_PACKAGE( LATEX REQUIRED ) # out-of-source vs in-source installations @@ -95,21 +100,21 @@ ENDIF() IF( DOXYGEN_FOUND AND LATEX_COMPILER AND DVIPS_CONVERTER ) ADD_CUSTOM_COMMAND( - OUTPUT "${DOC_BIN_DIR}/latex/lciorefman.ps" + OUTPUT "${DOC_BIN_DIR}/latex/refman.ps" # FIXME: latex returns error, using | xargs at the end ignores the exit code error COMMAND "${LATEX_COMPILER}" -interaction=batchmode refman.tex | xargs COMMAND "${LATEX_COMPILER}" -interaction=batchmode refman.tex | xargs COMMAND "${DVIPS_CONVERTER}" -q -o refman.ps refman.dvi - COMMAND psnup -q -2 refman.ps lciorefman.ps # FIXME detect psnup + COMMAND psnup -q -2 refman.ps refman.ps # FIXME detect psnup WORKING_DIRECTORY "${DOC_BIN_DIR}/latex" COMMENT "Building Documentation - Reference Manual..." ) - ADD_CUSTOM_TARGET( doc_refman DEPENDS ${DOC_BIN_DIR}/latex/lciorefman.ps ) + ADD_CUSTOM_TARGET( doc_refman DEPENDS ${DOC_BIN_DIR}/latex/refman.ps ) ADD_DEPENDENCIES( doc_refman doc_cpp ) # need to generate doxygen documentation first ADD_DEPENDENCIES( doc doc_refman ) - INSTALL( FILES "${DOC_BIN_DIR}/latex/lciorefman.ps" DESTINATION ${DOC_INSTALL_PREFIX} ) + INSTALL( FILES "${DOC_BIN_DIR}/latex/refman.ps" DESTINATION ${DOC_INSTALL_PREFIX} ) ELSE() MESSAGE( "Failed to find tools required to build lcio reference manual (latex, dvips)" ) diff --git a/bin/.empty_file_for_cvs b/scripts/.empty_file_for_cvs similarity index 100% rename from bin/.empty_file_for_cvs rename to scripts/.empty_file_for_cvs diff --git a/bin/ant.cyg b/scripts/ant.cyg similarity index 100% rename from bin/ant.cyg rename to scripts/ant.cyg diff --git a/bin/runAnalysisJob.bat b/scripts/runAnalysisJob.bat similarity index 100% rename from bin/runAnalysisJob.bat rename to scripts/runAnalysisJob.bat diff --git a/bin/runAnalysisJob.cyg b/scripts/runAnalysisJob.cyg similarity index 100% rename from bin/runAnalysisJob.cyg rename to scripts/runAnalysisJob.cyg diff --git a/bin/runAnalysisJob.sh b/scripts/runAnalysisJob.sh similarity index 100% rename from bin/runAnalysisJob.sh rename to scripts/runAnalysisJob.sh diff --git a/bin/runFTNexamples.sh b/scripts/runFTNexamples.sh similarity index 100% rename from bin/runFTNexamples.sh rename to scripts/runFTNexamples.sh diff --git a/bin/runRecJob.bat b/scripts/runRecJob.bat similarity index 100% rename from bin/runRecJob.bat rename to scripts/runRecJob.bat diff --git a/bin/runRecJob.sh b/scripts/runRecJob.sh similarity index 100% rename from bin/runRecJob.sh rename to scripts/runRecJob.sh diff --git a/bin/runSIODump.bat b/scripts/runSIODump.bat similarity index 100% rename from bin/runSIODump.bat rename to scripts/runSIODump.bat diff --git a/bin/runSIODump.sh b/scripts/runSIODump.sh similarity index 100% rename from bin/runSIODump.sh rename to scripts/runSIODump.sh diff --git a/bin/runSimJob.bat b/scripts/runSimJob.bat similarity index 100% rename from bin/runSimJob.bat rename to scripts/runSimJob.bat diff --git a/bin/runSimJob.cyg b/scripts/runSimJob.cyg similarity index 100% rename from bin/runSimJob.cyg rename to scripts/runSimJob.cyg diff --git a/bin/runSimJob.sh b/scripts/runSimJob.sh similarity index 100% rename from bin/runSimJob.sh rename to scripts/runSimJob.sh diff --git a/bin/runexamples.sh b/scripts/runexamples.sh similarity index 100% rename from bin/runexamples.sh rename to scripts/runexamples.sh diff --git a/bin/runrandomtests.sh b/scripts/runrandomtests.sh similarity index 100% rename from bin/runrandomtests.sh rename to scripts/runrandomtests.sh diff --git a/sio/CMakeLists.txt b/sio/CMakeLists.txt index a7c218730..54bbaab5d 100644 --- a/sio/CMakeLists.txt +++ b/sio/CMakeLists.txt @@ -6,13 +6,9 @@ # @author: Remi Ete, DESY # -PROJECT( SIO ) +project( SIO VERSION "0.0.2" LANGUAGES CXX) # project version -SET( SIO_VERSION_MAJOR 0 ) -SET( SIO_VERSION_MINOR 0 ) -SET( SIO_VERSION_PATCH 2 ) -SET( SIO_VERSION "${SIO_VERSION_MAJOR}.${SIO_VERSION_MINOR}.${SIO_VERSION_PATCH}" ) SET( SIO_SOVERSION "${SIO_VERSION_MAJOR}.${SIO_VERSION_MINOR}" ) FIND_PACKAGE( ZLIB REQUIRED ) @@ -37,6 +33,6 @@ INSTALL_SHARED_LIBRARY( sio DESTINATION lib ) # mimic the SIOConfig.cmake variables for the LCIO project SET( SIO_VERSION "${SIO_VERSION}" CACHE STRING "The SIO version" ) -SET( SIO_LIBRARIES "$" CACHE STRING "The SIO library" ) +SET( SIO_LIBRARIES "sio" CACHE STRING "The SIO library" ) SET( SIO_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/include" CACHE STRING "The path to SIO include directories" ) SET( CHECK_PACKAGE_SIO_LIBRARY "sio" CACHE STRING "The name of the builtin SIO library to check when searching for LCIO package" ) diff --git a/src/cpp/CMakeLists.txt b/src/cpp/CMakeLists.txt index 1b38d103b..2a1f295cf 100644 --- a/src/cpp/CMakeLists.txt +++ b/src/cpp/CMakeLists.txt @@ -3,33 +3,44 @@ # @author Frank Gaede, DESY # @author Jan Engels, DESY ################################# - -SET( LCIO_CPPFORT_SRCS - ./src/CPPFORT/HEPEVT.cc - ./src/CPPFORT/lccah.cc - ./src/CPPFORT/lcclu.cc - ./src/CPPFORT/lccol.cc - ./src/CPPFORT/lcevt.cc - ./src/CPPFORT/lcgob.cc - ./src/CPPFORT/lciof77apiext.cc - ./src/CPPFORT/lcmcp.cc - ./src/CPPFORT/lcobv.cc - ./src/CPPFORT/lcpid.cc - ./src/CPPFORT/lcrcp.cc - ./src/CPPFORT/lcrdr.cc - ./src/CPPFORT/lcrdrrep.cc - ./src/CPPFORT/lcrel.cc - ./src/CPPFORT/lcrhd.cc - ./src/CPPFORT/lcrnv.cc - ./src/CPPFORT/lcsch.cc - ./src/CPPFORT/lcsth.cc - ./src/CPPFORT/lctph.cc - ./src/CPPFORT/lctrh.cc - ./src/CPPFORT/lctrk.cc - ./src/CPPFORT/lcvec.cc - ./src/CPPFORT/lcvtx.cc - ./src/CPPFORT/lcwrt.cc -) +if( BUILD_FORTRAN ) + set( LCIO_CPPFORT_SRCS + ./src/CPPFORT/HEPEVT.cc + ./src/CPPFORT/lccah.cc + ./src/CPPFORT/lcclu.cc + ./src/CPPFORT/lccol.cc + ./src/CPPFORT/lcevt.cc + ./src/CPPFORT/lcgob.cc + ./src/CPPFORT/lciof77apiext.cc + ./src/CPPFORT/lcmcp.cc + ./src/CPPFORT/lcobv.cc + ./src/CPPFORT/lcpid.cc + ./src/CPPFORT/lcrcp.cc + ./src/CPPFORT/lcrdr.cc + ./src/CPPFORT/lcrdrrep.cc + ./src/CPPFORT/lcrel.cc + ./src/CPPFORT/lcrhd.cc + ./src/CPPFORT/lcrnv.cc + ./src/CPPFORT/lcsch.cc + ./src/CPPFORT/lcsth.cc + ./src/CPPFORT/lctph.cc + ./src/CPPFORT/lctrh.cc + ./src/CPPFORT/lctrk.cc + ./src/CPPFORT/lcvec.cc + ./src/CPPFORT/lcvtx.cc + ./src/CPPFORT/lcwrt.cc + ) + #---- special flags for cfortran code : -------- + SET_SOURCE_FILES_PROPERTIES( + ${LCIO_CPPFORT_SRCS} PROPERTIES + COMPILE_FLAGS "-Df2cFortran -Wno-unused" + ) + # ---------------------------------------------------------------------------- + # ------- libraries lcio + lcioF77 ------------------------------------------- + ADD_LIBRARY( lcioF77 STATIC ${LCIO_CPPFORT_SRCS} ) + INSTALL( TARGETS lcioF77 DESTINATION lib ) + TARGET_LINK_LIBRARIES( lcioF77 lcio ) +endif() SET( LCIO_IMPL_SRCS ./src/IMPL/AccessChecked.cc @@ -226,7 +237,9 @@ if( LCIO_GENERATE_HEADERS ) SET( IO_AID_HEADERS_DEP_LIST ${AID_HEADERS_LIST};${CXX_HEADERS_LIST} ) # make source files depend on generated header files + aid files - SET_SOURCE_FILES_PROPERTIES( ${LCIO_CPPFORT_SRCS} PROPERTIES OBJECT_DEPENDS "${EVENT_AID_HEADERS_DEP_LIST};${IO_AID_HEADERS_DEP_LIST}" ) + if( BUILD_FORTRAN) + SET_SOURCE_FILES_PROPERTIES( ${LCIO_CPPFORT_SRCS} PROPERTIES OBJECT_DEPENDS "${EVENT_AID_HEADERS_DEP_LIST};${IO_AID_HEADERS_DEP_LIST}" ) + endif() SET_SOURCE_FILES_PROPERTIES( ${LCIO_IMPL_SRCS} PROPERTIES OBJECT_DEPENDS "${EVENT_AID_HEADERS_DEP_LIST}" ) SET_SOURCE_FILES_PROPERTIES( ${LCIO_IOIMPL_SRCS} PROPERTIES OBJECT_DEPENDS "${IO_AID_HEADERS_DEP_LIST}" ) # ---------------------------------------------------------------------------- @@ -249,12 +262,7 @@ endif() #ADD_DEFINITIONS( "-Wall -ansi -pedantic" ) #ADD_DEFINITIONS( "-Wno-long-long -fno-strict-aliasing" ) -#---- special flags for cfortran code : -------- -SET_SOURCE_FILES_PROPERTIES( - ${LCIO_CPPFORT_SRCS} PROPERTIES - COMPILE_FLAGS "-Df2cFortran -Wno-unused" -) -# ---------------------------------------------------------------------------- + @@ -281,9 +289,7 @@ INSTALL_DIRECTORY( ${LCIO_AID_HEADERS_OUTPUT_DIR}/ DESTINATION include ) -# ------- libraries lcio + lcioF77 ------------------------------------------- -ADD_LIBRARY( lcioF77 STATIC ${LCIO_CPPFORT_SRCS} ) -INSTALL( TARGETS lcioF77 DESTINATION lib ) + ADD_SHARED_LIBRARY( lcio ${LCIO_IMPL_SRCS} @@ -295,10 +301,8 @@ ADD_SHARED_LIBRARY( lcio INSTALL_SHARED_LIBRARY( lcio DESTINATION lib ) TARGET_LINK_LIBRARIES( lcio ${CMAKE_THREAD_LIBS_INIT} ) +add_dependencies(lcio ${SIO_LIBRARIES}) TARGET_LINK_LIBRARIES( lcio ${SIO_LIBRARIES} ) -TARGET_LINK_LIBRARIES( lcioF77 lcio ) - -ADD_CUSTOM_TARGET( lib DEPENDS lcio lcioF77 ) # ---------------------------------------------------------------------------- @@ -315,7 +319,7 @@ IF( BUILD_ROOTDICT ) # SET( ROOT_DICT_CINT_DEFINITIONS -DHANDLE_LCIO_EXCEPTIONS=IGNORED_FOR_CINT ) # load MacroRootDict.cmake from ILCSOFT_CMAKE_MODULES - INCLUDE( ${ROOT_DICT_MACROS_FILE} ) + INCLUDE( MacroRootDict ) # include directories to be passed over to rootcint SET( ROOT_DICT_INCLUDE_DIRS @@ -347,7 +351,7 @@ IF( BUILD_ROOTDICT ) LIST( REMOVE_ITEM UTIL_CXX_HEADERS_LIST ${exclude_headers} ) - MESSAGE( STATUS "********************* UTIL_CXX_HEADERS_LIST: ${UTIL_CXX_HEADERS_LIST}" ) + #MESSAGE( STATUS "********************* UTIL_CXX_HEADERS_LIST: ${UTIL_CXX_HEADERS_LIST}" ) # generate dictionary source files! GEN_ROOT_DICT_LINKDEF_HEADER( UTIL ${UTIL_CXX_HEADERS_LIST} ) @@ -358,7 +362,7 @@ IF( BUILD_ROOTDICT ) # MESSAGE( STATUS "********************* IO_CXX_HEADERS_LIST: ${IO_CXX_HEADERS_LIST}" ) # MESSAGE( STATUS "********************* EVENT_CXX_HEADERS_LIST: ${EVENT_CXX_HEADERS_LIST}" ) - MESSAGE( STATUS "********************* UTIL_CXX_HEADERS_LIST: ${UTIL_CXX_HEADERS_LIST}" ) + #MESSAGE( STATUS "********************* UTIL_CXX_HEADERS_LIST: ${UTIL_CXX_HEADERS_LIST}" ) # ------ generate dictionary for IO classes -------------------- @@ -458,24 +462,26 @@ MACRO( ADD_LCIO_EXAMPLE file ) INSTALL( TARGETS bin_${file} DESTINATION bin ) ENDMACRO() -ADD_LCIO_EXAMPLE( simjob ) -ADD_LCIO_EXAMPLE( anajob ) -ADD_LCIO_EXAMPLE( recjob ) -ADD_LCIO_EXAMPLE( dumpevent ) -ADD_LCIO_EXAMPLE( copyfix ) -ADD_LCIO_EXAMPLE( stdhepjob ) -ADD_LCIO_EXAMPLE( stdhepjob_new ) -ADD_LCIO_EXAMPLE( addRandomAccess ) -ADD_LCIO_EXAMPLE( lcio_event_counter ) -ADD_LCIO_EXAMPLE( lcio_check_col_elements ) -ADD_LCIO_EXAMPLE( lcio_split_file ) -ADD_LCIO_EXAMPLE( lcio_merge_files ) -ADD_LCIO_EXAMPLE( readmcparticles ) -ADD_LCIO_EXAMPLE( lcio_performance ) -ADD_LCIO_EXAMPLE( lcio_parallel_read ) -ADD_LCIO_EXAMPLE( lcio_parallel_processing ) - -IF( BUILD_ROOTDICT ) +if( INSTALL_APPS ) + ADD_LCIO_EXAMPLE( simjob ) + ADD_LCIO_EXAMPLE( anajob ) + ADD_LCIO_EXAMPLE( recjob ) + ADD_LCIO_EXAMPLE( dumpevent ) + ADD_LCIO_EXAMPLE( copyfix ) + ADD_LCIO_EXAMPLE( stdhepjob ) + ADD_LCIO_EXAMPLE( stdhepjob_new ) + ADD_LCIO_EXAMPLE( addRandomAccess ) + ADD_LCIO_EXAMPLE( lcio_event_counter ) + ADD_LCIO_EXAMPLE( lcio_check_col_elements ) + ADD_LCIO_EXAMPLE( lcio_split_file ) + ADD_LCIO_EXAMPLE( lcio_merge_files ) + ADD_LCIO_EXAMPLE( readmcparticles ) + ADD_LCIO_EXAMPLE( lcio_performance ) + ADD_LCIO_EXAMPLE( lcio_parallel_read ) + ADD_LCIO_EXAMPLE( lcio_parallel_processing ) +endif() + +IF( BUILD_ROOTDICT AND BUILD_LCIO_EXAMPLES) ADD_LCIO_EXAMPLE( lcio_io_benchmark ) TARGET_LINK_LIBRARIES( bin_lcio_io_benchmark ${ROOT_LIBRARIES} ) ENDIF() diff --git a/src/cpp/src/EXAMPLE/lcio_io_benchmark.cc b/src/cpp/src/EXAMPLE/lcio_io_benchmark.cc index b6fee6f4d..f8bfb1691 100644 --- a/src/cpp/src/EXAMPLE/lcio_io_benchmark.cc +++ b/src/cpp/src/EXAMPLE/lcio_io_benchmark.cc @@ -182,7 +182,7 @@ int main(int argc, char** argv ){ lcReader->readStream(); } } - catch(IO::EndOfDataException) { + catch(const IO::EndOfDataException&) { } diff --git a/src/cpp/src/EXAMPLE/lcio_parallel_processing.cc b/src/cpp/src/EXAMPLE/lcio_parallel_processing.cc index a0f4cf9a8..114955fb1 100644 --- a/src/cpp/src/EXAMPLE/lcio_parallel_processing.cc +++ b/src/cpp/src/EXAMPLE/lcio_parallel_processing.cc @@ -145,7 +145,7 @@ int main(int argc, char** argv ){ try { reader.readNextRecord( listeners ); } - catch ( IO::EndOfDataException ) { + catch (const IO::EndOfDataException& ) { break; } } diff --git a/src/cpp/src/IMPL/SimCalorimeterHitImpl.cc b/src/cpp/src/IMPL/SimCalorimeterHitImpl.cc index be8850eb6..cdf7cdb9a 100644 --- a/src/cpp/src/IMPL/SimCalorimeterHitImpl.cc +++ b/src/cpp/src/IMPL/SimCalorimeterHitImpl.cc @@ -97,7 +97,7 @@ namespace IMPL{ EVENT::MCParticle * SimCalorimeterHitImpl::getParticleCont(int i) const { try{ return _vec.at(i)->Particle ; - }catch( std::out_of_range ){ + }catch(const std::out_of_range& ){ std::stringstream err ; err << "SimCalorimeterHitImpl::getParticleCont(): out_of_range :" << i ; throw EVENT::Exception( err.str() ); } diff --git a/src/cpp/src/UTIL/lXDR.cc b/src/cpp/src/UTIL/lXDR.cc index a7816b43e..53d88607d 100644 --- a/src/cpp/src/UTIL/lXDR.cc +++ b/src/cpp/src/UTIL/lXDR.cc @@ -74,9 +74,9 @@ void lXDR::setFileName(const char *filename, bool open_for_write) } int n = strlen(filename); - _fileName = new char [n + 1]; - strncpy(_fileName, filename, n); - _fileName[n] = '\0'; + _fileName = new char [n+1]; + strcpy(_fileName, filename); + //_fileName[n] = '\0'; _openForWrite = open_for_write;