Skip to content
Snippets Groups Projects
CMakeLists.txt 1.66 KiB
Newer Older
  • Learn to ignore specific revisions
  • CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
    
    Petar Paradzik's avatar
    Petar Paradzik committed
    
    
    project(rulengd)
    
    Petar Paradzik's avatar
    Petar Paradzik committed
    
    add_definitions(
    
    Petar Paradzik's avatar
    Petar Paradzik committed
      -Wall
      -Wextra
      -Wuninitialized
      -Wundef
      -Wshadow
      -Wunreachable-code
      -Wfloat-equal
      -std=gnu11
      )
    
    Petar Paradzik's avatar
    Petar Paradzik committed
    
    set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules")
    
    find_package(LIBUBOX REQUIRED)
    find_package(LIBUCI REQUIRED)
    
    find_package(LIBUBUS REQUIRED)
    
    find_package(JSON-C REQUIRED)
    
    Petar Paradzik's avatar
    Petar Paradzik committed
    
    
    set(RULENGD_LINK
      ${LIBUBOX_LIBRARIES}
      ${LIBUCI_LIBRARIES}
      ${LIBUBUS_LIBRARIES}
    
      ${JSON-C_LIBRARIES}
    
    Petar Paradzik's avatar
    Petar Paradzik committed
    
    set(SOURCES
    
    Petar Paradzik's avatar
    Petar Paradzik committed
      src/main.c
      src/ruleng.c
      src/ruleng_ubus.c
      src/ruleng_rules.c
    
    Petar Paradzik's avatar
    Petar Paradzik committed
      )
    
    Petar Paradzik's avatar
    Petar Paradzik committed
    
    add_executable(rulengd ${SOURCES})
    
    target_link_libraries(rulengd ${RULENGD_LINK})
    
    #testing
    IF(CMAKE_BUILD_TYPE STREQUAL Debug)
    	OPTION(ENABLE_BUILD_TESTS "Build tests" ON)
    
    	OPTION(ENABLE_VALGRIND_TESTS "Build tests with valgrind" ON)
    
    ELSE()
    	OPTION(ENABLE_BUILD_TESTS "Build tests" OFF)
    
    	OPTION(ENABLE_VALGRIND_TESTS "Build tests with valgrind" OFF)
    
    ENDIF()
    
    IF(ENABLE_BUILD_TESTS)
    	FIND_PACKAGE(CMocka)
    	if(CMOCKA_FOUND)
    
    		INCLUDE(CodeCoverage)
        APPEND_COVERAGE_COMPILER_FLAGS()
        SET(COVERAGE_EXCLUDES '*/main.c' '/usr/include/*' '*/unit_tests_*.c' '*/functional_tests_*.c' '*/template.c')
    
    		ADD_LIBRARY(${PROJECT_NAME}-api SHARED ${SOURCES})
    		MESSAGE("-- Building tests")
    		ENABLE_TESTING()
    
    		ADD_SUBDIRECTORY(test/cmocka)
    		ADD_SUBDIRECTORY(test/cmocka/template_obj)
    
    	ELSE(CMOCKA_FOUND)
    		MESSAGE("-- CMocka not found")
    	ENDIF(CMOCKA_FOUND)
    ENDIF(ENABLE_BUILD_TESTS)
    
    
    install(FILES test/cmocka/files/etc/config/ruleng-test-uci DESTINATION /etc/config)
    install(FILES test/cmocka/files/etc/config/ruleng-test-recipe DESTINATION /etc/config)
    install(FILES test/cmocka/files/etc/recipe_1.json DESTINATION /etc)