Print

Print


Commit in lcio on MAIN
CMakeLists.txt+128-551.16 -> 1.17
sio/CMakeLists.txt+4-21.6 -> 1.7
src/f77/CMakeLists.txt+18-211.4 -> 1.5
+150-78
3 modified files
improved java finding code
added generation of shell script for calling ant $1
added "headers" target for generating header files with ant
fixme: some MacOS paths have to be added in the "find java" section

lcio
CMakeLists.txt 1.16 -> 1.17
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/sio
CMakeLists.txt 1.6 -> 1.7
diff -u -r1.6 -r1.7
--- CMakeLists.txt	22 Jun 2007 12:20:59 -0000	1.6
+++ CMakeLists.txt	2 Jul 2007 10:09:57 -0000	1.7
@@ -11,10 +11,12 @@
 SET( SIO_MAJOR_VERSION 1 )
 SET( SIO_MINOR_VERSION 8 )
 SET( SIO_PATCH_LEVEL 3 )
-SET( ${PROJECT_NAME}_VERSION
-    "${${PROJECT_NAME}_MAJOR_VERSION}.${${PROJECT_NAME}_MINOR_VERSION}.${${PROJECT_NAME}_PATCH_LEVEL}" )
+
+# 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}" )
 
 #INCLUDE(FindZLIB)
 FIND_PACKAGE( ZLIB REQUIRED )

lcio/src/f77
CMakeLists.txt 1.4 -> 1.5
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()
CVSspam 0.2.8