Loading pkgs/by-name/hf/hfsm2/0001-install.patch 0 → 100644 +107 −0 Original line number Diff line number Diff line diff --git a/CMake/hfsm2Config.cmake.in b/CMake/hfsm2Config.cmake.in new file mode 100644 index 0000000..9c15f36 --- /dev/null +++ b/CMake/hfsm2Config.cmake.in @@ -0,0 +1,4 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake") +check_required_components("@PROJECT_NAME@") diff --git a/CMakeLists.txt b/CMakeLists.txt index 7d951dc..bef5518 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,31 +1,75 @@ cmake_minimum_required(VERSION 3.5) +project(hfsm2 VERSION 3.5.1 LANGUAGES CXX) + +option(HFSM2_ENABLE_TESTS "Enable tests" ON) + find_program(CCACHE_PROGRAM ccache) if(CCACHE_PROGRAM) message(STATUS "Found ccache in ${CCACHE_PROGRAM}") set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}") endif() -project(hfsm2_test) +add_library(${PROJECT_NAME} INTERFACE) +target_include_directories( + ${PROJECT_NAME} INTERFACE + $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include> + $<INSTALL_INTERFACE:include> +) -file(GLOB SOURCE_FILES "test/*.cpp" "test/shared/*.cpp") -add_executable(${PROJECT_NAME} ${SOURCE_FILES}) +include(CMakePackageConfigHelpers) +write_basic_package_version_file( + "${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" + VERSION ${PROJECT_VERSION} + COMPATIBILITY AnyNewerVersion +) -target_include_directories(${PROJECT_NAME} PRIVATE - "${CMAKE_CURRENT_LIST_DIR}/development" - "${CMAKE_CURRENT_LIST_DIR}/external" - "${CMAKE_CURRENT_LIST_DIR}/include") +install( + TARGETS ${PROJECT_NAME} + EXPORT ${PROJECT_NAME}Targets +) -target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_11) +configure_package_config_file( + "${PROJECT_SOURCE_DIR}/CMake/${PROJECT_NAME}Config.cmake.in" + "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" + INSTALL_DESTINATION lib/cmake/${PROJECT_NAME} +) -if(MSVC) - target_compile_options(${PROJECT_NAME} PRIVATE /W4 /WX) -else() - target_compile_options(${PROJECT_NAME} PRIVATE -Werror -Wall -Wextra -Wpedantic -Wshadow -Wold-style-cast) -endif() +install( + EXPORT ${PROJECT_NAME}Targets + DESTINATION lib/cmake/${PROJECT_NAME} +) +install( + FILES "${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" + DESTINATION lib/cmake/${PROJECT_NAME} +) +install( + DIRECTORY "${PROJECT_SOURCE_DIR}/include/" + DESTINATION include +) + +if(HFSM2_ENABLE_TESTS) + set(TESTS_NAME "hfsm2_tests") + + file(GLOB SOURCE_FILES "test/*.cpp" "test/shared/*.cpp") + add_executable(${TESTS_NAME} ${SOURCE_FILES}) -add_test(NAME ${PROJECT_NAME} COMMAND ${PROJECT_NAME}) + target_include_directories(${TESTS_NAME} PRIVATE + "${CMAKE_CURRENT_LIST_DIR}/development" + "${CMAKE_CURRENT_LIST_DIR}/external" + "${CMAKE_CURRENT_LIST_DIR}/include") -add_custom_command(TARGET ${PROJECT_NAME} - POST_BUILD - COMMAND ${PROJECT_NAME}) + target_compile_features(${TESTS_NAME} PRIVATE cxx_std_11) + + if(MSVC) + target_compile_options(${TESTS_NAME} PRIVATE /W4 /WX) + else() + target_compile_options(${TESTS_NAME} PRIVATE -Werror -Wall -Wextra -Wpedantic -Wshadow -Wold-style-cast) + endif() + + add_test(NAME ${TESTS_NAME} COMMAND ${TESTS_NAME}) + + add_custom_command(TARGET ${TESTS_NAME} + POST_BUILD + COMMAND ${TESTS_NAME}) +endif() pkgs/by-name/hf/hfsm2/package.nix 0 → 100644 +36 −0 Original line number Diff line number Diff line { lib, stdenv, fetchFromGitHub, cmake }: stdenv.mkDerivation rec { pname = "hfsm2"; version = "2.5.1"; src = fetchFromGitHub { owner = "andrew-gresyk"; repo = "HFSM2"; rev = "${version}"; sha256 = "sha256-aa0VvFFW63Q5Y2AD4qBNrPUBMDwrA7VWPaDz6+5bvn8="; }; patches = [ ./0001-install.patch ]; nativeBuildInputs = [ cmake ]; meta = { description = "High-Performance Hierarchical Finite State Machine"; longDescription = '' Header-only heriarchical FSM framework in C++11, with fully statically-defined structure (no dynamic allocations), built with variadic templates. ''; homepage = "https://github.com/andrew-gresyk/HFSM2"; license = lib.licenses.mit; maintainers = [ lib.maintainers.cadkin ]; platforms = lib.platforms.all; }; } Loading
pkgs/by-name/hf/hfsm2/0001-install.patch 0 → 100644 +107 −0 Original line number Diff line number Diff line diff --git a/CMake/hfsm2Config.cmake.in b/CMake/hfsm2Config.cmake.in new file mode 100644 index 0000000..9c15f36 --- /dev/null +++ b/CMake/hfsm2Config.cmake.in @@ -0,0 +1,4 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake") +check_required_components("@PROJECT_NAME@") diff --git a/CMakeLists.txt b/CMakeLists.txt index 7d951dc..bef5518 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,31 +1,75 @@ cmake_minimum_required(VERSION 3.5) +project(hfsm2 VERSION 3.5.1 LANGUAGES CXX) + +option(HFSM2_ENABLE_TESTS "Enable tests" ON) + find_program(CCACHE_PROGRAM ccache) if(CCACHE_PROGRAM) message(STATUS "Found ccache in ${CCACHE_PROGRAM}") set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}") endif() -project(hfsm2_test) +add_library(${PROJECT_NAME} INTERFACE) +target_include_directories( + ${PROJECT_NAME} INTERFACE + $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include> + $<INSTALL_INTERFACE:include> +) -file(GLOB SOURCE_FILES "test/*.cpp" "test/shared/*.cpp") -add_executable(${PROJECT_NAME} ${SOURCE_FILES}) +include(CMakePackageConfigHelpers) +write_basic_package_version_file( + "${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" + VERSION ${PROJECT_VERSION} + COMPATIBILITY AnyNewerVersion +) -target_include_directories(${PROJECT_NAME} PRIVATE - "${CMAKE_CURRENT_LIST_DIR}/development" - "${CMAKE_CURRENT_LIST_DIR}/external" - "${CMAKE_CURRENT_LIST_DIR}/include") +install( + TARGETS ${PROJECT_NAME} + EXPORT ${PROJECT_NAME}Targets +) -target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_11) +configure_package_config_file( + "${PROJECT_SOURCE_DIR}/CMake/${PROJECT_NAME}Config.cmake.in" + "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" + INSTALL_DESTINATION lib/cmake/${PROJECT_NAME} +) -if(MSVC) - target_compile_options(${PROJECT_NAME} PRIVATE /W4 /WX) -else() - target_compile_options(${PROJECT_NAME} PRIVATE -Werror -Wall -Wextra -Wpedantic -Wshadow -Wold-style-cast) -endif() +install( + EXPORT ${PROJECT_NAME}Targets + DESTINATION lib/cmake/${PROJECT_NAME} +) +install( + FILES "${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" + DESTINATION lib/cmake/${PROJECT_NAME} +) +install( + DIRECTORY "${PROJECT_SOURCE_DIR}/include/" + DESTINATION include +) + +if(HFSM2_ENABLE_TESTS) + set(TESTS_NAME "hfsm2_tests") + + file(GLOB SOURCE_FILES "test/*.cpp" "test/shared/*.cpp") + add_executable(${TESTS_NAME} ${SOURCE_FILES}) -add_test(NAME ${PROJECT_NAME} COMMAND ${PROJECT_NAME}) + target_include_directories(${TESTS_NAME} PRIVATE + "${CMAKE_CURRENT_LIST_DIR}/development" + "${CMAKE_CURRENT_LIST_DIR}/external" + "${CMAKE_CURRENT_LIST_DIR}/include") -add_custom_command(TARGET ${PROJECT_NAME} - POST_BUILD - COMMAND ${PROJECT_NAME}) + target_compile_features(${TESTS_NAME} PRIVATE cxx_std_11) + + if(MSVC) + target_compile_options(${TESTS_NAME} PRIVATE /W4 /WX) + else() + target_compile_options(${TESTS_NAME} PRIVATE -Werror -Wall -Wextra -Wpedantic -Wshadow -Wold-style-cast) + endif() + + add_test(NAME ${TESTS_NAME} COMMAND ${TESTS_NAME}) + + add_custom_command(TARGET ${TESTS_NAME} + POST_BUILD + COMMAND ${TESTS_NAME}) +endif()
pkgs/by-name/hf/hfsm2/package.nix 0 → 100644 +36 −0 Original line number Diff line number Diff line { lib, stdenv, fetchFromGitHub, cmake }: stdenv.mkDerivation rec { pname = "hfsm2"; version = "2.5.1"; src = fetchFromGitHub { owner = "andrew-gresyk"; repo = "HFSM2"; rev = "${version}"; sha256 = "sha256-aa0VvFFW63Q5Y2AD4qBNrPUBMDwrA7VWPaDz6+5bvn8="; }; patches = [ ./0001-install.patch ]; nativeBuildInputs = [ cmake ]; meta = { description = "High-Performance Hierarchical Finite State Machine"; longDescription = '' Header-only heriarchical FSM framework in C++11, with fully statically-defined structure (no dynamic allocations), built with variadic templates. ''; homepage = "https://github.com/andrew-gresyk/HFSM2"; license = lib.licenses.mit; maintainers = [ lib.maintainers.cadkin ]; platforms = lib.platforms.all; }; }