Skip to content

Commit

Permalink
Merge pull request #128 from SGSSGene/fix/cmake
Browse files Browse the repository at this point in the history
Fix/cmake
  • Loading branch information
eseiler authored Jul 23, 2024
2 parents 40eb5c7 + 5a6719e commit 010e1fe
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 13 deletions.
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

0 comments on commit 010e1fe

Please sign in to comment.