Skip to content

Commit 43ecea1

Browse files
committed
Add a summary of the configuration to the CMake build.
* CMakeLists.txt: Define our own variables for install locations. Print a summary of the version, build targets, options and install locations. * build/SerfPlatform.cmake: Define SERF_PLATFORM and SERF_TARGET. git-svn-id: https://svn.apache.org/repos/asf/serf/trunk@1925981 13f79535-47bb-0310-9956-ffa450edef68
1 parent 41313eb commit 43ecea1

File tree

2 files changed

+88
-19
lines changed

2 files changed

+88
-19
lines changed

CMakeLists.txt

Lines changed: 69 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,17 @@ if(USE_HOMEBREW OR USE_MACPORTS)
108108
endif(SERF_DARWIN)
109109
endif(USE_HOMEBREW OR USE_MACPORTS)
110110

111+
# Install directories
112+
if(NOT SERF_WINDOWS)
113+
set(SERF_INCLUDE_SUBDIR "serf-${SERF_MAJOR_VERSION}")
114+
set(SERF_INSTALL_HEADERS "${CMAKE_INSTALL_INCLUDEDIR}/${SERF_INCLUDE_SUBDIR}")
115+
else()
116+
set(SERF_INSTALL_HEADERS "${CMAKE_INSTALL_INCLUDEDIR}")
117+
endif()
118+
set(SERF_INSTALL_LIBRARIES "${CMAKE_INSTALL_LIBDIR}")
119+
set(SERF_INSTALL_RUNTIME "${CMAKE_INSTALL_BINDIR}")
120+
set(SERF_INSTALL_PKGCONFIG "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
121+
111122
# Public headers
112123
list(APPEND HEADERS
113124
"serf.h"
@@ -204,7 +215,6 @@ if(SERF_WINDOWS)
204215
add_definitions("-DSERF_HAVE_SSPI")
205216
endif(SERF_WINDOWS)
206217

207-
208218
# Process build options for dependency search
209219
if(SERF_WINDOWS)
210220
if(EXPAT)
@@ -326,8 +336,8 @@ else()
326336
add_definitions("/DWIN64")
327337
endif()
328338

329-
set(CMAKE_IMPORT_LIBRARY_PREFIX "${CMAKE_INSTALL_LIBDIR}")
330-
set(CMAKE_SHARED_LIBRARY_PREFIX "${CMAKE_INSTALL_LIBDIR}")
339+
set(CMAKE_IMPORT_LIBRARY_PREFIX "${SERF_INSTALL_LIBRARIES}")
340+
set(CMAKE_SHARED_LIBRARY_PREFIX "${SERF_INSTALL_LIBRARIES}")
331341
endif(NOT MSVC)
332342

333343
# Define all targets
@@ -344,15 +354,15 @@ if(NOT SKIP_SHARED)
344354
SOVERSION ${SERF_SOVERSION})
345355
if(SERF_DARWIN AND NOT RELATIVE_RPATH)
346356
set_target_properties(serf_shared PROPERTIES
347-
INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
357+
INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/${SERF_INSTALL_LIBRARIES}")
348358
endif()
349359
set(SERF_TARGETS "serf_shared")
350360

351361
if(SERF_WINDOWS)
352362
string(TOLOWER "${CMAKE_BUILD_TYPE}" config)
353363
if(NOT "${config}" STREQUAL "release")
354364
install(FILES $<TARGET_PDB_FILE:serf_shared>
355-
DESTINATION "${CMAKE_INSTALL_BINDIR}")
365+
DESTINATION "${SERF_INSTALL_RUNTIME}")
356366
endif()
357367
endif()
358368
endif()
@@ -372,16 +382,13 @@ set_target_properties(${SERF_TARGETS}
372382
PROPERTIES
373383
OUTPUT_NAME "serf-${SERF_MAJOR_VERSION}")
374384

385+
# Install targets
375386
install(TARGETS ${SERF_TARGETS}
376-
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
377-
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
378-
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
387+
ARCHIVE DESTINATION "${SERF_INSTALL_LIBS}"
388+
LIBRARY DESTINATION "${SERF_INSTALL_LIBS}"
389+
RUNTIME DESTINATION "${SERF_INSTALL_RUNTIME}")
379390

380-
if(NOT SERF_WINDOWS)
381-
set(SERF_INCLUDE_SUBDIR "serf-${SERF_MAJOR_VERSION}")
382-
endif()
383-
install(FILES ${HEADERS}
384-
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${SERF_INCLUDE_SUBDIR}")
391+
install(FILES ${HEADERS} DESTINATION "${SERF_INSTALL_HEADERS}")
385392

386393
# Generate the pkg-config module file.
387394
if(NOT SERF_WINDOWS)
@@ -411,7 +418,7 @@ if(NOT SERF_WINDOWS)
411418

412419
make_pkgconfig()
413420
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/serf-${SERF_MAJOR_VERSION}.pc"
414-
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
421+
DESTINATION "${SERF_INSTALL_PKGCONFIG}")
415422
endif()
416423

417424

@@ -425,3 +432,51 @@ if(NOT SKIP_TESTS)
425432
add_subdirectory(test)
426433
endif()
427434
endif()
435+
436+
437+
# Summary
438+
macro(_onoff _var _value _negate)
439+
if(${_negate})
440+
if(NOT ${_value})
441+
set(${_var} ON)
442+
else()
443+
set(${_var} OFF)
444+
endif()
445+
else()
446+
if(${_value})
447+
set(${_var} ON)
448+
else()
449+
set(${_var} OFF)
450+
endif()
451+
endif()
452+
endmacro(_onoff)
453+
_onoff(_build_shared SKIP_SHARED TRUE)
454+
_onoff(_build_static SKIP_STATIC TRUE)
455+
_onoff(_build_tests SKIP_TESTS TRUE)
456+
_onoff(_have_brotli BROTLI_FOUND FALSE)
457+
_onoff(_have_gssapi GSSAPI_FOUND FALSE)
458+
_onoff(_have_sspi SERF_WINDOWS FALSE)
459+
460+
message(STATUS "Summary:")
461+
message(STATUS " Version ................... : ${SERF_VERSION}")
462+
message(STATUS " Build:")
463+
message(STATUS " platform: ............... : ${SERF_PLATFORM}")
464+
message(STATUS " target: ................. : ${SERF_TARGET}")
465+
message(STATUS " generator: .............. : ${CMAKE_GENERATOR}")
466+
message(STATUS " build type .............. : ${CMAKE_BUILD_TYPE}")
467+
message(STATUS " shared libraries .... ... : ${_build_shared}")
468+
message(STATUS " static libraries ........ : ${_build_static}")
469+
message(STATUS " tests ................... : ${_build_tests}")
470+
message(STATUS " Options:")
471+
message(STATUS " Brotli .................. : ${_have_brotli}")
472+
message(STATUS " GSSAPI .................. : ${_have_gssapi}")
473+
message(STATUS " SSPI .................... : ${_have_sspi}")
474+
message(STATUS " Install:")
475+
message(STATUS " prefix: ................. : ${CMAKE_INSTALL_PREFIX}")
476+
message(STATUS " headers: ................ : ${SERF_INSTALL_HEADERS}")
477+
message(STATUS " libraries: .............. : ${SERF_INSTALL_LIBRARIES}")
478+
if(SERF_WINDOWS)
479+
message(STATUS " dynamic libraries: ...... : ${SERF_INSTALL_RUNTIME}")
480+
else()
481+
message(STATUS " pkg-config file: ........ : ${SERF_INSTALL_PKGCONFIG}")
482+
endif()

build/SerfPlatform.cmake

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,34 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
2222
if(NOT RELATIVE_RPATH)
2323
set(CMAKE_MACOSX_RPATH FALSE)
2424
endif()
25-
message(STATUS "Target platform is Darwin (macOS)")
25+
if(APPLE)
26+
set(SERF_PLATFORM "Darwin (macOS)")
27+
else()
28+
set(SERF_PLATFORM "Darwin")
29+
endif()
2630
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
2731
set(SERF_LINUX TRUE)
28-
message(STATUS "Target platform is Linux")
32+
set(SERF_PLATFORM "Linux")
2933
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
3034
set(SERF_WINDOWS TRUE)
3135
if(CMAKE_GENERATOR_PLATFORM MATCHES "(x64|ARM64|IA64)")
3236
set(SERF_WIN64 TRUE)
33-
message(STATUS "Target platform is Windows (64-bit/${CMAKE_GENERATOR_PLATFORM})")
37+
set(SERF_PLATFORM "Windows (64-bit)")
3438
else()
3539
set(SERF_WIN32 TRUE)
36-
message(STATUS "Target platform is Windows (32-bit/${CMAKE_GENERATOR_PLATFORM})")
40+
set(SERF_PLATFORM "Windows (32-bit)")
3741
endif()
3842
else()
3943
set(SERF_UNIX TRUE)
40-
message(STATUS "Assuming generic Unix target platform")
44+
set(SERF_PLATFORM "generic Unix")
4145
endif()
46+
47+
if(CMAKE_GENERATOR_PLATFORM)
48+
set(SERF_PLATFORM "${SERF_PLATFORM} [${CMAKE_GENERATOR_PLATFORM}]")
49+
endif()
50+
message(STATUS "Target platform is ${SERF_PLATFORM}")
51+
52+
string(TOLOWER ${CMAKE_SYSTEM_PROCESSOR} _arch)
53+
string(TOLOWER ${CMAKE_SYSTEM_NAME} _system)
54+
string(TOLOWER ${CMAKE_SYSTEM_VERSION} _version)
55+
set(SERF_TARGET "${_arch}-${_system}${_version}")

0 commit comments

Comments
 (0)