Skip to content

Commit bddd5f0

Browse files
authored
Merge pull request #85 from GregThain/warnings-as-errors-option
Warnings as errors option
2 parents 2f22c4f + 217a819 commit bddd5f0

File tree

2 files changed

+32
-26
lines changed

2 files changed

+32
-26
lines changed

CMakeLists.txt

+31-25
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,25 @@
11

2-
cmake_minimum_required( VERSION 2.6 )
3-
project( scitokens-cpp )
2+
cmake_minimum_required( VERSION 3.10)
43

5-
option( BUILD_UNITTESTS "Build the scitokens-cpp unit tests" OFF )
6-
option( EXTERNAL_GTEST "Use an external/pre-installed copy of GTest" OFF )
4+
project( scitokens-cpp
5+
DESCRIPTION "A C++ Library to interface to scitokens"
6+
VERSION 0.7.0
7+
LANGUAGES CXX)
78

8-
set( CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake )
9+
option( SCITOKENS_BUILD_UNITTESTS "Build the scitokens-cpp unit tests" OFF )
10+
option( SCITOKENS_EXTERNAL_GTEST "Use an external/pre-installed copy of GTest" OFF )
11+
option( SCTOKENS_WARNINGS_ARE_ERRORS "Turn compiler warnings into build errors" OFF)
12+
13+
set( CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake;${CMAKE_MODULE_PATH}" )
14+
15+
set( CMAKE_BUILD_TYPE RelWithDebInfo) # -g -O2
916

1017
include(GNUInstallDirs)
1118

1219
find_package( jwt-cpp REQUIRED )
1320
find_package( CURL REQUIRED )
1421
find_package( UUID REQUIRED )
1522

16-
if( CMAKE_COMPILER_IS_GNUCXX )
17-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror" )
18-
endif()
19-
20-
if( CMAKE_COMPILER_IS_GNUCC )
21-
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror" )
22-
endif()
23-
24-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
25-
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g")
26-
27-
2823
if( APPLE )
2924

3025
find_package( OpenSSL REQUIRED )
@@ -40,34 +35,45 @@ pkg_check_modules(LIBCRYPTO REQUIRED libcrypto)
4035
pkg_check_modules(OPENSSL REQUIRED openssl)
4136
pkg_check_modules(SQLITE REQUIRED sqlite3)
4237

43-
# pkg_check_modules fails to return an absolute path on RHEL7. Set the
44-
# link directories accordingly.
45-
link_directories(${OPENSSL_LIBRARY_DIRS} ${LIBCRYPTO_LIBRARY_DIRS})
4638
endif()
4739

48-
include_directories( "${PROJECT_SOURCE_DIR}" ${JWT_CPP_INCLUDES} ${CURL_INCLUDES} ${OPENSSL_INCLUDE_DIRS} ${LIBCRYPTO_INCLUDE_DIRS} ${SQLITE_INCLUDE_DIRS} ${UUID_INCLUDE_DIRS} )
49-
5040
add_library(SciTokens SHARED src/scitokens.cpp src/scitokens_internal.cpp src/scitokens_cache.cpp)
51-
target_link_libraries(SciTokens ${OPENSSL_LIBRARIES} ${LIBCRYPTO_LIBRARIES} ${CURL_LIBRARIES} ${SQLITE_LIBRARIES} ${UUID_LIBRARIES})
41+
target_compile_features(SciTokens PUBLIC cxx_std_11) # Use at least C++11 for building and when linking to scitokens
42+
target_compile_options(SciTokens PRIVATE $<$<CXX_COMPILER_ID:GNU>:-Wall $<$<BOOL:${SCITOKENS_WARNINGS_ARE_ERRORS}>:-Werror>>)
43+
target_include_directories(SciTokens PUBLIC ${JWT_CPP_INCLUDES} "${PROJECT_SOURCE_DIR}/src" PRIVATE ${CURL_INCLUDES} ${OPENSSL_INCLUDE_DIRS} ${LIBCRYPTO_INCLUDE_DIRS} ${SQLITE_INCLUDE_DIRS} ${UUID_INCLUDE_DIRS})
44+
45+
target_link_libraries(SciTokens PUBLIC ${OPENSSL_LIBRARIES} ${LIBCRYPTO_LIBRARIES} ${CURL_LIBRARIES} ${SQLITE_LIBRARIES} ${UUID_LIBRARIES})
46+
if (UNIX)
47+
# pkg_check_modules fails to return an absolute path on RHEL7. Set the
48+
# link directories accordingly.
49+
target_link_directories(SciTokens PUBLIC ${OPENSSL_LIBRARY_DIRS} ${LIBCRYPTO_LIBRARY_DIRS})
50+
endif()
5251

5352
if ( NOT APPLE AND UNIX )
5453
set_target_properties(SciTokens PROPERTIES LINK_FLAGS "-Wl,--version-script=${PROJECT_SOURCE_DIR}/configs/export-symbols")
5554
endif()
5655

5756
add_executable(scitokens-test src/test.cpp)
57+
#target_include_directories(scitokens-test PRIVATE "${PROJECT_SOURCE_DIR}" ${JWT_CPP_INCLUDES} ${CURL_INCLUDES} ${OPENSSL_INCLUDE_DIRS} ${LIBCRYPTO_INCLUDE_DIRS} ${SQLITE_INCLUDE_DIRS} ${UUID_INCLUDE_DIRS})
58+
target_include_directories(scitokens-test PRIVATE "${PROJECT_SOURCE_DIR}" ${JWT_CPP_INCLUDES})
5859
target_link_libraries(scitokens-test SciTokens)
60+
target_compile_options(scitokens-test PRIVATE $<$<CXX_COMPILER_ID:GNU>:-Wall $<$<BOOL:${SCITOKENS_WARNINGS_ARE_ERRORS}>:-Werror>>)
5961

6062
add_executable(scitokens-verify src/verify.cpp)
6163
target_link_libraries(scitokens-verify SciTokens)
64+
target_compile_options(scitokens-verify PRIVATE $<$<CXX_COMPILER_ID:GNU>:-Wall $<$<BOOL:${SCITOKENS_WARNINGS_ARE_ERRORS}>:-Werror>>)
6265

6366
add_executable(scitokens-test-access src/test_access.cpp)
6467
target_link_libraries(scitokens-test-access SciTokens)
68+
target_compile_options(scitokens-test-access PRIVATE $<$<CXX_COMPILER_ID:GNU>:-Wall $<$<BOOL:${SCITOKENS_WARNINGS_ARE_ERRORS}>:-Werror>>)
6569

6670
add_executable(scitokens-list-access src/list_access.cpp)
6771
target_link_libraries(scitokens-list-access SciTokens)
72+
target_compile_options(scitokens-list-access PRIVATE $<$<CXX_COMPILER_ID:GNU>:-Wall $<$<BOOL:${SCITOKENS_WARNINGS_ARE_ERRORS}>:-Werror>>)
6873

6974
add_executable(scitokens-create src/create.cpp)
7075
target_link_libraries(scitokens-create SciTokens)
76+
target_compile_options(scitokens-create PRIVATE $<$<CXX_COMPILER_ID:GNU>:-Wall $<$<BOOL:${SCITOKENS_WARNINGS_ARE_ERRORS}>:-Werror>>)
7177

7278
get_directory_property(TARGETS BUILDSYSTEM_TARGETS)
7379
install(
@@ -86,8 +92,8 @@ set_target_properties(
8692
SOVERSION "0"
8793
)
8894

89-
if( BUILD_UNITTESTS )
90-
if( NOT EXTERNAL_GTEST )
95+
if( SCITOKENS_BUILD_UNITTESTS )
96+
if( NOT SCITOKENS_EXTERNAL_GTEST )
9197
include(ExternalProject)
9298
ExternalProject_Add(gtest
9399
PREFIX external/gtest

test/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ add_executable(scitokens-gtest main.cpp)
33
add_dependencies(scitokens-gtest gtest)
44
include_directories("${PROJECT_SOURCE_DIR}/vendor/gtest/googletest/include")
55

6-
if(EXTERNAL_GTEST)
6+
if(SCITOKENS_EXTERNAL_GTEST)
77
set(LIBGTEST "gtest")
88
else()
99
set(LIBGTEST "${CMAKE_BINARY_DIR}/external/gtest/src/gtest-build/lib/libgtest.a")

0 commit comments

Comments
 (0)