Skip to content
Snippets Groups Projects
Commit ba6f1d2a authored by Andre Sailer's avatar Andre Sailer
Browse files

CMake: add possibility to compile static libraries instead of shared libraries

parent f11df707
No related branches found
No related tags found
No related merge requests found
......@@ -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")
......
......@@ -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)
......@@ -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)
......@@ -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
)
......@@ -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)
......@@ -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)
......@@ -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
......@@ -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)
......@@ -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)
......@@ -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
)
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
......@@ -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)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment