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