mirror of
https://git.rwth-aachen.de/acs/public/villas/node/
synced 2025-03-09 00:00:00 +01:00
cmake: add install targets and several other cpack improvments
This commit is contained in:
parent
cbfa94cb3c
commit
0a4f1a3731
23 changed files with 244 additions and 166 deletions
|
@ -20,7 +20,7 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
###################################################################################
|
||||
|
||||
cmake_minimum_required(VERSION 3.0)
|
||||
cmake_minimum_required(VERSION 3.3)
|
||||
|
||||
project(VILLASnode C CXX)
|
||||
|
||||
|
@ -38,9 +38,10 @@ include(FindPkgConfig)
|
|||
include(CheckIncludeFile)
|
||||
include(FeatureSummary)
|
||||
include(CheckCCompilerFlag)
|
||||
#include(CheckCxxCompilerFlag)
|
||||
include(CheckCXXCompilerFlag)
|
||||
include(GNUInstallDirs)
|
||||
include(VILLASnodePackaging)
|
||||
|
||||
set(CMAKE_SKIP_RPATH ON)
|
||||
|
||||
# Compiler flags
|
||||
if(BUILD32)
|
||||
|
@ -55,7 +56,7 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdiagnostics-color=auto -D_POSIX_C_SOURCE=2
|
|||
|
||||
if(MSVC)
|
||||
check_c_compiler_flag("/W4 /WX" C_SUPPORTS_WERROR)
|
||||
# check_cxx_compiler_flag("/W4 /WX" CXX_SUPPORTS_WERROR)
|
||||
check_cxx_compiler_flag("/W4 /WX" CXX_SUPPORTS_WERROR)
|
||||
|
||||
if(C_SUPPORTS_WERROR)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4 /WX")
|
||||
|
@ -66,7 +67,7 @@ if(MSVC)
|
|||
endif()
|
||||
else()
|
||||
check_c_compiler_flag("-Wall -Werror" C_SUPPORTS_WERROR)
|
||||
# check_cxx_compiler_flag("-Wall -Werror" CXX_SUPPORTS_WERROR)
|
||||
check_cxx_compiler_flag("-Wall -Werror" CXX_SUPPORTS_WERROR)
|
||||
|
||||
if(C_SUPPORTS_WERROR)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror")
|
||||
|
@ -82,6 +83,14 @@ check_include_file("sys/eventfd.h" HAS_EVENTFD)
|
|||
check_include_file("semaphore.h" HAS_SEMAPHORE)
|
||||
check_include_file("sys/mman.h" HAS_MMAN)
|
||||
|
||||
# Check packages
|
||||
find_package(PkgConfig REQUIRED)
|
||||
find_package(Libwebsockets REQUIRED)
|
||||
find_package(OpenSSL REQUIRED)
|
||||
find_package(CURL REQUIRED)
|
||||
find_package(ProtobufC)
|
||||
find_package(Opal)
|
||||
|
||||
pkg_check_modules(JANSSON IMPORTED_TARGET REQUIRED jansson)
|
||||
pkg_check_modules(LIBNL3_ROUTE IMPORTED_TARGET libnl-route-3.0)
|
||||
pkg_check_modules(LIBIEC61850 IMPORTED_TARGET libiec61850>=1.2.0)
|
||||
|
@ -94,12 +103,6 @@ if(NOT NANOMSG_FOUND)
|
|||
pkg_check_modules(NANOMSG IMPORTED_TARGET libnanomsg)
|
||||
endif()
|
||||
|
||||
find_package(Libwebsockets REQUIRED)
|
||||
find_package(OpenSSL REQUIRED)
|
||||
find_package(CURL REQUIRED)
|
||||
find_package(Protobuf)
|
||||
find_package(Opal)
|
||||
|
||||
# Build options
|
||||
option(WITH_HOOKS "Build with support for processing hook plugins" ON)
|
||||
option(WITH_IO "Build with support format plugins" ON)
|
||||
|
@ -110,7 +113,11 @@ option(WITH_CONFIG "Build with support for libconfig configuration syntax" ON)
|
|||
set(V 2)
|
||||
set(PREFIX ${CMAKE_INSTALL_PREFIX})
|
||||
|
||||
set(VARIANT "${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
|
||||
if(CMAKE_BUILD_TYPE)
|
||||
string(TOLOWER "${CMAKE_BUILD_TYPE}" VARIANT)
|
||||
else()
|
||||
set(VARIANT "release")
|
||||
endif()
|
||||
|
||||
# Add more build configurations
|
||||
include(cmake/config/Debug.cmake)
|
||||
|
@ -119,6 +126,9 @@ include(cmake/config/Coverage.cmake)
|
|||
include(cmake/config/Profiling.cmake)
|
||||
|
||||
# Add git revision and build variant defines
|
||||
set(PROJECT_AUTHOR "Steffen Vogel")
|
||||
set(PROJECT_COPYRIGHT "2018, Institute for Automation of Complex Power Systems, RWTH Aachen University")
|
||||
|
||||
set(PROJECT_SOVERSION 1)
|
||||
|
||||
execute_process(
|
||||
|
@ -128,7 +138,11 @@ execute_process(
|
|||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
string(SUBSTRING ${PROJECT_VERSION_STR} 2 -1 PROJECT_VERSION)
|
||||
string(REGEX REPLACE "^v([0-9]+\\.[0-9]+\\.[0-9]+)$" "\\1" PROJECT_VERSION ${PROJECT_VERSION_STR})
|
||||
string(REGEX REPLACE "^v([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\1" PROJECT_MAJOR_VERSION ${PROJECT_VERSION_STR})
|
||||
string(REGEX REPLACE "^v([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\2" PROJECT_MINOR_VERSION ${PROJECT_VERSION_STR})
|
||||
string(REGEX REPLACE "^v([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\3" PROJECT_PATCH_VERSION ${PROJECT_VERSION_STR})
|
||||
|
||||
string(TIMESTAMP BUILD_DATE "%Y%m%d")
|
||||
|
||||
if(DEFINED ENV{CI})
|
||||
|
@ -160,7 +174,7 @@ else()
|
|||
set(PROJECT_RELEASE "1.${GIT_BRANCH_NORM}_${VARIANT_NORM}.${BUILD_DATE}git${GIT_REV}")
|
||||
endif()
|
||||
|
||||
set(BUILDID "${PROJECT_VERSION_STR}-${GIT_REV}-${VARIANT}")
|
||||
set(BUILDID "v${PROJECT_MAJOR_VERSION}.${PROJECT_MINOR_VERSION}.${PROJECT_PATCH_VERSION}-${GIT_REV}-${VARIANT}")
|
||||
|
||||
include_directories(
|
||||
${CMAKE_SOURCE_DIR}/include
|
||||
|
@ -193,4 +207,7 @@ add_feature_info(CONFIG WITH_CONFIG "Build with support for libconfig configurat
|
|||
if(${CMAKE_PROJECT_NAME} STREQUAL ${PROJECT_NAME})
|
||||
feature_summary(WHAT ALL VAR FEATURES)
|
||||
message(STATUS "${FEATURES}")
|
||||
message(STATUS "Building VILLASnode: ${BUILDID}")
|
||||
endif()
|
||||
|
||||
include(VILLASnodePackaging)
|
||||
|
|
20
cmake/FindProtobufC.cmake
Normal file
20
cmake/FindProtobufC.cmake
Normal file
|
@ -0,0 +1,20 @@
|
|||
pkg_check_modules(PC_PROTOBUFC QUIET libprotobuf-c)
|
||||
set(PROTOBUFC_DEFINITIONS ${PC_PROTOBUFC_CFLAGS_OTHER})
|
||||
|
||||
find_path(PROTOBUFC_INCLUDE_DIR google/protobuf-c/protobuf-c.h
|
||||
HINTS ${PC_PROTOBUFC_INCLUDEDIR} ${PC_PROTOBUFC_INCLUDE_DIRS}
|
||||
PATH_SUFFIXES libprotobuf-c)
|
||||
|
||||
find_library(PROTOBUFC_LIBRARY NAMES protobuf-c
|
||||
HINTS ${PC_PROTOBUFC_LIBDIR}
|
||||
${PC_PROTOBUFC_LIBRARY_DIRS})
|
||||
|
||||
find_program(PROTOBUFC_COMPILER protoc-c)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(libprotobuf-c DEFAULT_MSG
|
||||
PROTOBUFC_LIBRARY PROTOBUFC_INCLUDE_DIR PROTOBUFC_COMPILER)
|
||||
mark_as_advanced(PROTOBUFC PROTOBUFC_INCLUDE_DIR PROTOBUFC_LIBRARY)
|
||||
|
||||
set(PROTOBUFC_LIBRARIES ${PROTOBUFC_LIBRARY})
|
||||
set(PROTOBUFC_INCLUDE_DIRS ${PROTOBUFC_INCLUDE_DIR})
|
|
@ -20,9 +20,6 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
###################################################################################
|
||||
|
||||
set(PROJECT_AUTHOR "Steffen Vogel")
|
||||
set(PROJECT_COPYRIGHT "2018, Institute for Automation of Complex Power Systems, RWTH Aachen University")
|
||||
|
||||
set(CPACK_PACKAGE_NAME ${PROJECT_NAME})
|
||||
set(CPACK_PACKAGE_VENDOR ${PROJECT_AUTHOR})
|
||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "This is VILLASnode, a gateway for processing and forwardning simulation data between real-time simulators.")
|
||||
|
@ -31,21 +28,34 @@ set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_MAJOR_VERSION})
|
|||
set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_MINOR_VERSION})
|
||||
set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_PATCH_VERSION})
|
||||
|
||||
set(CPACK_RPM_PACKAGE_VERSION ${PROJECT_VERSION})
|
||||
set(CPACK_RPM_COMPONENT_INSTALL ON)
|
||||
set(CPACK_RPM_MAIN_COMPONENT "bin")
|
||||
|
||||
set(CPACK_RPM_LIB_PACKAGE_REQUIRES "openssl libconfig libnl3 libcurl jansson libwebsockets zeromq nanomsg libiec61850 librabbitmq mosquitto comedilib")
|
||||
set(CPACK_RPM_BIN_PACKAGE_REQUIRES "libvillas")
|
||||
set(CPACK_RPM_PLUGINS_PACKAGE_REQUIRES "libvillas")
|
||||
set(CPACK_RPM_TOOLS_PACKAGE_REQUIRES "libvillas")
|
||||
set(CPACK_RPM_DEVEL_PACKAGE_REQUIRES "libvillas")
|
||||
|
||||
set(CPACK_RPM_PACKAGE_RELEASE_DIST ON)
|
||||
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 "http://www.fein-aachen.org/projects/dpsim/")
|
||||
set(CPACK_RPM_PACKAGE_REQUIRES "openssl libconfig libnl3 libcurl jansson libwebsockets zeromq nanomsg libiec61850 librabbitmq mosquitto comedilib")
|
||||
set(CPACK_RPM_PACKAGE_URL "http://www.fein-aachen.org/projects/villas-node/")
|
||||
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(SUFFIX "${CPACK_PACKAGE_VERSION}-${CPACK_RPM_PACKAGE_RELEASE}.${CPACK_RPM_PACKAGE_ARCHITECTURE}.rpm")
|
||||
set(CPACK_RPM_FILE_NAME "villas-node-${SUFFIX}")
|
||||
set(CPACK_RPM_TOOLS_FILE_NAME "villas-node-tools-${SUFFIX}")
|
||||
set(CPACK_RPM_PLUGINS_FILE_NAME "villas-node-plugins-${SUFFIX}")
|
||||
set(CPACK_RPM_DOC_FILE_NAME "villas-node-doc-${SUFFIX}")
|
||||
set(CPACK_RPM_LIB_FILE_NAME "libvillas-${SUFFIX}")
|
||||
set(CPACK_RPM_DEVEL_FILE_NAME "libvillas-devel-${SUFFIX}")
|
||||
|
||||
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/COPYING.md")
|
||||
set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README.md")
|
||||
|
||||
set(CPACK_SOURCE_IGNORE_FILES "build/;\\.gitmodules;\\.git/;\\.vscode;\\.editorconfig;\\.gitlab-ci.yml;\\.(docker|git)ignore;\\.DS_Store")
|
||||
set(CPACK_SOURCE_IGNORE_FILES "build/;\\\\.gitmodules;\\\\.git/;\\\\.vscode;\\\\.editorconfig;\\\\.gitlab-ci.yml;\\\\.(docker|git)ignore;\\\\.DS_Store")
|
||||
|
||||
if(NOT DEFINED CPACK_GENERATOR)
|
||||
set(CPACK_GENERATOR "RPM;TGZ")
|
||||
|
|
|
@ -53,6 +53,4 @@ mark_as_advanced(
|
|||
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Coverage")
|
||||
target_link_libraries("gcov")
|
||||
|
||||
string(APPEND VARIANTS "-coverage")
|
||||
endif()
|
||||
|
|
|
@ -19,7 +19,3 @@
|
|||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
###################################################################################
|
||||
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
string(APPEND VARIANTS "-debug")
|
||||
endif()
|
||||
|
|
|
@ -51,8 +51,4 @@ mark_as_advanced(
|
|||
CMAKE_SHARED_LINKER_FLAGS_PROFILING
|
||||
)
|
||||
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Profiling")
|
||||
string(APPEND VARIANTS "-profile")
|
||||
endif()
|
||||
|
||||
|
||||
|
|
|
@ -19,7 +19,3 @@
|
|||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
###################################################################################
|
||||
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||
string(APPEND VARIANTS "-release")
|
||||
endif()
|
||||
|
|
|
@ -20,19 +20,45 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
###################################################################################
|
||||
|
||||
add_custom_target(doc
|
||||
COMMAND doxygen ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
|
||||
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
)
|
||||
find_package(Doxygen)
|
||||
|
||||
configure_file(
|
||||
Doxyfile.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
|
||||
)
|
||||
if(DOXYGEN_FOUND)
|
||||
set(DOXYGEN_PROJECT_LOGO doc/pictures/villas_node.svg)
|
||||
set(DOXYGEN_WARN_LOGFILE ${CMAKE_CURRENT_BINARY_DIR}/warnings.log)
|
||||
set(DOXYGEN_TAB_SIZE 8)
|
||||
set(DOXYGEN_OPTIMIZE_OUTPUT_FOR_C YES)
|
||||
set(DOXYGEN_LAYOUT_FILE doc/theme/layout.xml)
|
||||
set(DOXYGEN_RECURSIVE YES)
|
||||
set(DOXYGEN_EXAMPLE_PATH etc/)
|
||||
set(DOXYGEN_EXAMPLE_RECURSIVE YES)
|
||||
set(DOXYGEN_IMAGE_PATH doc/pictures)
|
||||
set(DOXYGEN_USE_MDFILE_AS_MAINPAGE README.md)
|
||||
set(DOXYGEN_SOURCE_BROWSER YES)
|
||||
set(DOXYGEN_REFERENCED_BY_RELATION YES)
|
||||
set(DOXYGEN_HTML_HEADER doc/theme/header.html)
|
||||
set(DOXYGEN_HTML_EXTRA_STYLESHEET doc/theme/style.css)
|
||||
set(DOXYGEN_HTML_EXTRA_FILES doc/pictures/acs_eonerc_logo.svg)
|
||||
set(DOXYGEN_HTML_COLORSTYLE_HUE 209)
|
||||
set(DOXYGEN_HTML_COLORSTYLE_SAT 88)
|
||||
set(DOXYGEN_HTML_TIMESTAMP YES)
|
||||
set(DOXYGEN_HTML_DYNAMIC_SECTIONS YES)
|
||||
set(DOXYGEN_GENERATE_TREEVIEW YES)
|
||||
set(DOXYGEN_TREEVIEW_WIDTH 280)
|
||||
set(DOXYGEN_UML_LOOK YES)
|
||||
set(DOXYGEN_CALL_GRAPH YES)
|
||||
set(DOXYGEN_CALLER_GRAPH YES)
|
||||
set(DOXYGEN_DOT_IMAGE_FORMAT svg)
|
||||
set(DOXYGEN_INTERACTIVE_SVG YES)
|
||||
set(DOXYGEN_DIAFILE_DIRS doc/figures/)
|
||||
|
||||
install(
|
||||
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html
|
||||
DESTINATION share/villas/node/doc
|
||||
COMPONENT doc
|
||||
)
|
||||
doxygen_add_docs(doc
|
||||
README.md CONTRIBUTING.md COPYING.md src/ lib/ tests/ include/ doc/
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
)
|
||||
|
||||
install(
|
||||
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html
|
||||
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/doc/villas/node
|
||||
COMPONENT doc
|
||||
)
|
||||
endif()
|
||||
|
|
|
@ -20,6 +20,11 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
###################################################################################
|
||||
|
||||
install(DIRECTORY .
|
||||
DESTINATION etc/villas/node/
|
||||
install(
|
||||
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
COMPONENT bin
|
||||
DESTINATION etc/villas/node
|
||||
FILES_MATCHING
|
||||
PATTERN "*.conf"
|
||||
PATTERN "*.json"
|
||||
)
|
||||
|
|
|
@ -129,17 +129,32 @@ add_library(villas SHARED ${LIB_SRC})
|
|||
target_include_directories(villas PUBLIC ${INCLUDE_DIRS})
|
||||
target_link_libraries(villas PUBLIC ${LIBRARIES})
|
||||
|
||||
set_target_properties(villas PROPERTIES
|
||||
VERSION ${PROJECT_VERSION}
|
||||
SOVERSION ${PROJECT_SOVERSION}
|
||||
#set_target_properties(villas PROPERTIES
|
||||
# VERSION ${PROJECT_VERSION}
|
||||
# SOVERSION ${PROJECT_SOVERSION}
|
||||
#)
|
||||
|
||||
install(
|
||||
TARGETS villas
|
||||
EXPORT VILLASNodeConfig
|
||||
COMPONENT lib
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
)
|
||||
|
||||
install(TARGETS villas EXPORT VILLASNodeConfig
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
install(
|
||||
DIRECTORY ../include/villas/
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/villas
|
||||
COMPONENT devel
|
||||
FILES_MATCHING
|
||||
PATTERN "*.h"
|
||||
)
|
||||
|
||||
install(DIRECTORY ../include/villas/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/villas/)
|
||||
#install(
|
||||
# EXPORT VILLASNodeConfig
|
||||
# DESTINATION share/VILLASNode/cmake
|
||||
#)
|
||||
|
||||
#install(EXPORT VILLASNodeConfig DESTINATION share/VILLASNode/cmake)
|
||||
#export(TARGETS villas FILE VILLASNodeConfig.cmake)
|
||||
#export(
|
||||
# TARGETS villas
|
||||
# FILE VILLASNodeConfig.cmake
|
||||
#)
|
||||
|
|
|
@ -43,3 +43,14 @@ set(API_SRC
|
|||
add_library(villas-api SHARED ${API_SRC})
|
||||
target_include_directories(villas-api PUBLIC ${INCLUDE_DIRS})
|
||||
target_link_libraries(villas-api PUBLIC ${LIBRARIES})
|
||||
|
||||
#set_target_properties(villas-api PROPERTIES
|
||||
# VERSION ${PROJECT_VERSION}
|
||||
# SOVERSION ${PROJECT_SOVERSION}
|
||||
#)
|
||||
|
||||
install(
|
||||
TARGETS villas-api
|
||||
COMPONENT lib
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
)
|
||||
|
|
|
@ -27,6 +27,7 @@ set(FORMAT_SRC
|
|||
villas_human.c
|
||||
csv.c
|
||||
raw.c
|
||||
msg.c
|
||||
)
|
||||
|
||||
set(INCLUDE_DIRS
|
||||
|
@ -38,21 +39,19 @@ set(LIBRARIES
|
|||
)
|
||||
|
||||
# Enable Google Protobuf format
|
||||
if(Protobuf_FOUND)
|
||||
if(ProtobufC_FOUND)
|
||||
list(APPEND FORMAT_SRC
|
||||
protobuf.c
|
||||
${CMAKE_CURRENT_BINARY_DIR}/villas.pb-c.c
|
||||
)
|
||||
|
||||
list(APPEND INCLUDE_DIRS
|
||||
${Protobuf_INCLUDE_DIRS}
|
||||
${Protobuf_PROTOC_INCLUDE_DIRS}
|
||||
${PROTOBUFC_INCLUDE_DIRS}
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
)
|
||||
|
||||
list(APPEND LIBRARIES
|
||||
${Protobuf_LIBRARY}
|
||||
${Protobuf_PROTOC_LIBRARIES}
|
||||
${PROTOBUFC_LIBRARIES}
|
||||
)
|
||||
|
||||
set_source_files_properties(villas.pb-c.h villas.pb-c.c
|
||||
|
@ -61,7 +60,7 @@ if(Protobuf_FOUND)
|
|||
)
|
||||
|
||||
add_custom_command(
|
||||
COMMAND ${Protobuf_PROTOC_EXECUTABLE} --c_out=${CMAKE_CURRENT_BINARY_DIR} villas.proto
|
||||
COMMAND ${PROTOBUFC_COMPILER} --c_out=${CMAKE_CURRENT_BINARY_DIR} villas.proto
|
||||
OUTPUT
|
||||
villas.pb-c.c
|
||||
villas.pb-c.h
|
||||
|
@ -73,3 +72,14 @@ endif()
|
|||
add_library(villas-formats SHARED ${FORMAT_SRC})
|
||||
target_include_directories(villas-formats PUBLIC ${INCLUDE_DIRS})
|
||||
target_link_libraries(villas-formats PUBLIC ${LIBRARIES})
|
||||
|
||||
#set_target_properties(villas-formats PROPERTIES
|
||||
# VERSION ${PROJECT_VERSION}
|
||||
# SOVERSION ${PROJECT_SOVERSION}
|
||||
#)
|
||||
|
||||
install(
|
||||
TARGETS villas-formats
|
||||
COMPONENT lib
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
)
|
||||
|
|
|
@ -53,3 +53,14 @@ endif()
|
|||
add_library(villas-hooks SHARED ${HOOK_SRC})
|
||||
target_include_directories(villas-hooks PUBLIC ${INCLUDE_DIRS})
|
||||
target_link_libraries(villas-hooks PUBLIC ${LIBRARIES})
|
||||
|
||||
#set_target_properties(villas-hooks PROPERTIES
|
||||
# VERSION ${PROJECT_VERSION}
|
||||
# SOVERSION ${PROJECT_SOVERSION}
|
||||
#)
|
||||
|
||||
install(
|
||||
TARGETS villas-hooks
|
||||
COMPONENT lib
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
)
|
||||
|
|
|
@ -126,3 +126,14 @@ endif()
|
|||
add_library(villas-nodes SHARED ${NODE_SRC})
|
||||
target_include_directories(villas-nodes PUBLIC ${INCLUDE_DIRS})
|
||||
target_link_libraries(villas-nodes PUBLIC ${LIBRARIES})
|
||||
|
||||
#set_target_properties(villas-nodes PROPERTIES
|
||||
# VERSION ${PROJECT_VERSION}
|
||||
# SOVERSION ${PROJECT_SOVERSION}
|
||||
#)
|
||||
|
||||
install(
|
||||
TARGETS villas-nodes
|
||||
COMPONENT lib
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
)
|
||||
|
|
|
@ -44,10 +44,12 @@ add_custom_target(deploy-rpm
|
|||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libvillas.pc.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libvillas.pc
|
||||
@ONLY
|
||||
)
|
||||
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/libvillas.pc
|
||||
COMPONENT devel
|
||||
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig
|
||||
)
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
set(DOCKER_FILE Dockerfile)
|
||||
set(DOCKER_IMAGE villas/node)
|
||||
set(DOCKER_TAG ${GIT_BRANCH})
|
||||
set(DOCKER_RUN_OPTS "--interactive --tty --publish 80:80 --publish 443:443 --publish 12000:12000/udp --publish 12001:12001/udp --privileged --security-opt seccomp:unconfined --volume \"${CMAKE_SOURCE_DIR}:/villas\"")
|
||||
set(DOCKER_RUN_OPTS --interactive --tty --publish 80:80 --publish 443:443 --publish 12000:12000/udp --publish 12001:12001/udp --privileged --security-opt seccomp:unconfined --volume \"${CMAKE_SOURCE_DIR}:/villas\")
|
||||
|
||||
foreach(SUFFIX app dev dev-centos dev-ubuntu)
|
||||
add_custom_target(deploy-docker-${SUFFIX}
|
||||
|
@ -56,6 +56,7 @@ endforeach()
|
|||
add_custom_target(docker DEPENDS docker-app
|
||||
COMMAND docker tag ${DOCKER_IMAGE}-app:${DOCKER_TAG} ${DOCKER_IMAGE}:${DOCKER_TAG}
|
||||
COMMAND docker tag ${DOCKER_IMAGE}-app:${DOCKER_TAG} ${DOCKER_IMAGE}:latest
|
||||
DEPENDS docker-dev
|
||||
)
|
||||
|
||||
add_custom_target(deploy-docker DEPENDS docker-app
|
||||
|
|
|
@ -38,9 +38,7 @@ ARG VARIANT=unkown
|
|||
# Toolchain
|
||||
RUN dnf -y install \
|
||||
gcc gcc-c++ \
|
||||
pkgconfig make cmake \
|
||||
autoconf automake autogen libtool \
|
||||
flex bison \
|
||||
pkgconfig cmake make ninja-build \
|
||||
texinfo git curl tar \
|
||||
protobuf-compiler protobuf-c-compiler
|
||||
|
||||
|
@ -64,6 +62,11 @@ RUN pip install \
|
|||
# Some of the dependencies are only available in our own repo
|
||||
ADD https://packages.fein-aachen.org/redhat/fein.repo /etc/yum.repos.d/
|
||||
|
||||
# We need to use our own RPM packages of libwebsockets
|
||||
# as the official ones do contain the CMake files
|
||||
RUN dnf -y install --repo=villas \
|
||||
libwebsockets-2.4.2
|
||||
|
||||
# Dependencies
|
||||
RUN dnf -y install \
|
||||
openssl openssl-devel \
|
||||
|
@ -71,7 +74,6 @@ RUN dnf -y install \
|
|||
libnl3-devel \
|
||||
libcurl-devel \
|
||||
jansson-devel \
|
||||
libwebsockets-devel \
|
||||
zeromq-devel \
|
||||
nanomsg-devel \
|
||||
protobuf-devel \
|
||||
|
|
13
packaging/libvillas.pc.in
Normal file
13
packaging/libvillas.pc.in
Normal file
|
@ -0,0 +1,13 @@
|
|||
prefix=@CMAKE_INSTALL_PREFIX@
|
||||
exec_prefix=@CMAKE_INSTALL_PREFIX@
|
||||
libdir=@CMAKE_INSTALL_LIBDIR@
|
||||
sharedlibdir=@CMAKE_INSTALL_LIBDIR@
|
||||
includedir=@CMAKE_INSTALL_INCLUDEDIR@
|
||||
|
||||
Name: @PROJECT_NAME@
|
||||
Description: @PROJECT_DESCRIPTION@
|
||||
Version: @PROJECT_VERSION@
|
||||
|
||||
Requires:
|
||||
Libs: -L${libdir} -L${sharedlibdir} -lz
|
||||
Cflags: -I${includedir}
|
|
@ -1,89 +0,0 @@
|
|||
Name: villas-node
|
||||
Version: §VERSION§
|
||||
Vendor: Institute for Automation of Complex Power Systems
|
||||
Packager: Steffen Vogel <stvogel@eonerc.rwth-aachen.de>
|
||||
Release: §RELEASE§%{?dist}
|
||||
Summary: This is VILLASnode, a gateway for processing and forwardning simulation data between real-time simulators.
|
||||
|
||||
License: GPLv3
|
||||
URL: https://git.rwth-aachen.de/VILLASframework/VILLASnode
|
||||
Source0: villas-node-§VERSION§-§RELEASE§.tar.gz
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
|
||||
BuildRequires: gcc pkgconfig make
|
||||
|
||||
Requires: iproute module-init-tools
|
||||
|
||||
BuildRequires: openssl-devel libconfig-devel libnl3-devel libcurl-devel jansson-devel libwebsockets-devel zeromq-devel nanomsg-devel libiec61850-devel librabbitmq-devel mosquitto-devel comedilib-devel comedilib
|
||||
Requires: openssl libconfig libnl3 libcurl jansson libwebsockets zeromq nanomsg libiec61850 librabbitmq mosquitto comedilib
|
||||
|
||||
%description
|
||||
|
||||
%package doc
|
||||
|
||||
Summary: HTML documentation for users and developers.
|
||||
Group: Documentation
|
||||
|
||||
%package devel
|
||||
|
||||
Summary: Headers and libraries for building apps that use libvillas.
|
||||
Group: Development/Libraries
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
|
||||
%description devel
|
||||
|
||||
The development headers for libvillas.
|
||||
|
||||
%description doc
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
|
||||
%build
|
||||
make DEBUG=1 PREFIX=/usr
|
||||
|
||||
%install
|
||||
rm -rf %{?buildroot}
|
||||
make DEBUG=1 PREFIX=/usr DESTDIR=%{?buildroot} install
|
||||
make DEBUG=1 PREFIX=/usr DESTDIR=%{?buildroot} install-doc
|
||||
|
||||
%check
|
||||
make DEBUG=1 run-unit-tests
|
||||
make DEBUG=1 run-integration-tests
|
||||
|
||||
%post -p /sbin/ldconfig
|
||||
%postun -p /sbin/ldconfig
|
||||
|
||||
%clean
|
||||
rm -rf %{?buildroot}
|
||||
|
||||
%files
|
||||
/usr/bin/rmsem
|
||||
/usr/bin/rmshm
|
||||
/usr/bin/villas
|
||||
/usr/bin/villas-*
|
||||
/usr/bin/conf2json
|
||||
/usr/bin/zmq-keygen
|
||||
|
||||
/usr/lib/libvillas.so
|
||||
/usr/lib/libvillas.so.*
|
||||
|
||||
/usr/lib/libvillas-ext.so
|
||||
/usr/lib/libvillas-ext.so.*
|
||||
|
||||
/usr/share/villas/node/web/
|
||||
/usr/share/villas/node/plugins/
|
||||
|
||||
%config /etc/villas/node/*.conf
|
||||
%license COPYING.md
|
||||
|
||||
%files doc
|
||||
%docdir /usr/share/villas/node/doc/
|
||||
/usr/share/villas/node/doc/
|
||||
|
||||
%files devel
|
||||
/usr/include/villas/
|
||||
|
||||
%changelog
|
||||
* Fri Mar 17 2017 Steffen Vogel <stvogel@eonerc.rwth-aachen.de
|
||||
- Initial RPM release
|
|
@ -26,7 +26,17 @@ include_directories("${CMAKE_SOURCE_DIR}/include")
|
|||
add_definitions("-DVILLAS")
|
||||
|
||||
add_library(simple_circuit SHARED models/simple_circuit.c)
|
||||
install(
|
||||
TARGETS simple_circuit
|
||||
COMPONENT plugins
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/villas/node/plugins
|
||||
)
|
||||
|
||||
if(WITH_HOOKS)
|
||||
add_library(example_hook SHARED hooks/example_hook.c)
|
||||
install(
|
||||
TARGETS example_hook
|
||||
COMPONENT plugins
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/villas/node/plugins
|
||||
)
|
||||
endif()
|
||||
|
|
|
@ -27,6 +27,8 @@ add_executable(villas-node node.c)
|
|||
add_executable(villas-test-rtt test-rtt.c)
|
||||
add_executable(villas-test-shmem test-shmem.c)
|
||||
|
||||
set(SRCS )
|
||||
|
||||
if(WITH_IO)
|
||||
add_executable(villas-test-cmp test-cmp.c)
|
||||
|
||||
|
@ -44,5 +46,6 @@ endif()
|
|||
|
||||
install(
|
||||
TARGETS ${BUILDSYSTEM_TARGETS}
|
||||
COMPONENT bin
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
)
|
||||
|
|
|
@ -21,9 +21,10 @@
|
|||
###################################################################################
|
||||
|
||||
if(LIBCONFIG_FOUND)
|
||||
list(APPEND TOOLS conf2json)
|
||||
add_executable(conf2json conf2json.c)
|
||||
target_link_libraries(conf2json PUBLIC villas)
|
||||
|
||||
list(APPEND TOOLS conf2json)
|
||||
endif()
|
||||
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
|
@ -32,16 +33,29 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|||
|
||||
add_executable(rmsem rmsem.c)
|
||||
target_link_libraries(rmsem PUBLIC pthread rt)
|
||||
|
||||
list(APPEND TOOLS rmsem rmshm)
|
||||
endif()
|
||||
|
||||
if(LIBZMQ_FOUND)
|
||||
add_executable(zmq-keygen zmq-keygen.c)
|
||||
target_include_directories(zmq-keygen PUBLIC ${LIBZMQ_INCLUDE_DIRS})
|
||||
target_link_libraries(zmq-keygen PUBLIC PkgConfig::LIBZMQ)
|
||||
target_link_libraries(zmq-keygen PUBLIC PkgConfig::LIBZMQ)
|
||||
|
||||
list(APPEND TOOLS zmq-keygen)
|
||||
endif()
|
||||
|
||||
install(
|
||||
TARGETS ${TOOLS}
|
||||
COMPONENT tools
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
)
|
||||
|
||||
install(
|
||||
PROGRAMS villas.sh
|
||||
COMPONENT bin
|
||||
DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
RENAME villas
|
||||
)
|
||||
|
|
|
@ -22,6 +22,6 @@
|
|||
|
||||
install(
|
||||
DIRECTORY socket/
|
||||
COMPONENT bin
|
||||
DESTINATION share/villas/node/web
|
||||
COMPONENT runtime
|
||||
)
|
||||
|
|
Loading…
Add table
Reference in a new issue