diff --git a/CMakeLists.txt b/CMakeLists.txt
index adce01b2e..70444b0a4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -20,7 +20,7 @@
# along with this program. If not, see .
###################################################################################
-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)
diff --git a/cmake/FindProtobufC.cmake b/cmake/FindProtobufC.cmake
new file mode 100644
index 000000000..d02cceba9
--- /dev/null
+++ b/cmake/FindProtobufC.cmake
@@ -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})
diff --git a/cmake/VILLASnodePackaging.cmake b/cmake/VILLASnodePackaging.cmake
index acdee4894..5977288c9 100644
--- a/cmake/VILLASnodePackaging.cmake
+++ b/cmake/VILLASnodePackaging.cmake
@@ -20,9 +20,6 @@
# along with this program. If not, see .
###################################################################################
-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")
diff --git a/cmake/config/Coverage.cmake b/cmake/config/Coverage.cmake
index ef5bfdbbf..d92286c4f 100644
--- a/cmake/config/Coverage.cmake
+++ b/cmake/config/Coverage.cmake
@@ -53,6 +53,4 @@ mark_as_advanced(
if(CMAKE_BUILD_TYPE STREQUAL "Coverage")
target_link_libraries("gcov")
-
- string(APPEND VARIANTS "-coverage")
endif()
diff --git a/cmake/config/Debug.cmake b/cmake/config/Debug.cmake
index 18d5cea7c..4aa187da1 100644
--- a/cmake/config/Debug.cmake
+++ b/cmake/config/Debug.cmake
@@ -19,7 +19,3 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
###################################################################################
-
-if(CMAKE_BUILD_TYPE STREQUAL "Debug")
- string(APPEND VARIANTS "-debug")
-endif()
diff --git a/cmake/config/Profiling.cmake b/cmake/config/Profiling.cmake
index c048e310d..27bd63863 100644
--- a/cmake/config/Profiling.cmake
+++ b/cmake/config/Profiling.cmake
@@ -51,8 +51,4 @@ mark_as_advanced(
CMAKE_SHARED_LINKER_FLAGS_PROFILING
)
-if(CMAKE_BUILD_TYPE STREQUAL "Profiling")
- string(APPEND VARIANTS "-profile")
-endif()
-
diff --git a/cmake/config/Release.cmake b/cmake/config/Release.cmake
index cfa3432bc..4aa187da1 100644
--- a/cmake/config/Release.cmake
+++ b/cmake/config/Release.cmake
@@ -19,7 +19,3 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
###################################################################################
-
-if(CMAKE_BUILD_TYPE STREQUAL "Release")
- string(APPEND VARIANTS "-release")
-endif()
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
index 99ca867c5..aa3f57c67 100644
--- a/doc/CMakeLists.txt
+++ b/doc/CMakeLists.txt
@@ -20,19 +20,45 @@
# along with this program. If not, see .
###################################################################################
-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()
diff --git a/etc/CMakeLists.txt b/etc/CMakeLists.txt
index 43c7c9435..412ee2b07 100644
--- a/etc/CMakeLists.txt
+++ b/etc/CMakeLists.txt
@@ -20,6 +20,11 @@
# along with this program. If not, see .
###################################################################################
-install(DIRECTORY .
- DESTINATION etc/villas/node/
+install(
+ DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ COMPONENT bin
+ DESTINATION etc/villas/node
+ FILES_MATCHING
+ PATTERN "*.conf"
+ PATTERN "*.json"
)
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index cdeb80165..cffebee4d 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -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
+#)
diff --git a/lib/api/CMakeLists.txt b/lib/api/CMakeLists.txt
index 906b348c0..c7f3cbf30 100644
--- a/lib/api/CMakeLists.txt
+++ b/lib/api/CMakeLists.txt
@@ -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}
+)
diff --git a/lib/formats/CMakeLists.txt b/lib/formats/CMakeLists.txt
index f7d7a74fc..f6c7828de 100644
--- a/lib/formats/CMakeLists.txt
+++ b/lib/formats/CMakeLists.txt
@@ -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}
+)
diff --git a/lib/hooks/CMakeLists.txt b/lib/hooks/CMakeLists.txt
index ef7802d28..e0f1a37da 100644
--- a/lib/hooks/CMakeLists.txt
+++ b/lib/hooks/CMakeLists.txt
@@ -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}
+)
diff --git a/lib/nodes/CMakeLists.txt b/lib/nodes/CMakeLists.txt
index 36c9e76e3..6f39e1f03 100644
--- a/lib/nodes/CMakeLists.txt
+++ b/lib/nodes/CMakeLists.txt
@@ -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}
+)
diff --git a/packaging/CMakeLists.txt b/packaging/CMakeLists.txt
index 8a12f074d..dac32b74a 100644
--- a/packaging/CMakeLists.txt
+++ b/packaging/CMakeLists.txt
@@ -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
)
diff --git a/packaging/docker/CMakeLists.txt b/packaging/docker/CMakeLists.txt
index d26a785d1..72de0defc 100644
--- a/packaging/docker/CMakeLists.txt
+++ b/packaging/docker/CMakeLists.txt
@@ -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
diff --git a/packaging/docker/Dockerfile.dev b/packaging/docker/Dockerfile.dev
index dece0626b..54af8157a 100644
--- a/packaging/docker/Dockerfile.dev
+++ b/packaging/docker/Dockerfile.dev
@@ -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 \
diff --git a/packaging/libvillas.pc.in b/packaging/libvillas.pc.in
new file mode 100644
index 000000000..512fbcf78
--- /dev/null
+++ b/packaging/libvillas.pc.in
@@ -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}
diff --git a/packaging/rpm/villas-node.spec b/packaging/rpm/villas-node.spec
deleted file mode 100644
index 71a8a3255..000000000
--- a/packaging/rpm/villas-node.spec
+++ /dev/null
@@ -1,89 +0,0 @@
-Name: villas-node
-Version: §VERSION§
-Vendor: Institute for Automation of Complex Power Systems
-Packager: Steffen Vogel
-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