set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wpedantic -std=c++11 -fno-strict-aliasing") set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -O2") set(CMAKE_CXX_FLAGS_DEBUG "-g -O0") set(TEST_REPOSITORY_LOC "${CMAKE_BINARY_DIR}/repository") remove_definitions(-DSWIGLUA) # find SWIG package if(GEN_LANGUAGE_BINDINGS) find_package(SWIG) if(NOT SWIG_FOUND) message(WARNING "SWIG library not found") else() include(${SWIG_USE_FILE}) endif() endif() # find Lua package if(GEN_LUA_BINDINGS AND SWIG_FOUND) message("-- Lua version ${GEN_LUA_VERSION} was selected") if(${GEN_LUA_VERSION} STREQUAL "5.1") find_package(Lua51) if(NOT LUA51_FOUND) message(WARNING "Did not found Lua version 5.1") message("-- Sysrepo supports Lua 5.1, Lua 5.2 and Lua 5.3") endif() elseif(${GEN_LUA_VERSION} STREQUAL "5.2") find_package(Lua 5.2) if(NOT LUA_FOUND) message(WARNING "Did not found Lua version 5.2") message("-- Sysrepo supports Lua 5.1, Lua 5.2 and Lua 5.3") endif() elseif(${GEN_LUA_VERSION} STREQUAL "5.3") find_package(Lua 5.3) if(NOT LUA_FOUND) message(WARNING "Did not found Lua version 5.3") message("-- Sysrepo supports Lua 5.1, Lua 5.2 and Lua 5.3") endif() else() message(WARNING "Sysrepo supports Lua 5.1, Lua 5.2 and Lua 5.3") endif() endif() # find Python package if(GEN_PYTHON_BINDINGS AND SWIG_FOUND) message("-- Python version ${GEN_PYTHON_VERSION} was selected") if(${GEN_PYTHON_VERSION} STREQUAL "2") find_package(PythonLibs 2) find_package(PythonInterp) if(NOT PYTHONLIBS_FOUND) message(WARNING "Did not found Python version 2.x") message("-- Sysrepo supports Python 2.x and Python 3.x") endif() elseif(${GEN_PYTHON_VERSION} STREQUAL "3") find_package(PythonLibs 3) find_package(PythonInterp) if(NOT PYTHONLIBS_FOUND) message(WARNING "Did not found Python version 3.x") message("-- Sysrepo supports Python 2.x and Python 3.x") else() set(GEN_PYTHON3_TESTS 1 CACHE BOOL "Enable Python3 tests.") endif() else() message(WARNING "Sysrepo supports Python 2.x and Python 3.x") endif() endif() # find Python package if(GEN_JAVA_BINDINGS AND SWIG_FOUND) find_package(Java REQUIRED) find_package(JNI REQUIRED) if(NOT JAVA_FOUND) message(WARNING "Did not found Java") endif() if(NOT JNI_FOUND) message(WARNING "Did not found JNI") endif() endif() project(Sysrepo-cpp) set(SYSREPO_CPP_SOURCES ${CMAKE_SOURCE_DIR}/swig/cpp/src/Sysrepo.cpp ${CMAKE_SOURCE_DIR}/swig/cpp/src/Connection.cpp ${CMAKE_SOURCE_DIR}/swig/cpp/src/Session.cpp ${CMAKE_SOURCE_DIR}/swig/cpp/src/Struct.cpp ${CMAKE_SOURCE_DIR}/swig/cpp/src/Xpath.cpp ${CMAKE_SOURCE_DIR}/swig/cpp/src/Tree.cpp ${CMAKE_SOURCE_DIR}/swig/cpp/src/Internal.cpp) set(SYSREPO_H_SOURCES ${CMAKE_SOURCE_DIR}/swig/cpp/src/Sysrepo.h ${CMAKE_SOURCE_DIR}/swig/cpp/src/Connection.h ${CMAKE_SOURCE_DIR}/swig/cpp/src/Session.h ${CMAKE_SOURCE_DIR}/swig/cpp/src/Struct.h ${CMAKE_SOURCE_DIR}/swig/cpp/src/Xpath.h ${CMAKE_SOURCE_DIR}/swig/cpp/src/Tree.h ${CMAKE_SOURCE_DIR}/swig/cpp/src/Internal.h) add_library(Sysrepo-cpp SHARED ${SYSREPO_CPP_SOURCES}) SET_TARGET_PROPERTIES(Sysrepo-cpp PROPERTIES VERSION ${SYSREPO_VERSION} SOVERSION ${SYSREPO_SOVERSION}) # include custom Modules set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/CMakeModules/") include_directories(${CMAKE_SOURCE_DIR}) include_directories("${CMAKE_CURRENT_SOURCE_DIR}/cpp/src") target_link_libraries(Sysrepo-cpp sysrepo) # install binary install(TARGETS Sysrepo-cpp DESTINATION ${CMAKE_INSTALL_LIBDIR}) install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/cpp/src/" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sysrepo-cpp FILES_MATCHING PATTERN "*.h") # Examples if(GEN_CPP_BINDINGS AND BUILD_CPP_EXAMPLES) add_subdirectory(cpp/examples) if("${TEST_REPOSITORY_LOC}" STREQUAL "${REPOSITORY_LOC}" AND ENABLE_TESTS) add_subdirectory(cpp/tests) # make Sysrepo-cpp depend on sysrepoctl add_dependencies(Sysrepo-cpp sysrepoctl) macro(INSTALL_YANG MODULE_NAME MODULE_REVISION) set(CPP_TEST_MODULE ${MODULE_NAME}) set(CPP_TEST_MODULE_REV ${MODULE_REVISION} ) set(CPP_SWIG_DIR ${CMAKE_CURRENT_SOURCE_DIR}/cpp) set(CPP_TEST_DIR ${CPP_SWIG_DIR}/tests) set(CPP_YANG_DIR ${CPP_TEST_DIR}/yang) ADD_CUSTOM_COMMAND( TARGET Sysrepo-cpp POST_BUILD COMMAND ${CMAKE_BINARY_DIR}/src/sysrepoctl --install --yang=${CPP_YANG_DIR}/${CPP_TEST_MODULE}@${CPP_TEST_MODULE_REV}.yang VERBATIM) endmacro(INSTALL_YANG) INSTALL_YANG("swig-test-cpp-changes" "2017-03-09") INSTALL_YANG("swig-test-cpp-operations" "2017-03-09") endif() endif() if(PYTHONLIBS_FOUND AND PYTHONINTERP_FOUND AND ${GEN_PYTHON_VERSION} STREQUAL "2") add_subdirectory(python2) endif() if(PYTHONLIBS_FOUND AND PYTHONINTERP_FOUND AND ${GEN_PYTHON_VERSION} STREQUAL "3") add_subdirectory(python3) endif() if(JAVA_FOUND) add_subdirectory(java) endif() # build Lua bindings if(LUA51_FOUND OR LUA_FOUND) add_subdirectory(lua) endif()