CMakeLists.txt 2.72 KB
Newer Older
1 2 3 4 5 6 7 8 9
project (project_embb_base_cpp)

## CODE FILE DETECTION
#
# Fetch all header and source files for C, C++, and test build separately
file(GLOB_RECURSE EMBB_BASE_CPP_SOURCES "src/*.cc" "src/*.h")
file(GLOB_RECURSE EMBB_BASE_CPP_HEADERS "include/embb/*.h")
if (BUILD_TESTS STREQUAL ON)
  file(GLOB_RECURSE EMBB_BASE_TEST_SOURCES "test/*.cc" "test/*.h")
10 11
  file(GLOB_RECURSE EMBB_BASE_PERF_SOURCES "perf/src/*.cc" "perf/src/*.h")
  file(GLOB_RECURSE EMBB_BASE_PERF_HEADERS "perf/include/*.h")
12 13 14 15 16 17 18
endif()

# Create header file from input file
configure_file("include/embb/base/internal/cmake_config.h.in" 
               "include/embb/base/internal/cmake_config.h")

# Execute the GroupSources macro
19
include(${CMAKE_SOURCE_DIR}/CMakeCommon/GroupSourcesMSVC.cmake)
20 21 22 23
GroupSourcesMSVC(include/embb/base)
GroupSourcesMSVC(src)
if (BUILD_TESTS STREQUAL ON)
  GroupSourcesMSVC(test)
24
  GroupSourcesMSVC(perf/include/embb/perf)
25 26 27 28 29 30 31 32 33 34 35 36 37
endif()

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include
                    ${CMAKE_CURRENT_BINARY_DIR}/include
                    ${CMAKE_CURRENT_SOURCE_DIR}/../base_c/include
                    ${CMAKE_CURRENT_BINARY_DIR}/../base_c/include
                    )

## BUILD TARGETS
#
add_library (embb_base_cpp ${EMBB_BASE_CPP_SOURCES} ${EMBB_BASE_CPP_HEADERS})
target_link_libraries(embb_base_cpp embb_base_c)
if (BUILD_TESTS STREQUAL ON)
38
  # Unit tests
39 40 41
  include_directories(test/
                      ${CMAKE_CURRENT_BINARY_DIR}/../partest/include
                      )
42 43
  add_executable (embb_base_cpp_test
                  ${EMBB_BASE_TEST_SOURCES})
44 45 46
  target_link_libraries(embb_base_cpp_test partest embb_base_cpp embb_base_c
                        ${compiler_libs})
  CopyBin(BIN embb_base_cpp_test DEST ${local_install_dir})
47 48 49 50

  # Performance tests
  include_directories(perf/include
                      ${CMAKE_CURRENT_BINARY_DIR}/../partest/include
51 52
					  ${CMAKE_CURRENT_SOURCE_DIR}/../tasks_cpp/include
                      ${CMAKE_CURRENT_BINARY_DIR}/../tasks_cpp/include
53
                      )
54 55 56 57 58
  add_library (embb_base_cpp_perf
               ${EMBB_BASE_PERF_HEADERS}
               ${EMBB_BASE_PERF_SOURCES})
  target_link_libraries(embb_base_cpp_perf
                        partest embb_tasks_cpp embb_base_cpp embb_base_c 
59 60 61 62
                        ${compiler_libs})
  install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/perf/include/embb
          DESTINATION include FILES_MATCHING PATTERN "*.h")
  install(TARGETS embb_base_cpp_perf DESTINATION lib)
63 64 65 66 67 68 69
endif()

install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/embb
        DESTINATION include FILES_MATCHING PATTERN "*.h")
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/embb
        DESTINATION include FILES_MATCHING PATTERN "*.h")
install(TARGETS embb_base_cpp DESTINATION lib)