set(VERSION_MINOR 0)
set(VERSION_PATCH 0)
+# Dynamic libraries not linked to build tree:
+set(CMAKE_SKIP_RPATH TRUE)
+
# Build type:
if(NOT CMAKE_BUILD_TYPE)
message(WARNING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel.")
message(STATUS "CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}")
# Build output directory:
-set(CMAKE_RUNTIME_OUTPUT_DIRECTORY build/${CMAKE_BUILD_TYPE}/bin)
-set(CMAKE_LIBRARY_OUTPUT_DIRECTORY build/${CMAKE_BUILD_TYPE}/lib)
-set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY build/${CMAKE_BUILD_TYPE}/lib)
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/build/${CMAKE_BUILD_TYPE}/bin)
+set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/build/${CMAKE_BUILD_TYPE}/lib)
+set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/build/${CMAKE_BUILD_TYPE}/lib)
message(STATUS "CMAKE_RUNTIME_OUTPUT_DIRECTORY is ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
message(STATUS "CMAKE_LIBRARY_OUTPUT_DIRECTORY is ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
message(STATUS "CMAKE_ARCHIVE_OUTPUT_DIRECTORY is ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}")
if(CMAKE_CXX_COMPILER_ID MATCHES GNU)
#execute_process(COMMAND g++ --version >/dev/null 2>/dev/null)
set(CMAKE_CXX_COMPILER "/usr/bin/g++")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wno-unknown-pragmas -Wno-sign-compare -Woverloaded-virtual -Wwrite-strings -Wno-unused")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -Wall -Wno-deprecated -Wwrite-strings -Wno-unknown-pragmas -Wno-sign-compare -Wno-maybe-uninitialized -Wno-unused -Wno-reorder")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3")
set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "-O3")
#execute_process(COMMAND clang++ --version >/dev/null 2>/dev/null)
add_definitions(-DIS_CLANG)
set(CMAKE_CXX_COMPILER "/usr/bin/clang++")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wno-unknown-pragmas -Wno-sign-compare -Woverloaded-virtual -Wwrite-strings -Wno-unused -Wno-parentheses-equality")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -Wall -Wno-deprecated -Wwrite-strings -Wno-unknown-pragmas -Wno-sign-compare -Wno-maybe-uninitialized -Wno-unused -Wno-reorder -Wno-parentheses-equality")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3")
set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "-O3")
FILE(GLOB children RELATIVE ${curdir} ${curdir}/*)
SET(dirlist "")
FOREACH(child ${children})
+
+ # EXCLUDE DATABASE RESOURCES (-DSKIP_DATABASE_BUILD)
+ if(SKIP_DATABASE_BUILD)
+ string(REGEX MATCH "dbms|dbos" DATABASE ${child})
+ IF(DATABASE)
+ CONTINUE()
+ ENDIF()
+ ENDIF()
+
IF(IS_DIRECTORY ${curdir}/${child})
LIST(APPEND dirlist ${child})
ENDIF()
add_definitions(-DLDAP_DEPRECATED)
# General includes:
-include_directories(include/anna)
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
include_directories(/usr/include/libxml2)
-include_directories(/usr/lib/oracle/12.1/client64/include)
+include_directories(/usr/include/oracle/19.6/client64)
# <source>
SUBDIRLIST(SUBDIRS ${CMAKE_CURRENT_SOURCE_DIR}/source)
FOREACH(subdir ${SUBDIRS})
message(STATUS "Processing library at: source/${subdir}")
file(GLOB_RECURSE SRCS source/${subdir}/*.cpp)
- add_library(${subdir}_static STATIC ${SRCS})
- add_library(${subdir}_shared SHARED ${SRCS})
+ add_library(anna_${subdir}_static STATIC ${SRCS})
+ add_library(anna_${subdir}_shared SHARED ${SRCS})
ENDFOREACH()
# <dynamic>
message(STATUS "Processing dynamic library at: dynamic/launcher/${rel}")
file(GLOB_RECURSE SRCS dynamic/launcher/${rel}/*.cpp)
- add_library(launcher_procedure_${libpath}_shared SHARED ${SRCS})
- set(target_dirname build/${CMAKE_BUILD_TYPE}/lib/dynamic_launcher/${libpath})
- set(target_basename launcher_procedure_${libpath}_shared)
+ add_library(anna_launcher_procedure_${libpath}_shared SHARED ${SRCS})
+
+ set(target_dirname ${CMAKE_CURRENT_SOURCE_DIR}/build/${CMAKE_BUILD_TYPE}/lib/dynamic/launcher/${rel})
+
+ set(target_basename anna_launcher_procedure_${libpath}_shared)
set_target_properties(${target_basename} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${target_dirname})
#file(RENAME ${target_dirname}/lib${target_basename}.so ${target_dirname}/libprocedure.so)
ENDFOREACH()
-# Linking example:
-#file(GLOB_RECURSE SRCS ${CMAKE_CURRENT_SOURCE_DIR}/example/core/genLogon/*.cpp)
-#add_executable(genLogon ${SRCS})
-#target_link_libraries(genLogon core_static app_static core_static test_static xml_static io_static crypto xml2 rt)
-
# Generalization:
# <example>
SUBDIRLIST(MODULES ${CMAKE_CURRENT_SOURCE_DIR}/example)
file(GLOB_RECURSE SRCS ${CMAKE_CURRENT_SOURCE_DIR}/example/${module}/${subdir}/*.cpp)
# Executable
- set(target "${module}_${subdir}")
- add_executable(${target} "${SRCS}")
+ set(target "anna_${module}_${subdir}")
+ add_executable(${target} ${SRCS})
set_target_properties(${target} PROPERTIES LINKER_LANGUAGE CXX)
set(libraries_file "${CMAKE_CURRENT_SOURCE_DIR}/example/${module}/${subdir}/libraries.txt")
set(includes_file "${CMAKE_CURRENT_SOURCE_DIR}/example/${module}/${subdir}/includes.txt")
# <test>
-enable_testing()
-find_package(GTest REQUIRED)
-include_directories(${GTEST_INCLUDE_DIRS})
+find_package(GTest)
+IF(GTest_FOUND)
-SUBDIRLIST(MODULES ${CMAKE_CURRENT_SOURCE_DIR}/test)
-FOREACH(module ${MODULES})
+ enable_testing()
+ include_directories(${GTEST_INCLUDE_DIRS})
+
+ SUBDIRLIST(MODULES ${CMAKE_CURRENT_SOURCE_DIR}/test)
+ FOREACH(module ${MODULES})
- message(STATUS "Processing basic test at: test/${module}")
+ message(STATUS "Processing basic test at: test/${module}")
- # Sources
- file(GLOB_RECURSE SRCS ${CMAKE_CURRENT_SOURCE_DIR}/test/${module}/*.cpp)
+ # Sources
+ file(GLOB_RECURSE SRCS ${CMAKE_CURRENT_SOURCE_DIR}/test/${module}/*.cpp)
- # Executable
- set(target "test_${module}")
- add_executable(${target} "${SRCS}")
- target_link_libraries(${target} ${GTEST_BOTH_LIBRARIES} pthread)
- set(libraries_file "${CMAKE_CURRENT_SOURCE_DIR}/test/${module}/libraries.txt")
+ # Executable
+ set(target "anna_test_${module}")
+ add_executable(${target} ${SRCS})
+ target_link_libraries(${target} ${GTEST_BOTH_LIBRARIES} pthread)
+ set(libraries_file "${CMAKE_CURRENT_SOURCE_DIR}/test/${module}/libraries.txt")
- if(EXISTS "${libraries_file}")
- file (STRINGS "${libraries_file}" LIBS)
- #message(STATUS "Libraries: ${LIBS}")
- target_link_libraries(${target} ${GTEST_BOTH_LIBRARIES} pthread ${LIBS})
- endif()
+ if(EXISTS "${libraries_file}")
+ file (STRINGS "${libraries_file}" LIBS)
+ #message(STATUS "Libraries: ${LIBS}")
+ target_link_libraries(${target} ${GTEST_BOTH_LIBRARIES} pthread ${LIBS})
+ endif()
- add_test(${target} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${target})
+ add_test(${target} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${target})
-ENDFOREACH()
+ ENDFOREACH()
+ENDIF(GTest_FOUND)
# Install
+SET(MY_OWN_INSTALL_PREFIX "/opt/anna" CACHE PATH "Prefix prepended to install directories")
+SET(CMAKE_INSTALL_PREFIX "${MY_OWN_INSTALL_PREFIX}" CACHE INTERNAL "Prefix prepended to install directories" FORCE)
+
message(STATUS "CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX}")
# Binaries:
file(GLOB_RECURSE BINARIES ${CMAKE_CURRENT_SOURCE_DIR}/build/${CMAKE_BUILD_TYPE}/bin/*)
install(PROGRAMS ${BINARIES} DESTINATION bin)
# Headers:
-install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/anna/ DESTINATION include)
+install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/anna DESTINATION include)
# Libraries:
file(GLOB_RECURSE LIBRARIES ${CMAKE_CURRENT_SOURCE_DIR}/build/${CMAKE_BUILD_TYPE}/lib/*)
install(FILES ${LIBRARIES} DESTINATION lib)
# Add target for API documentation with Doxygen
find_package(Doxygen)
-if(DOXYGEN_FOUND)
-add_custom_target(doc
- ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/docs/doxygen/Doxyfile
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/docs/doxygen
- COMMENT "Generating API documentation with Doxygen" VERBATIM
-)
-endif(DOXYGEN_FOUND)
+IF(Doxygen_FOUND)
+ add_custom_target(doc
+ ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/docs/doxygen/Doxyfile
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/docs/doxygen
+ COMMENT "Generating API documentation with Doxygen" VERBATIM
+ )
+ENDIF(Doxygen_FOUND)