Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Options #93

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
105 changes: 47 additions & 58 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,42 @@
# 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.1 FATAL_ERROR )
########################################################



# project name
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 (
Expand Down Expand Up @@ -51,8 +73,6 @@ configure_file (
"${PROJECT_SOURCE_DIR}/pom.xml"
)



### DEPENDENCIES ############################################################

LIST( APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake )
Expand All @@ -66,40 +86,31 @@ 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 )
INSTALL( CODE "EXECUTE_PROCESS( COMMAND ${CMAKE_BUILD_TOOL} jar)" )
INSTALL( FILES "${PROJECT_SOURCE_DIR}/lib/lcio.jar" DESTINATION lib )# OPTIONAL )
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)
if( INSTALL_JAR OR LCIO_GENERATE_HEADERS)
if( INSTALL_JAR OR LCIO_GENERATE_HEADERS )
INCLUDE( FindJAVA4LCIO )
IF( NOT JAVA_FOUND )
MESSAGE( FATAL_ERROR "Failed to find Java! Please set JAVA_DIR=/path/to/java \n"
"set INSTALL_JAR AND LCIO_GENERATE_HEADERS to OFF for C++ only build" )
ENDIF()
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
FIND_PACKAGE( ROOT 6.04 REQUIRED ) # look for ROOT versions >= 6.04
ENDIF()


# DCAP
#OPTION( LCIO_DCAP "Set to ON to build LCIO with dcap (dCache) support" OFF )
#MESSAGE( STATUS "LCIO_DCAP = ${LCIO_DCAP}" )
Expand All @@ -121,24 +132,19 @@ ENDIF()
# ENDIF()
#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()




### GENERATE ENVIRONMENT SCRIPT FOR CALLING ANT #############################

SET( LCIO_ENV_INIT "${PROJECT_BINARY_DIR}/lcio_env_init.sh" )

IF( NOT EXISTS ${LCIO_ENV_INIT} )
MESSAGE( STATUS "Generating lcio_env_init.sh ..." )

FILE( WRITE "${LCIO_ENV_INIT}"
"
#!/usr/bin/env bash
Expand All @@ -152,7 +158,6 @@ export PATH=${PROJECT_SOURCE_DIR}/tools:${JAVA_BIN_PATH}:$PATH
eval $*
"
)

ENDIF()

# Deal with SIO
Expand Down Expand Up @@ -211,7 +216,6 @@ SET( LCIO_AID_HEADERS_DIR "${LCIO_SOURCE_DIR}/src/aid" )

### BUILD JAR LIBRARY (USING ANT OR MAVEN) ##################################
if( INSTALL_JAR )

SET( LCIO_JAVA_BUILD_CMD "ant aid" )
OPTION( LCIO_JAVA_USE_MAVEN "Set to ON to build/install lcio.jar using maven" OFF )
IF( LCIO_JAVA_USE_MAVEN )
Expand All @@ -225,8 +229,6 @@ if( INSTALL_JAR )
COMMENT "Building lcio jar library..."
)



# custom command to generate jar library
ADD_CUSTOM_COMMAND(
OUTPUT "${PROJECT_SOURCE_DIR}/lib/lcio.jar"
Expand All @@ -237,8 +239,6 @@ if( INSTALL_JAR )

# create target to create jar library
ADD_CUSTOM_TARGET( jar DEPENDS ${PROJECT_SOURCE_DIR}/lib/lcio.jar )



### REMOVE RESTS GENERATED BY ANT IN THE SOURCE-TREE ########################

Expand All @@ -259,56 +259,45 @@ if( INSTALL_JAR )
COMMAND ${SH} "${LCIO_ENV_INIT}" ant clean
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
)



ADD_DEPENDENCIES( uninstall uninstall_headers )

endif()

### SUBDIRECTORIES ##########################################################

# 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 )



# 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()



# display some variables and write them to cache
DISPLAY_STD_VARIABLES()

MESSAGE( STATUS "BUILD_LCIO_EXAMPLES = ${BUILD_LCIO_EXAMPLES}" )
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( STATUS "BUILD_APPS = ${BUILD_APPS}" )
MESSAGE( STATUS "LCIO_GENERATE_HEADERS = ${LCIO_GENERATE_HEADERS}" )
MESSAGE( STATUS "BUILD_ROOTDICT = ${BUILD_ROOTDICT}" )
MESSAGE( STATUS "BUILD_FORTRAN = ${BUILD_FORTRAN}" )
MESSAGE( STATUS "BUILD_F77_TESTJOBS = ${BUILD_F77_TESTJOBS}" )
MESSAGE( STATUS "INSTALL_DOC = ${INSTALL_DOC}" )
MESSAGE( STATUS "BUILD_LCIO_EXAMPLES = ${BUILD_LCIO_EXAMPLES}" )
MESSAGE( STATUS "INSTALL_PYTHON = ${INSTALL_PYTHON}" )
MESSAGE( STATUS "BUILD_TESTING = ${BUILD_TESTING}" )

# generate and install following configuration files
GENERATE_PACKAGE_CONFIGURATION_FILES( LCIOConfig.cmake LCIOConfigVersion.cmake )
Expand Down
85 changes: 42 additions & 43 deletions src/cpp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
# @author Frank Gaede, DESY
# @author Jan Engels, DESY
#################################

SET( LCIO_CPPFORT_SRCS
IF( BUILD_FORTRAN )
SET( LCIO_CPPFORT_SRCS
./src/CPPFORT/HEPEVT.cc
./src/CPPFORT/lccah.cc
./src/CPPFORT/lcclu.cc
Expand All @@ -29,7 +29,21 @@ SET( LCIO_CPPFORT_SRCS
./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
Expand Down Expand Up @@ -226,7 +240,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}" )
# ----------------------------------------------------------------------------
Expand All @@ -249,16 +265,6 @@ 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"
)
# ----------------------------------------------------------------------------




# -------- include directories -----------------------------------------------
INCLUDE_DIRECTORIES( BEFORE "${LCIO_AID_HEADERS_OUTPUT_DIR}" )
INCLUDE_DIRECTORIES( BEFORE "${LCIO_CXX_HEADERS_DIR}" )
Expand All @@ -279,12 +285,6 @@ INSTALL_DIRECTORY( ${LCIO_CXX_HEADERS_DIR}/ DESTINATION include
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}
${LCIO_IOIMPL_SRCS}
Expand All @@ -296,14 +296,11 @@ INSTALL_SHARED_LIBRARY( lcio DESTINATION lib )

TARGET_LINK_LIBRARIES( lcio ${CMAKE_THREAD_LIBS_INIT} )
TARGET_LINK_LIBRARIES( lcio ${SIO_LIBRARIES} )
TARGET_LINK_LIBRARIES( lcioF77 lcio )


ADD_CUSTOM_TARGET( lib DEPENDS lcio lcioF77 )
# ----------------------------------------------------------------------------




# -------- rootdict library --------------------------------------------------

IF( BUILD_ROOTDICT )
Expand Down Expand Up @@ -347,7 +344,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} )
Expand All @@ -358,7 +355,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 --------------------
Expand Down Expand Up @@ -458,24 +455,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_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 )
IF( BUILD_ROOTDICT AND BUILD_APPS )
ADD_LCIO_EXAMPLE( lcio_io_benchmark )
TARGET_LINK_LIBRARIES( bin_lcio_io_benchmark ${ROOT_LIBRARIES} )
ENDIF()
Expand Down