diff --git c/cmake/Modules/ClhepBuildLibrary.cmake w/cmake/Modules/ClhepBuildLibrary.cmake index 7f4fcc0f..b7445413 100644 --- c/cmake/Modules/ClhepBuildLibrary.cmake +++ w/cmake/Modules/ClhepBuildLibrary.cmake @@ -20,45 +20,52 @@ macro(clhep_build_library package) # check for dependencies set( package_library_list ) - set(package_library_list_static) + set(package_library_listS) if( ${PACKAGE}_DEPS ) foreach ( dep ${${PACKAGE}_DEPS} ) ##message( STATUS "clhep_build_library ${package} will use ${dep}") list(APPEND package_library_list ${dep}) - list(APPEND package_library_list_static ${dep}S) + list(APPEND package_library_listS ${dep}S) endforeach() endif() + function(make_library package suffix type) + ADD_LIBRARY(${package}${suffix} ${type} ${CLHEP_${package}_SOURCES}) + SET_TARGET_PROPERTIES(${package}${suffix} + PROPERTIES + OUTPUT_NAME CLHEP-${package}-${VERSION} + ) + # Do not add -Dname_EXPORTS to the command-line when building files in this + # target. Doing so is actively harmful for the modules build because it + # creates extra module variants, and not useful because we don't use these + # macros. + SET_TARGET_PROPERTIES(${package}${suffix} PROPERTIES DEFINE_SYMBOL "") + target_link_libraries(${package}${suffix} ${package_library_list${suffix}} ) + + endfunction() + # Add the libraries and set properties - ADD_LIBRARY(${package} SHARED ${CLHEP_${package}_SOURCES}) - ADD_LIBRARY(${package}S STATIC ${CLHEP_${package}_SOURCES}) - SET_TARGET_PROPERTIES (${package} - PROPERTIES - OUTPUT_NAME CLHEP-${package}-${VERSION} - ) - SET_TARGET_PROPERTIES(${package}S - PROPERTIES - OUTPUT_NAME CLHEP-${package}-${VERSION} - ) + make_library(${package} "" SHARED) + if (CLHEP_BUILD_STATIC_LIBS) + make_library(${package} "S" STATIC) + endif() - # Do not add -Dname_EXPORTS to the command-line when building files in this - # target. Doing so is actively harmful for the modules build because it - # creates extra module variants, and not useful because we don't use these - # macros. - SET_TARGET_PROPERTIES(${package} PROPERTIES DEFINE_SYMBOL "") - SET_TARGET_PROPERTIES(${package}S PROPERTIES DEFINE_SYMBOL "") - - target_link_libraries(${package} ${package_library_list} ) - target_link_libraries(${package}S ${package_library_list_static} ) + set(CLHEP_library_targets) + list(APPEND CLHEP_library_targets ${package}) + if (CLHEP_BUILD_STATIC_LIBS) + list(APPEND CLHEP_library_targets ${package}S) + endif() # Install the libraries - INSTALL (TARGETS ${package} ${package}S - EXPORT CLHEPLibraryDepends - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib${LIB_SUFFIX} - ARCHIVE DESTINATION lib${LIB_SUFFIX} - INCLUDES DESTINATION include - ) + INSTALL (TARGETS ${CLHEP_library_targets} + EXPORT CLHEPLibraryDepends + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib${LIB_SUFFIX} + ARCHIVE DESTINATION lib${LIB_SUFFIX} + INCLUDES DESTINATION include + ) + + endmacro(clhep_build_library) macro(clhep_build_libclhep ) @@ -69,48 +76,63 @@ macro(clhep_build_libclhep ) endforeach() ##message( STATUS "clheplib source list ${clhep_sources}" ) - ADD_LIBRARY (CLHEP SHARED ${clhep_sources}) - ADD_LIBRARY (CLHEPS STATIC ${clhep_sources}) + function(make_clhep suffix type ) + ADD_LIBRARY (CLHEP${suffix} ${type} ${clhep_sources}) - SET_TARGET_PROPERTIES(CLHEP + SET_TARGET_PROPERTIES(CLHEP${suffix} PROPERTIES OUTPUT_NAME CLHEP-${VERSION} - ) - SET_TARGET_PROPERTIES(CLHEPS - PROPERTIES - OUTPUT_NAME CLHEP-${VERSION} - ) - # Do not add -Dname_EXPORTS to the command-line when building files in this - # target. Doing so is actively harmful for the modules build because it - # creates extra module variants, and not useful because we don't use these - # macros. - SET_TARGET_PROPERTIES(CLHEP PROPERTIES DEFINE_SYMBOL "") - SET_TARGET_PROPERTIES(CLHEPS PROPERTIES DEFINE_SYMBOL "") + ) + + # Do not add -Dname_EXPORTS to the command-line when building files in this + # target. Doing so is actively harmful for the modules build because it + # creates extra module variants, and not useful because we don't use these + # macros. + SET_TARGET_PROPERTIES(CLHEP${suffix} PROPERTIES DEFINE_SYMBOL "") + + endfunction() + + make_clhep("" SHARED) + if (CLHEP_BUILD_STATIC_LIBS) + make_clhep("S" STATIC) + endif() + + set(CLHEP_targets) + list(APPEND CLHEP_targets CLHEP) + if (CLHEP_BUILD_STATIC_LIBS) + list(APPEND CLHEP_targets CLHEPS) + endif() # export creates library dependency files for CLHEPConfig.cmake - INSTALL(TARGETS CLHEP CLHEPS - EXPORT CLHEPLibraryDepends - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib${LIB_SUFFIX} - ARCHIVE DESTINATION lib${LIB_SUFFIX} - INCLUDES DESTINATION include - ) + INSTALL(TARGETS ${CLHEP_targets} + EXPORT CLHEPLibraryDepends + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib${LIB_SUFFIX} + ARCHIVE DESTINATION lib${LIB_SUFFIX} + INCLUDES DESTINATION include + ) if( ${CMAKE_SYSTEM_NAME} MATCHES "Windows" ) # copy + if (CLHEP_BUILD_STATIC_LIBS) file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/clhep_static_symlink "execute_process(COMMAND \"${CMAKE_COMMAND}\" -E copy ${CMAKE_STATIC_LIBRARY_PREFIX}CLHEP-${VERSION}${CMAKE_STATIC_LIBRARY_SUFFIX} ${CMAKE_STATIC_LIBRARY_PREFIX}CLHEP${CMAKE_STATIC_LIBRARY_SUFFIX} WORKING_DIRECTORY \"$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}\" )" ) + endif() file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/clhep_shared_symlink "execute_process(COMMAND \"${CMAKE_COMMAND}\" -E copy ${CMAKE_SHARED_LIBRARY_PREFIX}CLHEP-${VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX} ${CMAKE_SHARED_LIBRARY_PREFIX}CLHEP${CMAKE_SHARED_LIBRARY_SUFFIX} WORKING_DIRECTORY \"$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin\" )" ) else() # create the symbolic links + if (CLHEP_BUILD_STATIC_LIBS) file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/clhep_static_symlink "execute_process(COMMAND \"${CMAKE_COMMAND}\" -E create_symlink ${CMAKE_STATIC_LIBRARY_PREFIX}CLHEP-${VERSION}${CMAKE_STATIC_LIBRARY_SUFFIX} ${CMAKE_STATIC_LIBRARY_PREFIX}CLHEP${CMAKE_STATIC_LIBRARY_SUFFIX} WORKING_DIRECTORY \"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}\" )" ) + endif() file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/clhep_shared_symlink "execute_process(COMMAND \"${CMAKE_COMMAND}\" -E create_symlink ${CMAKE_SHARED_LIBRARY_PREFIX}CLHEP-${VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX} ${CMAKE_SHARED_LIBRARY_PREFIX}CLHEP${CMAKE_SHARED_LIBRARY_SUFFIX} WORKING_DIRECTORY \"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}\" )" ) endif() - INSTALL(SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/clhep_static_symlink ) + if (CLHEP_BUILD_STATIC_LIBS) + INSTALL(SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/clhep_static_symlink ) + endif() INSTALL(SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/clhep_shared_symlink ) endmacro(clhep_build_libclhep ) diff --git c/cmake/Modules/ClhepBuildTest.cmake w/cmake/Modules/ClhepBuildTest.cmake index 614b18e8..4c2c9aea 100644 --- c/cmake/Modules/ClhepBuildTest.cmake +++ w/cmake/Modules/ClhepBuildTest.cmake @@ -26,14 +26,14 @@ macro( clhep_test testname ) if( CTST_NOLIB ) set(package_library_list) else() - set( package_library_list ${PACKAGE}S) + set( package_library_list ${PACKAGE}) #set( package_library_list ${PROJECT_BINARY_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}CLHEP-${PACKAGE}-${VERSION}${CMAKE_STATIC_LIBRARY_SUFFIX} ) endif() if( ${PACKAGE}_DEPS ) foreach ( dep ${${PACKAGE}_DEPS} ) ##message( STATUS "clhep_test ${testname} will use ${dep}") - list(APPEND package_library_list ${PACKAGE}S) + list(APPEND package_library_list ${PACKAGE}) #list(APPEND package_library_list ${PROJECT_BINARY_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}CLHEP-${dep}-${VERSION}${CMAKE_STATIC_LIBRARY_SUFFIX} ) endforeach() endif() diff --git c/cmake/Modules/ClhepToolchain.cmake w/cmake/Modules/ClhepToolchain.cmake index a7f53c23..428ba3ac 100644 --- c/cmake/Modules/ClhepToolchain.cmake +++ w/cmake/Modules/ClhepToolchain.cmake @@ -57,10 +57,16 @@ configure_package_config_file(${PROJECT_SOURCE_DIR}/cmake/Templates/CLHEPConfig. # First build up list of all modular targets, static and shared set(CLHEP_libraries_all ${CLHEP_libraries}) foreach(_lib ${CLHEP_libraries}) - list(APPEND CLHEP_libraries_all "${_lib}S") + if (CLHEP_BUILD_STATIC_LIBS) + list(APPEND CLHEP_libraries_all "${_lib}S") + endif() endforeach() -export(TARGETS CLHEP CLHEPS ${CLHEP_libraries_all} +if (CLHEP_BUILD_STATIC_LIBS) + list(APPEND CLHEP_libraries_all "CLHEPS") +endif() + +export(TARGETS CLHEP ${CLHEP_libraries_all} NAMESPACE "CLHEP::" FILE ${PROJECT_BINARY_DIR}/CLHEPLibraryDepends.cmake ) diff --git c/cmake/Modules/ClhepVariables.cmake w/cmake/Modules/ClhepVariables.cmake index dc21ceee..00746a51 100644 --- c/cmake/Modules/ClhepVariables.cmake +++ w/cmake/Modules/ClhepVariables.cmake @@ -26,6 +26,9 @@ option(CLHEP_SINGLE_THREAD "Build without multithreading" OFF) # CLHEP_BUILD_DOCS is OFF (false) by default option(CLHEP_BUILD_DOCS "Build and install CLHEP documentation" OFF) +# CLHEP_BUILD_STATIC_LIBS is ON (true) by default +option(CLHEP_BUILD_STATIC_LIBS "Build and install CLHEP static libraries" ON) + macro( clhep_check_variable_names ) # useful if you need to check a variable message( STATUS "clhep_check_variable_names: CMAKE_SYSTEM_NAME is ${CMAKE_SYSTEM_NAME}" )