Blame swig/CMakeLists.txt

Packit 8fb591
project(libyang-cpp)
Packit 8fb591
Packit 8fb591
set(CMAKE_CXX_FLAGS         "${CMAKE_CXX_FLAGS} -Wall -Wextra -std=c++11")
Packit 8fb591
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG")
Packit 8fb591
set(CMAKE_CXX_FLAGS_PACKAGE "-g -O2 -DNDEBUG")
Packit 8fb591
set(CMAKE_CXX_FLAGS_DEBUG   "-g -O0")
Packit 8fb591
Packit 8fb591
# temporary bugfix
Packit 8fb591
add_compile_options(-std=c++11)
Packit 8fb591
Packit 8fb591
# find SWIG package
Packit 8fb591
if(GEN_LANGUAGE_BINDINGS)
Packit 8fb591
    find_package(SWIG 3.0.12 REQUIRED)
Packit 8fb591
    if(NOT SWIG_FOUND)
Packit 8fb591
        message(WARNING "SWIG library not found")
Packit 8fb591
    else()
Packit 8fb591
        include(${SWIG_USE_FILE})
Packit 8fb591
    endif()
Packit 8fb591
endif()
Packit 8fb591
Packit 8fb591
# find Python package
Packit 8fb591
if(GEN_PYTHON_BINDINGS AND SWIG_FOUND)
Packit 8fb591
    message(STATUS "Python version ${GEN_PYTHON_VERSION} was selected")
Packit 8fb591
    unset(PYTHON_LIBRARY CACHE)
Packit 8fb591
    unset(PYTHON_EXECUTABLE CACHE)
Packit 8fb591
    unset(PYTHON_INCLUDE_DIR CACHE)
Packit 8fb591
    unset(PYTHON_LIBRARY_DEBUG CACHE)
Packit 8fb591
    if(${GEN_PYTHON_VERSION} STREQUAL "2")
Packit 8fb591
        find_package(PythonLibs 2 REQUIRED)
Packit 8fb591
        find_package(PythonInterp 2 REQUIRED)
Packit 8fb591
        if(NOT PYTHONLIBS_FOUND)
Packit 8fb591
            message(WARNING "Did not found Python version 2.x")
Packit 8fb591
            message(STATUS "Sysrepo supports Python 2.x and Python 3.x")
Packit 8fb591
        endif()
Packit 8fb591
    elseif(${GEN_PYTHON_VERSION} STREQUAL "3")
Packit 8fb591
        find_package(PythonLibs 3 REQUIRED)
Packit 8fb591
        find_package(PythonInterp 3 REQUIRED)
Packit 8fb591
        if(NOT PYTHONLIBS_FOUND)
Packit 8fb591
            message(WARNING "Did not found Python version 3.x")
Packit 8fb591
            message(STATUS "Sysrepo supports Python 2.x and Python 3.x")
Packit 8fb591
        endif()
Packit 8fb591
    else()
Packit 8fb591
        message(WARNING "Sysrepo supports Python 2.x and Python 3.x")
Packit 8fb591
    endif()
Packit 8fb591
endif()
Packit 8fb591
Packit 8fb591
set(LIBYANG_CPP_SOURCES
Packit 8fb591
    ${CMAKE_SOURCE_DIR}/swig/cpp/src/Xml.cpp
Packit 8fb591
    ${CMAKE_SOURCE_DIR}/swig/cpp/src/Libyang.cpp
Packit 8fb591
    ${CMAKE_SOURCE_DIR}/swig/cpp/src/Tree_Data.cpp
Packit 8fb591
    ${CMAKE_SOURCE_DIR}/swig/cpp/src/Tree_Schema.cpp
Packit 8fb591
    ${CMAKE_SOURCE_DIR}/swig/cpp/src/Internal.cpp)
Packit 8fb591
Packit 8fb591
set(LIBYANG_HPP_SOURCES
Packit 8fb591
    ${CMAKE_SOURCE_DIR}/swig/cpp/src/Xml.hpp
Packit 8fb591
    ${CMAKE_SOURCE_DIR}/swig/cpp/src/Libyang.hpp
Packit 8fb591
    ${CMAKE_SOURCE_DIR}/swig/cpp/src/Tree_Data.hpp
Packit 8fb591
    ${CMAKE_SOURCE_DIR}/swig/cpp/src/Tree_Schema.hpp
Packit 8fb591
    ${CMAKE_SOURCE_DIR}/swig/cpp/src/Internal.hpp)
