From: Alan W. I. <ai...@us...> - 2007-03-22 20:31:14
|
Update of /cvsroot/plplot/plplot/cmake/modules In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3011 Modified Files: CMakeDetermineAdaCompiler.cmake CMakeAdaInformation.cmake Log Message: Solve a number of Ada CMake support issues. Previously, the Ada library did not honor source-code dependencies, any attempt to "make clean" lead to errors in "make" afterward, and the Ada build test (currently replaced by a no-op) did not work. Experimentally, I found that all but the last issue could be solved by making sure that all variables determined by CMakeDetermineAdaCompiler.cmake, that were not in the special list of <> variables, were cached. However, even caching did not help the problem with the Ada build test. Thus, I replaced non-special variables with special ones as much as possible. That left only GNAT_EXECUTABLE_BUILDER so to cover off that problem, I redetermined it (if necessary) in CMakeAdaInformation.cmake. That solved all known CMake Ada support issues on Linux. Index: CMakeAdaInformation.cmake =================================================================== RCS file: /cvsroot/plplot/plplot/cmake/modules/CMakeAdaInformation.cmake,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- CMakeAdaInformation.cmake 16 Mar 2007 05:31:23 -0000 1.7 +++ CMakeAdaInformation.cmake 22 Mar 2007 20:29:43 -0000 1.8 @@ -124,11 +124,11 @@ # Temporary fixup for one user's Ada/Mac OS X problems when using the # the 4.2 version of the http://macada.org/ version of the GNAT compiler. SET(CMAKE_Ada_CREATE_SHARED_LIBRARY - "${GNAT_SHARED_LINKER} <CMAKE_SHARED_LIBRARY_Ada_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_Ada_FLAGS> <CMAKE_SHARED_LIBRARY_SONAME_Ada_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES> -lgcc_s.1" + "<CMAKE_Ada_COMPILER> <CMAKE_SHARED_LIBRARY_Ada_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_Ada_FLAGS> <CMAKE_SHARED_LIBRARY_SONAME_Ada_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES> -lgcc_s.1" ) ELSE(APPLE) SET(CMAKE_Ada_CREATE_SHARED_LIBRARY - "${GNAT_SHARED_LINKER} <CMAKE_SHARED_LIBRARY_Ada_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_Ada_FLAGS> <CMAKE_SHARED_LIBRARY_SONAME_Ada_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>" + "<CMAKE_Ada_COMPILER> <CMAKE_SHARED_LIBRARY_Ada_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_Ada_FLAGS> <CMAKE_SHARED_LIBRARY_SONAME_Ada_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>" ) ENDIF(APPLE) ENDIF(NOT CMAKE_Ada_CREATE_SHARED_LIBRARY) @@ -176,12 +176,19 @@ # In sum, you have to be careful of your target name, the nominal source file # name has to be compilable, but otherwise it is ignored, and you must specify -# the required -aI and other CMAKE_Ada_COMPILER = gnatmake options +# the required -aI and other GNAT_EXECUTABLE_BUILDER = gnatmake options # using LINK_FLAGS specified with set_target_properties. # However, so long as you pay attention to these # constraints, add_executable should work for the Ada language. IF(NOT CMAKE_Ada_LINK_EXECUTABLE) + # N.B. under some circumstances (build tests) GNAT_EXECUTABLE_BUILDER is not + # defined at this stage for unknown reasons so try to find it again as a + # last resort. + GET_FILENAME_COMPONENT(COMPILER_LOCATION "${CMAKE_Ada_COMPILER}" + PATH) + FIND_PROGRAM(GNAT_EXECUTABLE_BUILDER NAMES gnatmake PATHS ${COMPILER_LOCATION} ) + IF(APPLE) # Temporary fixup for one user's Ada/Mac OS X problems when using the # the 4.2 version of the http://macada.org/ version of the GNAT compiler. Index: CMakeDetermineAdaCompiler.cmake =================================================================== RCS file: /cvsroot/plplot/plplot/cmake/modules/CMakeDetermineAdaCompiler.cmake,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- CMakeDetermineAdaCompiler.cmake 13 Mar 2007 10:05:53 -0000 1.3 +++ CMakeDetermineAdaCompiler.cmake 22 Mar 2007 20:29:43 -0000 1.4 @@ -44,7 +44,6 @@ GET_FILENAME_COMPONENT(COMPILER_LOCATION "${CMAKE_Ada_COMPILER}" PATH) -SET(GNAT_SHARED_LINKER ${CMAKE_Ada_COMPILER}) FIND_PROGRAM(GNAT_EXECUTABLE_BUILDER NAMES gnatmake PATHS ${COMPILER_LOCATION} ) FIND_PROGRAM(CMAKE_AR NAMES ar PATHS ${COMPILER_LOCATION} ) |