diff --git a/CMakeLists.txt b/CMakeLists.txt index 49db2de8d042cb7d18743d35effe710492596ebe..6dbc0154c6e0d9e8e8a37203da59cf29589cd77a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -68,6 +68,7 @@ option(DD4HEP_IGNORE_GEANT4_TLS "Ignore the tls flag Geant4 was compiled with" O option(DD4HEP_USE_GEAR "Build gear wrapper for backward compatibility" OFF) option(DD4HEP_USE_LCIO "Build lcio extensions" OFF) option(BUILD_TESTING "Enable and build tests" ON) +option(BUILD_SHARED_LIBS "If OFF build STATIC Libraries" ON) option(CMAKE_MACOSX_RPATH "Build with rpath on macos" ON) SET(DD4HEP_BUILD_PACKAGES "DDRec DDDetectors DDCond DDAlign DDDigi DDG4 DDEve UtilityApps" CACHE STRING "List of DD4hep packages to build") diff --git a/DDAlign/CMakeLists.txt b/DDAlign/CMakeLists.txt index 4a3f56d9cc44e27dddb9e8cbd72e075ca61ff6ac..fea6fe8f6cb6c3ba904e1280c87659ff44b79315 100644 --- a/DDAlign/CMakeLists.txt +++ b/DDAlign/CMakeLists.txt @@ -12,7 +12,7 @@ SET_PROPERTY(DIRECTORY . PROPERTY PACKAGE_NAME DDAlign) file(GLOB DDAlign_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp) -add_library(DDAlign SHARED ${DDAlign_SOURCES}) +add_library(DDAlign ${DDAlign_SOURCES}) add_library(DD4hep::DDAlign ALIAS DDAlign) target_include_directories(DDAlign @@ -28,4 +28,6 @@ dd4hep_add_plugin(DDAlignPlugins SOURCES src/plugins/*.cpp USES DDAlign) set_target_properties(DDAlign DDAlignPlugins PROPERTIES VERSION ${DD4hep_VERSION} SOVERSION ${DD4hep_SOVERSION}) install(DIRECTORY include/DDAlign DESTINATION include) -install(TARGETS DDAlign DDAlignPlugins EXPORT DD4hep DESTINATION lib) +install(TARGETS DDAlign DDAlignPlugins EXPORT DD4hep + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib) diff --git a/DDCond/CMakeLists.txt b/DDCond/CMakeLists.txt index f611348fefdcbaf47bde81f1dac1243c75823dab..10c8fade1aaebe830793c1f2a50fc09ce76fbf87 100644 --- a/DDCond/CMakeLists.txt +++ b/DDCond/CMakeLists.txt @@ -18,7 +18,7 @@ dd4hep_add_dictionary(G__DDCond file(GLOB DDCond_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp) -add_library(DDCond SHARED ${DDCond_SOURCES} G__DDCond.cxx) +add_library(DDCond ${DDCond_SOURCES} G__DDCond.cxx) add_library(DD4hep::DDCond ALIAS DDCond) target_include_directories(DDCond @@ -37,4 +37,6 @@ dd4hep_add_plugin(DDCondPlugins set_target_properties(DDCond DDCondPlugins PROPERTIES VERSION ${DD4hep_VERSION} SOVERSION ${DD4hep_SOVERSION}) install(DIRECTORY include/DDCond DESTINATION include) -install(TARGETS DDCond DDCondPlugins EXPORT DD4hep DESTINATION lib) +install(TARGETS DDCond DDCondPlugins EXPORT DD4hep + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib) diff --git a/DDCore/CMakeLists.txt b/DDCore/CMakeLists.txt index 44d188773f7a89a8469015fb377cc532b62915dc..2a3ac33661bba1bbf743852e6018a4198c323123 100644 --- a/DDCore/CMakeLists.txt +++ b/DDCore/CMakeLists.txt @@ -58,7 +58,7 @@ if(TARGET Boost::boost) file(GLOB DDCore_BOOST_SOURCES src/JSON/*.cpp) endif() -add_library(DDCore SHARED ${DDCore_SOURCES} ${DDCore_BOOST_SOURCES} +add_library(DDCore ${DDCore_SOURCES} ${DDCore_BOOST_SOURCES} G__DD4hep.cxx G__DD4hepSegmentations.cxx G__DD4hepProperties.cxx @@ -97,7 +97,7 @@ IF(TARGET ROOT::Gdml) USES DD4hep::DDCore ROOT::Core ROOT::Gdml ) set_target_properties(DDGDMLPlugins PROPERTIES VERSION ${DD4hep_VERSION} SOVERSION ${DD4hep_SOVERSION}) - install(TARGETS DDGDMLPlugins EXPORT DD4hep LIBRARY DESTINATION lib) + LIST(APPEND OPTIONAL_TARGETS DDGDMLPlugins) ELSE() dd4hep_print("ROOT does not include GDML, not building DDCore GDML Plugins") ENDIF() @@ -109,7 +109,7 @@ IF(TARGET ROOT::PyROOT) USES DDCore ROOT::Core ROOT::PyROOT ) set_target_properties(DDPythonPlugins PROPERTIES VERSION ${DD4hep_VERSION} SOVERSION ${DD4hep_SOVERSION}) - install(TARGETS DDPythonPlugins EXPORT DD4hep LIBRARY DESTINATION lib) + LIST(APPEND OPTIONAL_TARGETS DDPythonPlugins) ELSE() dd4hep_print("ROOT does not include PyRoot, not building DDCore DDPython Plugins") ENDIF() @@ -130,4 +130,7 @@ install(DIRECTORY ) set_target_properties(DDCore DDCorePlugins PROPERTIES VERSION ${DD4hep_VERSION} SOVERSION ${DD4hep_SOVERSION}) -install(TARGETS DDCore DDCorePlugins EXPORT DD4hep LIBRARY DESTINATION lib) +install(TARGETS DDCore DDCorePlugins ${OPTIONAL_TARGETS} EXPORT DD4hep + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib + ) diff --git a/DDDetectors/CMakeLists.txt b/DDDetectors/CMakeLists.txt index 8e248693e0edbfa191efc925d6787c63bdaa868f..1851b2a972edddb9a55e5fead24487db137c5d7e 100644 --- a/DDDetectors/CMakeLists.txt +++ b/DDDetectors/CMakeLists.txt @@ -25,5 +25,8 @@ dd4hep_add_plugin(DDDetectors ) set_target_properties(DDDetectors PROPERTIES VERSION ${DD4hep_VERSION} SOVERSION ${DD4hep_SOVERSION}) -install(TARGETS DDDetectors EXPORT DD4hep LIBRARY DESTINATION lib) +install(TARGETS DDDetectors EXPORT DD4hep + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib + ) install(DIRECTORY compact DESTINATION DDDetectors) diff --git a/DDDigi/CMakeLists.txt b/DDDigi/CMakeLists.txt index c0ac553a0ca3e0322a83fb850e6ab615a1e103e9..d6f26201f0e6c92d8a67bb7cf23e83f384fcf997 100644 --- a/DDDigi/CMakeLists.txt +++ b/DDDigi/CMakeLists.txt @@ -10,7 +10,7 @@ #========================================================================== SET_PROPERTY(DIRECTORY . PROPERTY PACKAGE_NAME DDDigi) file(GLOB DDDigi_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp) -add_library(DDDigi SHARED ${DDDigi_SOURCES}) +add_library(DDDigi ${DDDigi_SOURCES}) add_library(DD4hep::DDDigi ALIAS DDDigi) target_link_libraries(DDDigi PUBLIC @@ -53,6 +53,9 @@ set_target_properties(DDDigi DDDigiPlugins PROPERTIES VERSION ${DD4hep_VERSION} file(GLOB DDigi_python python/*.py python/*.C) install(FILES ${DDigi_python} DESTINATION ${DD4HEP_PYTHON_INSTALL_DIR}) -install(TARGETS DDDigi DDDigiPlugins EXPORT DD4hep LIBRARY DESTINATION lib) +install(TARGETS DDDigi DDDigiPlugins EXPORT DD4hep + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib + ) install(DIRECTORY include/DDDigi DESTINATION include) diff --git a/DDEve/CMakeLists.txt b/DDEve/CMakeLists.txt index 3c8fbdf6ee570fe3a0a89e1ffeb41756e7f036f5..e0cbca66fc586f0e87dd914709d986446f8c305d 100644 --- a/DDEve/CMakeLists.txt +++ b/DDEve/CMakeLists.txt @@ -45,10 +45,13 @@ if(DD4HEP_USE_GEANT4) LINKDEF ../DDCore/include/ROOT/LinkDef.h USES DD4hep::DDG4 ) - add_library(DDG4IO SHARED DDEve/IO.cpp G__DDG4IO.cxx) + add_library(DDG4IO DDEve/IO.cpp G__DDG4IO.cxx) target_link_libraries(DDG4IO DD4hep::DDG4 DD4hep::DDEve_Interface) set_target_properties(DDG4IO PROPERTIES VERSION ${DD4hep_VERSION} SOVERSION ${DD4hep_SOVERSION}) - install(TARGETS DDG4IO EXPORT DD4hep LIBRARY DESTINATION lib) + install(TARGETS DDG4IO EXPORT DD4hep + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib + ) endif() add_executable(ddeve DDEve/DDEve.cpp) @@ -61,6 +64,7 @@ set_target_properties(DDEvePlugins PROPERTIES VERSION ${DD4hep_VERSION} SOVERSIO install(DIRECTORY DDEve DESTINATION examples ) install(DIRECTORY include/DDEve DESTINATION include) install(TARGETS ddeve DDEvePlugins DDEve_Interface EXPORT DD4hep + ARCHIVE DESTINATION lib LIBRARY DESTINATION lib RUNTIME DESTINATION bin ) \ No newline at end of file diff --git a/DDG4/CMakeLists.txt b/DDG4/CMakeLists.txt index 0623be5861fae3e082a02103b2dc9947f82a6611..98fa70bf290051b2a5fcae3d6bcd475f70483282 100644 --- a/DDG4/CMakeLists.txt +++ b/DDG4/CMakeLists.txt @@ -18,7 +18,7 @@ ENDIF() #---Add Library--------------------------------------------------------------------- file(GLOB DDG4_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp) -add_library(DDG4 SHARED ${DDG4_SOURCES}) +add_library(DDG4 ${DDG4_SOURCES}) add_library(DD4hep::DDG4 ALIAS DDG4) target_link_libraries(DDG4 @@ -63,7 +63,7 @@ if(TARGET Python::Python) if(TARGET ROOT::PyROOT) #--------------------------- Specialized python plugins -------------------------- dd4hep_print("|++> ROOT Has Python, creating DDPython library and plugins") - add_library(DDPython SHARED G__DDPython.cxx tpython/DDPython.cpp) + add_library(DDPython G__DDPython.cxx tpython/DDPython.cpp) add_library(DD4hep::DDPython ALIAS DDPython) target_link_libraries(DDPython DD4hep::DDG4 ROOT::Core Python::Python ROOT::PyROOT) IF(${CMAKE_CXX_STANDARD} GREATER 16) @@ -137,6 +137,7 @@ set_target_properties(DDG4 DDG4Plugins DDG4Legacy PROPERTIES VERSION ${DD4hep_VE install(TARGETS DDG4 DDG4Plugins DDG4Legacy g4gdmlDisplay g4FromXML EXPORT DD4hep + ARCHIVE DESTINATION lib LIBRARY DESTINATION lib RUNTIME DESTINATION bin) install(DIRECTORY include/DDG4 DESTINATION include) diff --git a/DDParsers/CMakeLists.txt b/DDParsers/CMakeLists.txt index ac1be0f3aaa0805756be3cfaad8ec5c161b58fda..4f857c33b8ba65270ab4f3cfd35de3f4834a3bb0 100644 --- a/DDParsers/CMakeLists.txt +++ b/DDParsers/CMakeLists.txt @@ -15,7 +15,7 @@ dd4hep_print("|++> Will build DDParsers") file(GLOB DDParsers_SOURCES src/Parsers/*.cpp src/Evaluator/*.cpp) file(GLOB DDParsers_SPIRIT_SOURCES src/Spirit/*.cpp) -add_library(DDParsers SHARED ${DDParsers_SOURCES} ${DDParsers_SPIRIT_SOURCES}) +add_library(DDParsers ${DDParsers_SOURCES} ${DDParsers_SPIRIT_SOURCES}) add_library(DD4hep::DDParsers ALIAS DDParsers) target_compile_definitions(DDParsers INTERFACE BOOST_SPIRIT_USE_PHOENIX_V3) @@ -29,5 +29,7 @@ target_include_directories(DDParsers target_link_libraries(DDParsers PUBLIC ROOT::Core Boost::boost ${XML_LIBRARIES}) set_target_properties(DDParsers PROPERTIES VERSION ${DD4hep_VERSION} SOVERSION ${DD4hep_SOVERSION}) -install(TARGETS DDParsers EXPORT DD4hep LIBRARY DESTINATION lib) install(DIRECTORY include/Parsers include/Evaluator DESTINATION include) +install(TARGETS DDParsers ${OPTIONAL_TARGETS} EXPORT DD4hep + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib) diff --git a/DDRec/CMakeLists.txt b/DDRec/CMakeLists.txt index 4633ebb145ef6674ab432c64238c4911de7558a0..543cb0aff48b3ece4201683a10b4d2208dbef349 100644 --- a/DDRec/CMakeLists.txt +++ b/DDRec/CMakeLists.txt @@ -27,7 +27,7 @@ if(DD4HEP_USE_GEAR) SET(GEAR_SOURCE_FILE src/gear/DDGear.cpp) endif() -ADD_LIBRARY(DDRec SHARED +ADD_LIBRARY(DDRec ${DDRec_SOURCES} ${GEAR_SOURCE_FILE} G__DDRec.cxx @@ -75,4 +75,7 @@ set_target_properties(DDRec DDRecPlugins PROPERTIES VERSION ${DD4hep_VERSION} SO file(GLOB DDRec_python python/*.py) install(FILES ${DDRec_python} DESTINATION ${DD4HEP_PYTHON_INSTALL_DIR}) install(DIRECTORY include/DDRec DESTINATION include) -install(TARGETS DDRec DDRecPlugins EXPORT DD4hep LIBRARY DESTINATION lib) +install(TARGETS DDRec DDRecPlugins EXPORT DD4hep + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib + ) diff --git a/GaudiPluginService/CMakeLists.txt b/GaudiPluginService/CMakeLists.txt index f8aaa6aeed610f23456bb61b4f7fdb5ed9fd9954..b3196eaa6695fec098fff0df307d05911ab8d187 100644 --- a/GaudiPluginService/CMakeLists.txt +++ b/GaudiPluginService/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.3 FATAL_ERROR) project(GaudiPluginService) -add_library(DD4hepGaudiPluginMgr SHARED src/PluginServiceV1.cpp src/PluginServiceV2.cpp interface/DD4hepV1.cpp interface/DD4hepV2.cpp) +add_library(DD4hepGaudiPluginMgr src/PluginServiceV1.cpp src/PluginServiceV2.cpp interface/DD4hepV1.cpp interface/DD4hepV2.cpp) add_library(DD4hep::DD4hepGaudiPluginMgr ALIAS DD4hepGaudiPluginMgr) target_compile_definitions(DD4hepGaudiPluginMgr PUBLIC Gaudi=DD4hep_Flavor) @@ -31,4 +31,5 @@ target_compile_options(listcomponents PRIVATE -Wno-deprecated) INSTALL(TARGETS listcomponents DD4hepGaudiPluginMgr EXPORT DD4hep RUNTIME DESTINATION bin + ARCHIVE DESTINATION lib LIBRARY DESTINATION lib) \ No newline at end of file diff --git a/cmake/DD4hepBuild.cmake b/cmake/DD4hepBuild.cmake index 4b114b7a6517a7c4f9e5286a8efe19b67165c915..f5c95aa32d6ddd34e6a0309986b85a77d72826d1 100644 --- a/cmake/DD4hepBuild.cmake +++ b/cmake/DD4hepBuild.cmake @@ -613,17 +613,22 @@ function(dd4hep_add_plugin binary) dd4hep_debug("|++++> USES ${ARG_USES}") dd4hep_debug("|++++> INCLUDES ${ARG_INCLUDES}") dd4hep_debug("|++++> DEFINITIONS ${ARG_DEFINITIONS}") - add_library(${binary} SHARED ${SOURCES} ${ARG_GENERATED}) + add_library(${binary} ${SOURCES} ${ARG_GENERATED}) target_link_libraries(${binary} PUBLIC ${ARG_USES}) target_include_directories(${binary} PUBLIC ${ARG_INCLUDES}) target_compile_definitions(${binary} PUBLIC ${ARG_DEFINITIONS}) - dd4hep_generate_rootmap(${binary}) + IF(BUILD_SHARED_LIBS) + dd4hep_generate_rootmap(${binary}) + ENDIF() if(NOT ${ARG_NOINSTALL}) set(install_destination "lib") if(CMAKE_INSTALL_LIBDIR) set(install_destination ${CMAKE_INSTALL_LIBDIR}) endif() - install(TARGETS ${binary} LIBRARY DESTINATION ${install_destination}) + install(TARGETS ${binary} + ARCHIVE DESTINATION ${install_destination} + LIBRARY DESTINATION ${install_destination} + ) endif() endfunction(dd4hep_add_plugin)