Packit 8fb591
Packit 8fb591
FUNCTION(PREPEND var prefix)
Packit 8fb591
    SET(listVar "")
Packit 8fb591
    FOREACH(f ${ARGN})
Packit 8fb591
        LIST(APPEND listVar "${prefix}/${f}")
Packit 8fb591
    ENDFOREACH(f)
Packit 8fb591
    SET(${var} "${listVar}" PARENT_SCOPE)
Packit 8fb591
ENDFUNCTION(PREPEND)
Packit 8fb591
Packit 8fb591
PREPEND(abs_libsrc ${CMAKE_SOURCE_DIR} ${libsrc})
Packit 8fb591
Packit 8fb591
if(ENABLE_STATIC)
Packit 8fb591
    add_library(libyang-cpp STATIC ${LIBYANG_CPP_SOURCES})
Packit 8fb591
else(ENABLE_STATIC)
Packit 8fb591
    add_library(libyang-cpp SHARED ${LIBYANG_CPP_SOURCES})
Packit 8fb591
endif(ENABLE_STATIC)
Packit 8fb591
SET_TARGET_PROPERTIES(libyang-cpp PROPERTIES
Packit 8fb591
    VERSION ${LIBYANG_VERSION} SOVERSION ${LIBYANG_SOVERSION} PREFIX "")
Packit 8fb591
Packit 8fb591
# include custom Modules
Packit 8fb591
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/CMakeModules/")
Packit 8fb591
Packit 8fb591
include_directories(${CMAKE_SOURCE_DIR})
Packit 8fb591
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/cpp/src")
Packit 8fb591
target_link_libraries(libyang-cpp yang)
Packit 8fb591
Packit 8fb591
if(PKG_CONFIG_FOUND)
Packit 8fb591
    configure_file("${CMAKE_CURRENT_SOURCE_DIR}/libyang-cpp.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/libyang-cpp.pc" @ONLY)
Packit 8fb591
    install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libyang-cpp.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
Packit 8fb591
endif()
Packit 8fb591
Packit 8fb591
# install binary
Packit 8fb591
install(TARGETS libyang-cpp DESTINATION ${CMAKE_INSTALL_LIBDIR})
Packit 8fb591
install(FILES ${LIBYANG_HPP_SOURCES} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libyang)
Packit 8fb591
Packit 8fb591
if (GEN_CPP_BINDINGS)
Packit 8fb591
    add_subdirectory(cpp/examples)
Packit 8fb591
    if (ENABLE_BUILD_TESTS)
Packit 8fb591
        add_subdirectory(cpp/tests)
Packit 8fb591
    endif()
Packit 8fb591
endif()
Packit 8fb591
Packit 8fb591
if(ENABLE_STATIC AND PYTHONLIBS_FOUND AND PYTHONINTERP_FOUND AND (${GEN_PYTHON_VERSION} STREQUAL "2" OR ${GEN_PYTHON_VERSION} STREQUAL "3"))
Packit 8fb591
    message(WARNING "Can't create a static Python module")
Packit 8fb591
elseif(PYTHONLIBS_FOUND AND PYTHONINTERP_FOUND AND (${GEN_PYTHON_VERSION} STREQUAL "2" OR ${GEN_PYTHON_VERSION} STREQUAL "3"))
Packit 8fb591
    add_subdirectory(python)
Packit 8fb591
endif()
Packit 8fb591
Packit 8fb591
if(NOT ENABLE_STATIC AND GEN_JAVASCRIPT_BINDINGS)
Packit 8fb591
    message(WARNING "Can't create Javascript bindings with a shared library, please use -DENABLE_STATIC")
Packit 8fb591
elseif(ENABLE_STATIC AND GEN_JAVASCRIPT_BINDINGS)
Packit 8fb591
    add_subdirectory(javascript)
Packit 8fb591
endif()
Packit 8fb591
Packit 8fb591
if(ENABLE_STATIC AND GEN_JAVA_BINDINGS)
Packit 8fb591
    message(WARNING "Can't create a static Java module")
Packit 8fb591
elseif(NOT ENABLE_STATIC AND GEN_JAVA_BINDINGS)
Packit 8fb591
    add_subdirectory(java)
Packit 8fb591
endif()