diff --git a/fpga/CMakeLists.txt b/fpga/CMakeLists.txt index 4025ae5b9..a6046eda0 100644 --- a/fpga/CMakeLists.txt +++ b/fpga/CMakeLists.txt @@ -12,3 +12,47 @@ include_directories(thirdparty/spdlog/include) add_subdirectory(lib) add_subdirectory(tests) add_subdirectory(src) + +# Project settings +set(PROJECT_NAME "VILLASfpga") +set(PROJECT_DESCRIPTION "Host library for configuring and communicating with VILLASfpga") +set(PROJECT_VENDOR "Institute for Automation of Complex Power Systems, RWTH Aachen University") +set(PROJECT_URL "https://www.fein-aachen.org/projects/villas-fpga/") +set(PROJECT_VERSION_MAJOR "0") +set(PROJECT_VERSION_MINOR "1") +set(PROJECT_VERSION_PATCH "0") +set(PROJECT_RELEASE "1") + +# pkg-config +configure_file("libvillas-fpga.pc.in" "libvillas-fpga.pc" @ONLY) +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libvillas-fpga.pc" DESTINATION "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/pkgconfig") + +# CPack +SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJECT_DESCRIPTION}) +SET(CPACK_PACKAGE_VENDOR ${PROJECT_VENDOR}) +SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.md") +SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING.md") +set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md") + +set(CPACK_PACKAGE_NAME "villas-fpga") +set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) +set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR}) +set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH}) +set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}") + +set(CPACK_SOURCE_GENERATOR "TGZ") +set(CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}") +set(CPACK_SOURCE_IGNORE_FILES "/build/;/.git/;~$;${CPACK_SOURCE_IGNORE_FILES}") + +set(CPACK_RPM_PACKAGE_RELEASE ${PROJECT_RELEASE}) +set(CPACK_RPM_PACKAGE_ARCHITECTURE "x86_64") +set(CPACK_RPM_PACKAGE_LICENSE "GPLv3") +set(CPACK_RPM_PACKAGE_URL ${PROJECT_URL}) +set(CPACK_RPM_PACKAGE_REQUIRES "libxil") +set(CPACK_RPM_PACKAGE_GROUP "Development/Libraries") + +# As close as possible to Fedoras naming +set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_RPM_PACKAGE_RELEASE}.${CPACK_RPM_PACKAGE_ARCHITECTURE}") + +set(CPACK_GENERATOR "RPM") +include(CPack) diff --git a/fpga/lib/CMakeLists.txt b/fpga/lib/CMakeLists.txt index 50d16ecf5..af2aede70 100644 --- a/fpga/lib/CMakeLists.txt +++ b/fpga/lib/CMakeLists.txt @@ -67,3 +67,15 @@ target_link_libraries(villas-fpga PUBLIC ${CMAKE_DL_LIBS} m ) + +include(GNUInstallDirs) + +install(TARGETS villas-fpga + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/static +) + +install(DIRECTORY ../include/villas DESTINATION include) + + diff --git a/fpga/libvillas-fpga.pc.in b/fpga/libvillas-fpga.pc.in new file mode 100644 index 000000000..2bae976fa --- /dev/null +++ b/fpga/libvillas-fpga.pc.in @@ -0,0 +1,10 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=${prefix} +includedir=${prefix}/include +libdir=${exec_prefix}/lib + +Name: @PROJECT_NAME@ +Description: @CPACK_PACKAGE_DESCRIPTION_SUMMARY@ +URL: @PROJECT_URL@ +Version: @PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@ +Cflags: -I${includedir} diff --git a/fpga/src/CMakeLists.txt b/fpga/src/CMakeLists.txt index f38667024..0cf2a5ae3 100644 --- a/fpga/src/CMakeLists.txt +++ b/fpga/src/CMakeLists.txt @@ -26,3 +26,11 @@ if(LAPACK_FOUND) target_include_directories(fpga PUBLIC ${LAPACK_INCLUDE_DIRS}) target_compile_definitions(fpga PUBLIC WITH_LAPACK) endif() + +include(GNUInstallDirs) + +install(TARGETS fpga + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/static +)