lcio
diff -u -r1.16 -r1.17
--- CMakeLists.txt 27 Jun 2007 13:35:24 -0000 1.16
+++ CMakeLists.txt 2 Jul 2007 10:09:57 -0000 1.17
@@ -25,7 +25,7 @@
OPTION( BUILD_SHARED_LIBS "Set to OFF to build static libraries" ON )
OPTION( BUILD_LCIO_TESTJOBS "Set to ON to build LCIO testjobs" OFF )
OPTION( BUILD_F77_TESTJOBS "Set to ON to build LCIO F77 testjobs" OFF )
-OPTION( INSTALL_DOC "Set to ON to install Documentation" ON )
+OPTION( INSTALL_DOC "Set to OFF to skip build/install Documentation" ON )
# set default cmake build type to RelWithDebInfo
IF( NOT CMAKE_BUILD_TYPE )
@@ -42,34 +42,37 @@
IF( NOT DEFINED ENV{JDK_HOME} AND NOT DEFINED ENV{JAVA_HOME} )
MESSAGE( STATUS "Autodetecting java..." )
FIND_PACKAGE( Java )
- IF( JAVA_RUNTIME )
+ IF( JAVA_RUNTIME AND JAVA_COMPILE AND JAVA_ARCHIVE )
SET( java_bin "${JAVA_RUNTIME}" )
- #IF( UNIX )
- # # initialize flow-control variable
- # SET( link_found TRUE )
- #
- # # dereference links
- # WHILE( link_found )
- # # check if the java binary is a symbolic link
- # EXEC_PROGRAM( file ARGS "${java_bin}"
- # OUTPUT_VARIABLE out_tmp
- # RETURN_VALUE out_ret )
- # IF( out_ret )
- # MESSAGE( STATUS "Error dereferencing links to Java Home!!" )
- # MESSAGE( FATAL_ERROR "${out_tmp}" )
- # ENDIF()
- # # set variable if link is found
- # STRING( REGEX MATCH " symbolic link to " link_found "${out_tmp}" )
- # IF( link_found )
- # # get the file to where the link points to
- # STRING( REGEX REPLACE ".* symbolic link to (.*)" "\\1" out_regex "${out_tmp}" )
- # MESSAGE( STATUS "Java binary ${java_bin} is a symbolic link to ${out_regex}" )
- # SET( java_bin "${out_regex}" )
- # ENDIF()
- # ENDWHILE()
- #ENDIF()
- # get java_path out of java binary
- STRING( REGEX REPLACE "(.*)\\/bin\\/java$" "\\1" java_path ${java_bin} )
+ IF( UNIX AND NOT APPLE )
+ # initialize flow-control variable
+ SET( link_found TRUE )
+
+ # dereference links
+ WHILE( link_found )
+ # check if the java binary is a symbolic link
+ EXEC_PROGRAM( file ARGS "${java_bin}"
+ OUTPUT_VARIABLE out_tmp
+ RETURN_VALUE out_ret )
+ IF( out_ret )
+ MESSAGE( STATUS "Error dereferencing links to Java Home!!" )
+ MESSAGE( FATAL_ERROR "${out_tmp}" )
+ ENDIF()
+ # set variable if link is found
+ STRING( REGEX MATCH " symbolic link to " link_found "${out_tmp}" )
+ IF( link_found )
+ # get the file to where the link points to
+ STRING( REGEX REPLACE ".* symbolic link to (.*)" "\\1" out_regex "${out_tmp}" )
+ MESSAGE( STATUS "Java binary ${java_bin} is a symbolic link to ${out_regex}" )
+ SET( java_bin "${out_regex}" )
+ ENDIF()
+ ENDWHILE()
+ ENDIF()
+
+ # extract java_path out of full path to java runtime
+ STRING( REGEX REPLACE "(.*)\\/[^/]+\\/java$" "\\1" java_path ${java_bin} )
+ # extract java_bin_path out of full path to java runtime
+ STRING( REGEX REPLACE "(.*)\\/java$" "\\1" java_bin_path ${java_bin} )
ELSE()
MESSAGE( FATAL_ERROR "Java was not found in your system!!" )
ENDIF()
@@ -92,14 +95,42 @@
SET( java_path "$ENV{JDK_HOME}" )
ENDIF()
IF( DEFINED ENV{JAVA_HOME} )
- SET( java_path "$ENV{JAVA_HOME}" )
+ SET( java_path "$ENV{JAVA_HOME}" )
ENDIF()
ENDIF()
- SET( java_bin "${java_path}/bin/java" )
- IF( NOT EXISTS "${java_bin}" )
- MESSAGE( FATAL_ERROR
- "Java runtime not found in: ${java_bin}" )
+
+ # find java, javac and jar
+ FIND_PROGRAM( java_bin
+ java
+ ${java_path}/bin
+ #FIXME add path to MacOS here
+ NO_DEFAULT_PATH )
+
+ FIND_PROGRAM( javac_bin
+ javac
+ ${java_path}/bin
+ #FIXME add path to MacOS here
+ NO_DEFAULT_PATH )
+
+ FIND_PROGRAM( jar_bin
+ jar
+ ${java_path}/bin
+ #FIXME add path to MacOS here
+ NO_DEFAULT_PATH )
+
+ # abort if not found
+ IF( java_bin-NOTFOUND )
+ MESSAGE( FATAL_ERROR "Could not find java!!" )
+ ENDIF()
+ IF( javac_bin-NOTFOUND )
+ MESSAGE( FATAL_ERROR "Could not find javac!!" )
ENDIF()
+ IF( jar_bin-NOTFOUND )
+ MESSAGE( FATAL_ERROR "Could not find jar!!" )
+ ENDIF()
+
+ # extract bin path from full path
+ STRING( REGEX REPLACE "(.*)\\/java$" "\\1" java_bin_path ${java_bin} )
ENDIF()
# parse the output of java -version
@@ -116,17 +147,17 @@
MESSAGE( STATUS "JDK_HOME and JAVA_HOME set to ${java_path}" )
MESSAGE( STATUS "Java version ${java_version} configured successfully!" )
-# set environment variables for ant
+# set environment variables for
+# generating header files with ant aid.generate
SET( ENV{JDK_HOME} "${java_path}" )
SET( ENV{JAVA_HOME} "${java_path}" )
SET( ENV{LCIO} "${CMAKE_SOURCE_DIR}" )
-SET( ENV{PATH} "${CMAKE_SOURCE_DIR}/tools:${java_path}/bin:$ENV{PATH}" )
+SET( ENV{PATH} "${CMAKE_SOURCE_DIR}/tools:${java_bin_path}:$ENV{PATH}" )
# generate header files with ant aid.generate
-# FIXME should be done with custom target - problem: env vars
IF( NOT EXISTS "${CMAKE_SOURCE_DIR}/src/cpp/include/EVENT/LCIO.h" )
- MESSAGE( STATUS "Generating ${PROJECT_NAME} header files with ant aid.generate..." )
+ MESSAGE( STATUS "Generating header files with ant aid.generate..." )
EXEC_PROGRAM( ant "${CMAKE_SOURCE_DIR}"
ARGS aid.generate
OUTPUT_VARIABLE out_tmp
@@ -140,22 +171,60 @@
ENDIF()
ENDIF()
-# LCIO - JAVA
-# FIXME not working correctly - problem: env vars
-# for this to work the environment variables:
-# LCIO, JDK_HOME and PATH have to be set BEFORE
-# running cmake
-# workaround until shell script is written for
-# calling ant aid
-# command for calling ant aid
-ADD_CUSTOM_COMMAND(
- OUTPUT "${CMAKE_SOURCE_DIR}/lib/lcio.jar"
- COMMAND ant ARGS aid
- WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
- COMMENT "Building LCIO Java..."
- VERBATIM )
-# create java target
-ADD_CUSTOM_TARGET( jar DEPENDS "${CMAKE_SOURCE_DIR}/lib/lcio.jar" )
+# generate shell script for setting environment
+# and calling ant aid
+FILE( WRITE "${CMAKE_BINARY_DIR}/script.sh"
+ "export LCIO=${CMAKE_SOURCE_DIR}\n"
+ "export JDK_HOME=${java_path}\n"
+ "export JAVA_HOME=${java_path}\n"
+ "export PATH=${java_path}/bin:${CMAKE_SOURCE_DIR}/tools:$PATH\n"
+ "ant $1" )
+
+# find shell
+FIND_PROGRAM( SH
+ sh
+ ${CYGWIN_INSTALL_PATH}/bin
+ /bin
+ /usr/bin
+ /usr/local/bin
+ /sbin
+ # FIXME add path to MacOS here
+)
+MARK_AS_ADVANCED( SH )
+
+IF( SH-NOTFOUND )
+ MESSAGE( STATUS "Unix Shell not found - cannot enable jar target!!" )
+ELSE()
+
+ # LCIO - JAVA
+ ADD_CUSTOM_COMMAND(
+ OUTPUT "${CMAKE_SOURCE_DIR}/lib/lcio.jar"
+ COMMAND ${SH} ARGS "${CMAKE_BINARY_DIR}/script.sh" aid
+ WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
+ COMMENT "Building LCIO Java..."
+ VERBATIM )
+
+ # create java target
+ ADD_CUSTOM_TARGET( jar DEPENDS "${CMAKE_SOURCE_DIR}/lib/lcio.jar" )
+
+ #ADD_CUSTOM_COMMAND(
+ # OUTPUT "${CMAKE_BINARY_DIR}/src/cpp/include/EVENT/LCIO.h"
+ # COMMAND ${SH} ARGS "${CMAKE_BINARY_DIR}/script.sh" aid.generate
+ # WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
+ # COMMENT "Generating header files with ant aid.generate..."
+ # VERBATIM )
+ #
+ #ADD_CUSTOM_TARGET( headers DEPENDS
+ # "${CMAKE_BINARY_DIR}/src/cpp/include/EVENT/LCIO.h" )
+
+ # create "always out-of-date" headers target
+ ADD_CUSTOM_TARGET( headers
+ COMMAND ${SH} "${CMAKE_BINARY_DIR}/script.sh" aid.generate
+ WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
+ COMMENT "Generating header files with ant aid.generate..."
+ VERBATIM )
+
+ENDIF()
# DOCUMENTATION
FIND_PACKAGE( Doxygen )
@@ -209,7 +278,7 @@
DEPENDS "${CMAKE_SOURCE_DIR}/doc/manual.pdf" )
# reference manual
- # FIXME this is not working correctly
+ # FIXME this is not working correctly: latex returns error!
#ADD_CUSTOM_COMMAND(
# OUTPUT "${CMAKE_SOURCE_DIR}/doc/doxygen_api/latex/refman.dvi"
# COMMAND "${LATEX_COMPILER}" ARGS -interaction=batchmode refman.tex
@@ -344,7 +413,11 @@
SET( BUILD_F77_TESTJOBS "${BUILD_F77_TESTJOBS}" CACHE BOOL
"Set to ON to build LCIO F77 testbobs" FORCE )
SET( INSTALL_DOC "${INSTALL_DOC}" CACHE BOOL
- "Set to ON to install Documentation" FORCE )
+ "Set to OFF to skip build/install Documentation" FORCE )
+
+# export build settings
+INCLUDE( CMakeExportBuildSettings )
+CMAKE_EXPORT_BUILD_SETTINGS( "${PROJECT_NAME}BuildSettings.cmake" )
# export library dependencies (keep this as the last line in the file)
EXPORT_LIBRARY_DEPENDENCIES( "${PROJECT_NAME}LibDeps.cmake" )
lcio/src/f77
diff -u -r1.4 -r1.5
--- CMakeLists.txt 22 Jun 2007 12:20:59 -0000 1.4
+++ CMakeLists.txt 2 Jul 2007 10:09:57 -0000 1.5
@@ -17,26 +17,23 @@
simjob_chain
)
-IF( BUILD_F77_TESTJOBS )
-
- # create symbolic bin target for calling targets bin_XXX
- ADD_CUSTOM_TARGET( f77 )
+# create symbolic bin target for calling targets bin_XXX
+ADD_CUSTOM_TARGET( f77 )
- # loop through list of binaries
- FOREACH( bin ${f77_bins} )
- # create target for binary
- ADD_EXECUTABLE( f77_${bin} EXCLUDE_FROM_ALL ${bin}.F )
- # tell bin target to call this bin_XXX target
- ADD_DEPENDENCIES( f77 f77_${bin} )
- # avoid conflicts between library and binary target names
- SET_TARGET_PROPERTIES( f77_${bin} PROPERTIES OUTPUT_NAME ${bin}_F )
- # link against project library
-
- #FIXME: frtbegin g2c and gfortran needs to be tested
- #TARGET_LINK_LIBRARIES( f77_${bin} lib_LCIO lib_LCIOF77 frtbegin g2c )
- TARGET_LINK_LIBRARIES( f77_${bin} lib_LCIO lib_LCIOF77 )
+# loop through list of binaries
+FOREACH( bin ${f77_bins} )
+ # create target for binary
+ ADD_EXECUTABLE( f77_${bin} EXCLUDE_FROM_ALL ${bin}.F )
+ # tell bin target to call this bin_XXX target
+ ADD_DEPENDENCIES( f77 f77_${bin} )
+ # avoid conflicts between library and binary target names
+ SET_TARGET_PROPERTIES( f77_${bin} PROPERTIES OUTPUT_NAME ${bin}_F )
+ # link against project library
+
+ #FIXME: frtbegin g2c and gfortran needs to be tested
+ #TARGET_LINK_LIBRARIES( f77_${bin} lib_LCIO lib_LCIOF77 frtbegin g2c )
+ TARGET_LINK_LIBRARIES( f77_${bin} lib_LCIO lib_LCIOF77 )
- # install binary commando
- INSTALL( TARGETS f77_${bin} DESTINATION bin )
- ENDFOREACH()
-ENDIF()
+ # install binary commando
+ INSTALL( TARGETS f77_${bin} DESTINATION bin )
+ENDFOREACH()