1
0
Fork 0
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:
Steffen Vogel 2018-06-30 01:29:45 +02:00
parent cbfa94cb3c
commit 0a4f1a3731
23 changed files with 244 additions and 166 deletions

View file

@ -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
View 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})

View file

@ -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")

View file

@ -53,6 +53,4 @@ mark_as_advanced(
if(CMAKE_BUILD_TYPE STREQUAL "Coverage")
target_link_libraries("gcov")
string(APPEND VARIANTS "-coverage")
endif()

View file

@ -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()

View file

@ -51,8 +51,4 @@ mark_as_advanced(
CMAKE_SHARED_LINKER_FLAGS_PROFILING
)
if(CMAKE_BUILD_TYPE STREQUAL "Profiling")
string(APPEND VARIANTS "-profile")
endif()

View file

@ -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()

View file

@ -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()

View file

@ -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"
)

View file

@ -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
#)

View file

@ -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}
)

View file

@ -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}
)

View file

@ -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}
)

View file

@ -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}
)

View file

@ -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
)

View file

@ -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

View file

@ -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
View 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}

View file

@ -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

View file

@ -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()

View file

@ -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}
)

View file

@ -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
)

View file

@ -22,6 +22,6 @@
install(
DIRECTORY socket/
COMPONENT bin
DESTINATION share/villas/node/web
COMPONENT runtime
)