Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix/cmake #128

Merged
merged 4 commits into from
Jul 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 34 additions & 9 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,14 @@ set (CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules")
## (1) Read and set library version
include (ParseVersionFile)

# check if this is the main iproject
# This can be removed if cmake 3.21 is used
# https://cmake.org/cmake/help/latest/variable/PROJECT_IS_TOP_LEVEL.html
set(PROJECT_IS_TOP_LEVEL FALSE)
if (NOT DEFINED PROJECT_NAME)
set(PROJECT_IS_TOP_LEVEL TRUE)
endif ()

## (2) CREATE PROJECT
cmake_policy (SET CMP0048 NEW) # no more project version warnings
project (sdsl
Expand All @@ -18,37 +26,54 @@ if (NOT CMAKE_BUILD_TYPE)
endif ()

## (5) Options
option (CODE_COVERAGE "Set ON to add code coverage compile options" OFF)
option (SDSL_CODE_COVERAGE "Set ON to add code coverage compile options" OFF)
option (SDSL_HEADER_TEST "Set ON to run header tests only" OFF)
option (GENERATE_DOC "Set ON to genrate doxygen API reference in build/doc directory" OFF)
option (USE_LIBCPP "Use the LLVM libc++ instead of GCC libstdc++ on OS X" ON)
option (SDSL_BUILD_TESTS "Set ON to build tests" ${PROJECT_IS_TOP_LEVEL})
option (SDSL_BUILD_TUTORIAL "Set ON to build tutorials" ${PROJECT_IS_TOP_LEVEL})
option (SDSL_BUILD_EXAMPLES "Set ON to build examples" ${PROJECT_IS_TOP_LEVEL})
option (SDSL_GENERATE_DOC "Set ON to genrate doxygen API reference in build/doc directory" OFF)
option (SDSL_USE_LIBCPP "Use the LLVM libc++ instead of GCC libstdc++ on OS X" ON)

## (6) Compiler requirements and compile options
include (CompilerFlags)

## (7) Configure scripts
configure_file ("${CMAKE_CURRENT_SOURCE_DIR}/Make.helper.cmake" "${CMAKE_CURRENT_SOURCE_DIR}/Make.helper" @ONLY)

enable_testing ()

# (8) main library target
set (gtest_dir ${CMAKE_CURRENT_LIST_DIR}/external/googletest)
if (SDSL_BUILD_TESTS)
enable_testing ()

# (8) main library target
set (gtest_dir ${CMAKE_CURRENT_LIST_DIR}/external/googletest)
endif()

add_subdirectory (external)
add_subdirectory (lib)

set (sdsl_include_directory "${CMAKE_CURRENT_SOURCE_DIR}/include")
file (GLOB HEADERS "${sdsl_include_directory}/sdsl/*.hpp")
add_custom_target (sdsl SOURCES ${HEADERS})

add_library(sdsl-lite INTERFACE)
target_include_directories(sdsl-lite INTERFACE SYSTEM ${sdsl_include_directory})
add_library(sdsl-lite::sdsl-lite ALIAS sdsl-lite)

# (9) test targets
if (SDSL_HEADER_TEST)
add_subdirectory (test/header)
return ()
endif ()
add_subdirectory (test)
if (SDSL_BUILD_TESTS)
add_subdirectory (test)
endif()

# (10) perform extra tasks such as doxygen / packaging and uninstall target
add_subdirectory (extras)

add_subdirectory (tutorial)
add_subdirectory (examples)
if (SDSL_BUILD_TUTORIAL)
add_subdirectory (tutorial)
endif()
if (SDSL_BUILD_EXAMPLES)
add_subdirectory (examples)
endif()
4 changes: 2 additions & 2 deletions CMakeModules/CompilerFlags.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,12 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
add_definitions ("/DMSVC_COMPILER")
endif ()

if (CODE_COVERAGE)
if (SDSL_CODE_COVERAGE)
checkandappendcompilerflags ("Debug" "-g -fprofile-arcs -ftest-coverage -lgcov")
endif ()

if (APPLE)
if (USE_LIBCPP AND ("${CMAKE_CXX_COMPILER_ID}" MATCHES "^(Apple)?Clang$"))
if (SDSL_USE_LIBCPP AND ("${CMAKE_CXX_COMPILER_ID}" MATCHES "^(Apple)?Clang$"))
checkandappendcompilerflags (${CMAKE_BUILD_TYPE} "-stdlib=libc++")
endif ()
endif ()
4 changes: 2 additions & 2 deletions extras/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
include (Colors)

# (1) generate docs
if (GENERATE_DOC)
if (SDSL_GENERATE_DOC)
find_package (Doxygen)
if (DOXYGEN_FOUND)
configure_file (${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
Expand All @@ -11,7 +11,7 @@ if (GENERATE_DOC)
COMMENT "Generating API documentation with Doxygen"
VERBATIM)
endif (DOXYGEN_FOUND)
endif (GENERATE_DOC)
endif (SDSL_GENERATE_DOC)

## (2) Add 'uninstall' target ##
configure_file ("${CMAKE_CURRENT_SOURCE_DIR}/../CMakeModules/cmake_uninstall.cmake.in"
Expand Down
Loading