diff --git a/CMakeLists.txt b/CMakeLists.txt index 849d137..e73f16a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -99,26 +99,40 @@ endif() # libqcdloop configuration include_directories(src/qcdloop src) FILE(GLOB_RECURSE Headers "src/qcdloop/*.h") -add_library(qcdloop SHARED src/box.cc - src/bubble.cc - src/cache.cc - src/qcdloop.cc - src/tadpole.cc - src/tools.cc - src/topology.cc - src/triangle.cc - src/types.cc - src/wrapper.cc - ${Headers} +option(ENABLE_STATIC_LIBRARY "Build static libqcdloop.a in addition to the shared library" OFF) +set(QCDLOOP_SOURCES src/box.cc + src/bubble.cc + src/cache.cc + src/qcdloop.cc + src/tadpole.cc + src/tools.cc + src/topology.cc + src/triangle.cc + src/types.cc + src/wrapper.cc + ${Headers} ) +add_library(qcdloop SHARED ${QCDLOOP_SOURCES}) + +set(QCDLOOP_INSTALL_TARGETS qcdloop) +if(ENABLE_STATIC_LIBRARY) + add_library(qcdloop_static STATIC ${QCDLOOP_SOURCES}) + set_target_properties(qcdloop_static PROPERTIES OUTPUT_NAME qcdloop) + target_link_libraries(qcdloop_static ${QUADMATH_LIBRARY}) + list(APPEND QCDLOOP_INSTALL_TARGETS qcdloop_static) +endif() + target_link_libraries(qcdloop ${QUADMATH_LIBRARY}) install(FILES ${CMAKE_BINARY_DIR}/src/qcdloop-config DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) install(FILES ${PROJECT_SOURCE_DIR}/src/qcdloop.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) install(DIRECTORY src/qcdloop DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -install(TARGETS qcdloop DESTINATION ${CMAKE_INSTALL_LIBDIR}) +install(TARGETS ${QCDLOOP_INSTALL_TARGETS} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) # enable disable fortran/wrapper (to avoid name conflicts with ql1.x) option(ENABLE_FORTRAN_WRAPPER "Enable fortran wrapper" ON) diff --git a/README.md b/README.md index 277b1eb..cb51077 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,7 @@ C++11 and `quadmath` features (e.g. `gcc >= 5`). Other qcdloop cmake options are: - `ENABLE_EXAMPLES`, build examples in C++, default `OFF`. - `ENABLE_FORTRAN_WRAPPER`, include fortran wrapper in the library, default `ON`. +- `ENABLE_STATIC_LIBRARY`, build `libqcdloop.a` in addition to the shared library, default `OFF`. The fortran wrapper follows the previous syntax in `qcdloop`, see details in table 2 of https://arxiv.org/pdf/1605.03181.pdf.