github.com/igggame/nebulas-go@v2.1.0+incompatible/nbre/3rd_party/build_option_bak/CMakeLists.txt-glog (about) 1 cmake_minimum_required (VERSION 3.0) 2 3 if (POLICY CMP0042) 4 cmake_policy (SET CMP0042 NEW) 5 endif (POLICY CMP0042) 6 7 if (POLICY CMP0063) 8 cmake_policy (SET CMP0063 NEW) 9 endif (POLICY CMP0063) 10 11 project(glog VERSION 0.3.5 LANGUAGES C CXX) 12 include_directories(${PROJECT_SOURCE_DIR}/../../lib/include/) 13 link_directories (${PROJECT_SOURCE_DIR}/../../lib/lib/) 14 15 set (CPACK_PACKAGE_NAME glog) 16 set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "") 17 set (CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) 18 set (CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR}) 19 set (CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH}) 20 set (CPACK_PACKAGE_VERSION ${PROJECT_VERSION}) 21 22 option (WITH_GFLAGS "Use gflags" ON) 23 option (WITH_THREADS "Enable multithreading support" ON) 24 option (WITH_TLS "Enable Thread Local Storage (TLS) support" ON) 25 option (BUILD_SHARED_LIBS "Build shared libraries" OFF) 26 option (PRINT_UNSYMBOLIZED_STACK_TRACES 27 "Print raw pc values on symbolization failure" OFF) 28 29 list (APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) 30 31 include (CheckCSourceCompiles) 32 include (CheckCXXCompilerFlag) 33 include (CheckCXXSourceCompiles) 34 include (CheckCXXSourceRuns) 35 include (CheckFunctionExists) 36 include (CheckIncludeFile) 37 include (CheckIncludeFileCXX) 38 include (CheckLibraryExists) 39 include (CheckStructHasMember) 40 include (CheckSymbolExists) 41 include (CheckTypeSize) 42 include (CMakePackageConfigHelpers) 43 include (CMakePushCheckState) 44 include (CPack) 45 include (CTest) 46 include (DetermineGflagsNamespace) 47 include (GNUInstallDirs) 48 49 set (CMAKE_DEBUG_POSTFIX d) 50 set (CMAKE_THREAD_PREFER_PTHREAD 1) 51 52 if (WITH_GFLAGS) 53 find_package (gflags 2.2.0) 54 55 if (gflags_FOUND) 56 set (HAVE_LIB_GFLAGS 1) 57 determine_gflags_namespace (gflags_NAMESPACE) 58 endif (gflags_FOUND) 59 endif (WITH_GFLAGS) 60 61 if (WITH_THREADS) 62 find_package (Threads) 63 endif (WITH_THREADS) 64 65 check_include_file (dlfcn.h HAVE_DLFCN_H) 66 check_include_file (execinfo.h HAVE_EXECINFO_H) 67 check_include_file (glob.h HAVE_GLOB_H) 68 check_include_file (inttypes.h HAVE_INTTYPES_H) 69 check_include_file (libunwind.h HAVE_LIBUNWIND_H) 70 check_include_file (memory.h HAVE_MEMORY_H) 71 check_include_file (pwd.h HAVE_PWD_H) 72 check_include_file (stdint.h HAVE_STDINT_H) 73 check_include_file (stdlib.h HAVE_STDLIB_H) 74 check_include_file (string.h HAVE_STRING_H) 75 check_include_file (strings.h HAVE_STRINGS_H) 76 check_include_file (sys/stat.h HAVE_SYS_STAT_H) 77 check_include_file (sys/syscall.h HAVE_SYS_SYSCALL_H) 78 check_include_file (sys/time.h HAVE_SYS_TIME_H) 79 check_include_file (sys/types.h HAVE_SYS_TYPES_H) 80 check_include_file (sys/utsname.h HAVE_SYS_UTSNAME_H) 81 check_include_file (syscall.h HAVE_SYSCALL_H) 82 check_include_file (syslog.h HAVE_SYSLOG_H) 83 check_include_file (ucontext.h HAVE_UCONTEXT_H) 84 check_include_file (unistd.h HAVE_UNISTD_H) 85 check_include_file (unwind.h HAVE_UNWIND_H) 86 check_include_file (pwd.h HAVE_PWD_H) 87 88 check_include_file_cxx ("ext/hash_map" HAVE_EXT_HASH_MAP) 89 check_include_file_cxx ("ext/hash_set" HAVE_EXT_HASH_SET) 90 check_include_file_cxx ("ext/slist" HAVE_EXT_SLIST) 91 check_include_file_cxx ("tr1/unordered_map" HAVE_TR1_UNORDERED_MAP) 92 check_include_file_cxx ("tr1/unordered_set" HAVE_TR1_UNORDERED_SET) 93 check_include_file_cxx ("unordered_map" HAVE_UNORDERED_MAP) 94 check_include_file_cxx ("unordered_set" HAVE_UNORDERED_SET) 95 96 check_type_size ("unsigned __int16" HAVE___UINT16) 97 check_type_size (u_int16_t HAVE_U_INT16_T) 98 check_type_size (uint16_t HAVE_UINT16_T) 99 100 check_function_exists (dladdr HAVE_DLADDR) 101 check_function_exists (fcntl HAVE_FCNTL) 102 check_function_exists (pread HAVE_PREAD) 103 check_function_exists (pwrite HAVE_PWRITE) 104 check_function_exists (sigaction HAVE_SIGACTION) 105 check_function_exists (sigaltstack HAVE_SIGALSTACK) 106 107 # NOTE gcc does not fail if you pass a non-existent -Wno-* option as an 108 # argument. However, it will happily fail if you pass the corresponding -W* 109 # option. So, we check whether options that disable warnings exist by testing 110 # the availability of the corresponding option that enables the warning. This 111 # eliminates the need to check for compiler for several (mainly Clang) options. 112 113 check_cxx_compiler_flag (-Wdeprecated HAVE_NO_DEPRECATED) 114 check_cxx_compiler_flag (-Wunnamed-type-template-args 115 HAVE_NO_UNNAMED_TYPE_TEMPLATE_ARGS) 116 117 # NOTE: Cannot use check_function_exists here since >=vc-14.0 can define 118 # snprintf as an inline function 119 check_symbol_exists (snprintf stdio.h HAVE_SNPRINTF) 120 121 check_library_exists (unwind get_static_proc_name "" HAVE_LIB_UNWIND) 122 check_library_exists (dbghelp UnDecorateSymbolName "" HAVE_DBGHELP) 123 124 find_library (UNWIND_LIBRARY NAMES unwind DOC "unwind library") 125 mark_as_advanced (UNWIND_LIBRARY) 126 127 check_c_source_compiles (" 128 #include <stdlib.h> 129 static void foo(void) __attribute__ ((unused)); 130 int main(void) { return 0; } 131 " HAVE___ATTRIBUTE__) 132 133 check_c_source_compiles (" 134 #include <stdlib.h> 135 static void foo(void) __attribute__ ((visibility(\"default\"))); 136 int main(void) { return 0; } 137 " HAVE___ATTRIBUTE__VISIBILITY_DEFAULT) 138 139 check_c_source_compiles (" 140 #include <stdlib.h> 141 static void foo(void) __attribute__ ((visibility(\"hidden\"))); 142 int main(void) { return 0; } 143 " HAVE___ATTRIBUTE__VISIBILITY_HIDDEN) 144 145 check_c_source_compiles (" 146 int main(void) { if (__builtin_expect(0, 0)) return 1; return 0; } 147 " HAVE___BUILTIN_EXPECT) 148 149 check_c_source_compiles (" 150 int main(void) 151 { 152 int a; if (__sync_val_compare_and_swap(&a, 0, 1)) return 1; return 0; 153 } 154 " HAVE___SYNC_VAL_COMPARE_AND_SWAP) 155 156 check_c_source_compiles (" 157 #define _XOPEN_SOURCE 500 158 #include <pthread.h> 159 int main(void) 160 { 161 pthread_rwlock_t l; 162 pthread_rwlock_init(&l, NULL); 163 pthread_rwlock_rdlock(&l); 164 return 0; 165 } 166 " HAVE_RWLOCK) 167 168 check_c_source_compiles (" 169 __declspec(selectany) int a; 170 int main(void) { return 0; } 171 " HAVE___DECLSPEC) 172 173 check_cxx_source_compiles (" 174 #include <vector> 175 vector<int> t; int main() { } 176 " STL_NO_NAMESPACE) 177 178 check_cxx_source_compiles (" 179 #include <vector> 180 std::vector<int> t; int main() { } 181 " STL_STD_NAMESPACE) 182 183 check_cxx_source_compiles (" 184 #include <iostream> 185 std::ostream& operator<<(std::ostream&, struct s); 186 using ::operator<<; 187 int main() { } 188 " HAVE_USING_OPERATOR) 189 190 check_cxx_source_compiles (" 191 namespace Outer { namespace Inner { int i = 0; }} 192 using namespace Outer::Inner;; 193 int main() { return i; } 194 " HAVE_NAMESPACES) 195 196 check_cxx_source_compiles (" 197 __thread int tls; 198 int main() { } 199 " HAVE_GCC_TLS) 200 201 check_cxx_source_compiles (" 202 __declspec(thread) int tls; 203 int main() { } 204 " HAVE_MSVC_TLS) 205 206 check_cxx_source_compiles (" 207 thread_local int tls; 208 int main() { } 209 " HAVE_CXX11_TLS) 210 211 check_cxx_source_compiles (" 212 #include <type_traits> 213 std::aligned_storage<sizeof(char), alignof(char)>::type data; 214 int main() { } 215 " HAVE_ALIGNED_STORAGE) 216 217 if (WITH_TLS) 218 # Cygwin does not support the thread attribute. Don't bother. 219 if (HAVE_GCC_TLS) 220 set (GLOG_THREAD_LOCAL_STORAGE "__thread") 221 elseif (HAVE_MSVC_TLS) 222 set (GLOG_THREAD_LOCAL_STORAGE "__declspec(thread)") 223 elseif (HAVE_CXX11_TLS) 224 set (GLOG_THREAD_LOCAL_STORAGE thread_local) 225 endif (HAVE_GCC_TLS) 226 endif (WITH_TLS) 227 228 set (_PC_FIELDS 229 "gregs[REG_PC]" 230 "gregs[REG_EIP]" 231 "gregs[REG_RIP]" 232 "sc_ip" 233 "uc_regs->gregs[PT_NIP]" 234 "gregs[R15]" 235 "arm_pc" 236 "mc_eip" 237 "mc_rip" 238 "__gregs[REG_EIP]" 239 "__gregs[REG_RIP]" 240 "ss.eip" 241 "__ss.__eip" 242 "ss.rip" 243 "__ss.__rip" 244 "ss.srr0" 245 "__ss.__srr0" 246 ) 247 248 set (_PC_HEADERS ucontext.h signal.h) 249 250 if (HAVE_UCONTEXT_H AND NOT PC_FROM_UCONTEXT) 251 foreach (_PC_FIELD ${_PC_FIELDS}) 252 foreach (_PC_HEADER ${_PC_HEADERS}) 253 set (_TMP 254 ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/uctfield.c) 255 file (WRITE ${_TMP} " 256 #define _GNU_SOURCE 1 257 #include <${_PC_HEADER}> 258 int main(void) 259 { 260 ucontext_t u; 261 return u.${_PC_FIELD} == 0; 262 } 263 ") 264 try_compile (HAVE_PC_FROM_UCONTEXT ${CMAKE_CURRENT_BINARY_DIR} ${_TMP} 265 COMPILE_DEFINITIONS _GNU_SOURCE=1) 266 267 if (HAVE_PC_FROM_UCONTEXT) 268 set (PC_FROM_UCONTEXT ${_PC_FIELD} CACHE) 269 endif (HAVE_PC_FROM_UCONTEXT) 270 endforeach (_PC_HEADER) 271 endforeach (_PC_FIELD) 272 endif (HAVE_UCONTEXT_H AND NOT PC_FROM_UCONTEXT) 273 274 if (STL_STD_NAMESPACE) 275 set (STL_NAMESPACE std) 276 else (STL_STD_NAMESPACE) 277 set (STL_NAMESPACE "") 278 endif (STL_STD_NAMESPACE) 279 280 set (GOOGLE_NAMESPACE google) 281 set (_START_GOOGLE_NAMESPACE_ "namespace ${GOOGLE_NAMESPACE} {") 282 set (_END_GOOGLE_NAMESPACE_ "}") 283 284 if (HAVE___UINT16) 285 set (ac_cv_have___uint16 1) 286 else (HAVE___UINT16) 287 set (ac_cv_have___uint16 0) 288 endif (HAVE___UINT16) 289 290 if (HAVE_INTTYPES_H) 291 set (ac_cv_have_inttypes_h 1) 292 else (HAVE_INTTYPES_H) 293 set (ac_cv_have_inttypes_h 0) 294 endif (HAVE_INTTYPES_H) 295 296 if (HAVE_LIB_GFLAGS) 297 set (ac_cv_have_libgflags 1) 298 else (HAVE_LIB_GFLAGS) 299 set (ac_cv_have_libgflags 0) 300 endif (HAVE_LIB_GFLAGS) 301 302 if (HAVE_STDINT_H) 303 set (ac_cv_have_stdint_h 1) 304 else (HAVE_STDINT_H) 305 set (ac_cv_have_stdint_h 0) 306 endif (HAVE_STDINT_H) 307 308 if (HAVE_SYS_TYPES_H) 309 set (ac_cv_have_systypes_h 1) 310 else (HAVE_SYS_TYPES_H) 311 set (ac_cv_have_systypes_h 0) 312 endif (HAVE_SYS_TYPES_H) 313 314 if (HAVE_U_INT16_T) 315 set (ac_cv_have_u_int16_t 1) 316 else (HAVE_U_INT16_T) 317 set (ac_cv_have_u_int16_t 0) 318 endif (HAVE_U_INT16_T) 319 320 if (HAVE_UINT16_T) 321 set (ac_cv_have_uint16_t 1) 322 else (HAVE_UINT16_T) 323 set (ac_cv_have_uint16_t 0) 324 endif (HAVE_UINT16_T) 325 326 if (HAVE_UNISTD_H) 327 set (ac_cv_have_unistd_h 1) 328 else (HAVE_UNISTD_H) 329 set (ac_cv_have_unistd_h 0) 330 endif (HAVE_UNISTD_H) 331 332 set (ac_google_namespace ${GOOGLE_NAMESPACE}) 333 set (ac_google_end_namespace ${_END_GOOGLE_NAMESPACE_}) 334 set (ac_google_start_namespace ${_START_GOOGLE_NAMESPACE_}) 335 336 if (HAVE___ATTRIBUTE__) 337 set (ac_cv___attribute___noreturn "__attribute__((noreturn))") 338 set (ac_cv___attribute___noinline "__attribute__((noinline))") 339 elseif (HAVE___DECLSPEC) 340 set (ac_cv___attribute___noreturn "__declspec(noreturn)") 341 #set (ac_cv___attribute___noinline "__declspec(noinline)") 342 endif (HAVE___ATTRIBUTE__) 343 344 if (HAVE___BUILTIN_EXPECT) 345 set (ac_cv_have___builtin_expect 1) 346 else (HAVE___BUILTIN_EXPECT) 347 set (ac_cv_have___builtin_expect 0) 348 endif (HAVE___BUILTIN_EXPECT) 349 350 if (HAVE_USING_OPERATOR) 351 set (ac_cv_cxx_using_operator 1) 352 else (HAVE_USING_OPERATOR) 353 set (ac_cv_cxx_using_operator 0) 354 endif (HAVE_USING_OPERATOR) 355 356 if (HAVE_EXECINFO_H) 357 set (HAVE_STACKTRACE 1) 358 endif (HAVE_EXECINFO_H) 359 360 if (WIN32 OR CYGWIN) 361 cmake_push_check_state (RESET) 362 set (CMAKE_REQUIRED_LIBRARIES DbgHelp) 363 364 check_cxx_source_runs ([=[ 365 #include <windows.h> 366 #include <dbghelp.h> 367 #include <cstdlib> 368 369 void foobar() { } 370 371 int main() 372 { 373 HANDLE process = GetCurrentProcess(); 374 375 if (!SymInitialize(process, NULL, TRUE)) 376 return EXIT_FAILURE; 377 378 char buf[sizeof(SYMBOL_INFO) + MAX_SYM_NAME]; 379 SYMBOL_INFO *symbol = reinterpret_cast<SYMBOL_INFO *>(buf); 380 symbol->SizeOfStruct = sizeof(SYMBOL_INFO); 381 symbol->MaxNameLen = MAX_SYM_NAME; 382 383 void* const pc = reinterpret_cast<void*>(&foobar); 384 BOOL ret = SymFromAddr(process, reinterpret_cast<DWORD64>(pc), 0, symbol); 385 386 return ret ? EXIT_SUCCESS : EXIT_FAILURE; 387 } 388 ]=] HAVE_SYMBOLIZE) 389 390 cmake_pop_check_state () 391 392 if (HAVE_SYMBOLIZE) 393 set (HAVE_STACKTRACE 1) 394 endif (HAVE_SYMBOLIZE) 395 elseif (UNIX OR (APPLE AND HAVE_DLADDR)) 396 set (HAVE_SYMBOLIZE 1) 397 endif (WIN32 OR CYGWIN) 398 399 check_cxx_source_compiles (" 400 #include <cstdlib> 401 #include <time.h> 402 int main() 403 { 404 time_t timep; 405 struct tm result; 406 localtime_r(&timep, &result); 407 return EXIT_SUCCESS; 408 } 409 " HAVE_LOCALTIME_R) 410 411 set (SIZEOF_VOID_P ${CMAKE_SIZEOF_VOID_P}) 412 413 if (WITH_THREADS AND Threads_FOUND) 414 if (CMAKE_USE_PTHREADS_INIT) 415 set (HAVE_PTHREAD 1) 416 endif (CMAKE_USE_PTHREADS_INIT) 417 else (WITH_THREADS AND Threads_FOUND) 418 set (NO_THREADS 1) 419 endif (WITH_THREADS AND Threads_FOUND) 420 421 set (TEST_SRC_DIR \"${CMAKE_CURRENT_SOURCE_DIR}\") 422 423 configure_file (src/config.h.cmake.in config.h) 424 configure_file (src/glog/logging.h.in glog/logging.h @ONLY) 425 configure_file (src/glog/raw_logging.h.in glog/raw_logging.h @ONLY) 426 configure_file (src/glog/stl_logging.h.in glog/stl_logging.h @ONLY) 427 configure_file (src/glog/vlog_is_on.h.in glog/vlog_is_on.h @ONLY) 428 429 set (CMAKE_CXX_VISIBILITY_PRESET default) 430 set (CMAKE_VISIBILITY_INLINES_HIDDEN 1) 431 432 set (GLOG_PUBLIC_H 433 ${CMAKE_CURRENT_BINARY_DIR}/glog/logging.h 434 ${CMAKE_CURRENT_BINARY_DIR}/glog/raw_logging.h 435 ${CMAKE_CURRENT_BINARY_DIR}/glog/stl_logging.h 436 ${CMAKE_CURRENT_BINARY_DIR}/glog/vlog_is_on.h 437 src/glog/log_severity.h 438 ) 439 440 set (GLOG_SRCS 441 ${GLOG_PUBLIC_H} 442 src/base/commandlineflags.h 443 src/base/googleinit.h 444 src/base/mutex.h 445 src/demangle.cc 446 src/demangle.h 447 src/logging.cc 448 src/raw_logging.cc 449 src/symbolize.cc 450 src/symbolize.h 451 src/utilities.cc 452 src/utilities.h 453 src/vlog_is_on.cc 454 ) 455 456 if (HAVE_PTHREAD OR WIN32) 457 list (APPEND GLOG_SRCS src/signalhandler.cc) 458 endif (HAVE_PTHREAD OR WIN32) 459 460 if (WIN32) 461 list (APPEND GLOG_SRCS 462 src/windows/port.cc 463 src/windows/port.h 464 ) 465 endif (WIN32) 466 467 add_compile_options ($<$<AND:$<BOOL:${HAVE_NO_UNNAMED_TYPE_TEMPLATE_ARGS}>,$<NOT:$<CXX_COMPILER_ID:GNU>>>:-Wno-unnamed-type-template-args>) 468 469 add_library (glog 470 ${GLOG_SRCS} 471 ) 472 add_library(glog::glog ALIAS glog) 473 474 set_target_properties (glog PROPERTIES POSITION_INDEPENDENT_CODE ON) 475 476 if (UNWIND_LIBRARY) 477 target_link_libraries (glog PUBLIC ${UNWIND_LIBRARY}) 478 endif (UNWIND_LIBRARY) 479 480 if (HAVE_DBGHELP) 481 target_link_libraries (glog PUBLIC dbghelp) 482 endif (HAVE_DBGHELP) 483 484 if (HAVE_PTHREAD) 485 target_link_libraries (glog PUBLIC ${CMAKE_THREAD_LIBS_INIT}) 486 endif (HAVE_PTHREAD) 487 488 if (WIN32 AND HAVE_SNPRINTF) 489 set_property (SOURCE src/windows/port.cc APPEND PROPERTY COMPILE_DEFINITIONS 490 HAVE_SNPRINTF) 491 endif (WIN32 AND HAVE_SNPRINTF) 492 493 if (gflags_FOUND) 494 target_link_libraries (glog PUBLIC gflags) 495 496 if (NOT BUILD_SHARED_LIBS) 497 # Don't use __declspec(dllexport|dllimport) if this is a static build 498 targeT_compile_definitions (glog PUBLIC GFLAGS_DLL_DECLARE_FLAG= GFLAGS_DLL_DEFINE_FLAG=) 499 endif (NOT BUILD_SHARED_LIBS) 500 endif (gflags_FOUND) 501 502 set_target_properties (glog PROPERTIES VERSION ${PROJECT_VERSION}) 503 set_target_properties (glog PROPERTIES SOVERSION ${PROJECT_VERSION_MAJOR}) 504 505 if (WIN32) 506 target_compile_definitions (glog PUBLIC GLOG_NO_ABBREVIATED_SEVERITIES) 507 endif (WIN32) 508 509 set_target_properties (glog PROPERTIES PUBLIC_HEADER "${GLOG_PUBLIC_H}") 510 511 set (_glog_CMake_BINDIR ${CMAKE_INSTALL_BINDIR}) 512 set (_glog_CMake_INCLUDE_DIR ${CMAKE_INSTALL_INCLUDEDIR}) 513 set (_glog_CMake_LIBDIR ${CMAKE_INSTALL_LIBDIR}) 514 set (_glog_CMake_INSTALLDIR ${_glog_CMake_LIBDIR}/cmake/glog) 515 516 target_include_directories (glog BEFORE PUBLIC 517 "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>" 518 "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>" 519 "$<INSTALL_INTERFACE:${_glog_CMake_INCLUDE_DIR}>" 520 PRIVATE ${CMAKE_CURRENT_BINARY_DIR} 521 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src) 522 523 if (WIN32) 524 target_include_directories (glog PUBLIC 525 "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/windows>" 526 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/windows) 527 endif (WIN32) 528 529 set_target_properties (glog PROPERTIES DEFINE_SYMBOL LIBGLOG_EXPORTS) 530 531 if (NOT BUILD_SHARED_LIBS) 532 target_compile_definitions (glog PUBLIC GOOGLE_GLOG_DLL_DECL=) 533 else (NOT BUILD_SHARED_LIBS) 534 target_compile_definitions (glog PRIVATE GOOGLE_GLOG_IS_A_DLL=1) 535 536 if (HAVE___ATTRIBUTE__VISIBILITY_DEFAULT) 537 set (_EXPORT "__attribute__((visibility(\"default\")))") 538 set (_IMPORT "") 539 elseif (HAVE___DECLSPEC) 540 set (_EXPORT "__declspec(dllexport)") 541 set (_IMPORT "__declspec(dllimport)") 542 endif (HAVE___ATTRIBUTE__VISIBILITY_DEFAULT) 543 544 target_compile_definitions (glog PRIVATE 545 "GOOGLE_GLOG_DLL_DECL=${_EXPORT}") 546 target_compile_definitions (glog INTERFACE 547 "GOOGLE_GLOG_DLL_DECL=${_IMPORT}") 548 target_compile_definitions (glog INTERFACE 549 "GOOGLE_GLOG_DLL_DECL_FOR_UNITTESTS=${_IMPORT}") 550 endif (NOT BUILD_SHARED_LIBS) 551 552 # Unit testing 553 554 if (BUILD_TESTING) 555 add_executable (logging_unittest 556 src/logging_unittest.cc 557 ) 558 559 target_link_libraries (logging_unittest PRIVATE glog) 560 561 add_executable (stl_logging_unittest 562 src/stl_logging_unittest.cc 563 ) 564 565 target_link_libraries (stl_logging_unittest PRIVATE glog) 566 567 if (HAVE_NO_DEPRECATED) 568 set_property (TARGET stl_logging_unittest APPEND PROPERTY COMPILE_OPTIONS 569 -Wno-deprecated) 570 endif (HAVE_NO_DEPRECATED) 571 572 if (HAVE_UNORDERED_MAP AND HAVE_UNORDERED_SET) 573 target_compile_definitions (stl_logging_unittest PRIVATE 574 GLOG_STL_LOGGING_FOR_UNORDERED) 575 endif (HAVE_UNORDERED_MAP AND HAVE_UNORDERED_SET) 576 577 if (HAVE_TR1_UNORDERED_MAP AND HAVE_TR1_UNORDERED_SET) 578 target_compile_definitions (stl_logging_unittest PRIVATE 579 GLOG_STL_LOGGING_FOR_TR1_UNORDERED) 580 endif (HAVE_TR1_UNORDERED_MAP AND HAVE_TR1_UNORDERED_SET) 581 582 if (HAVE_EXT_HASH_MAP AND HAVE_EXT_HASH_SET) 583 target_compile_definitions (stl_logging_unittest PRIVATE 584 GLOG_STL_LOGGING_FOR_EXT_HASH) 585 endif (HAVE_EXT_HASH_MAP AND HAVE_EXT_HASH_SET) 586 587 if (HAVE_EXT_SLIST) 588 target_compile_definitions (stl_logging_unittest PRIVATE 589 GLOG_STL_LOGGING_FOR_EXT_SLIST) 590 endif (HAVE_EXT_SLIST) 591 592 if (HAVE_SYMBOLIZE) 593 add_executable (symbolize_unittest 594 src/symbolize_unittest.cc 595 ) 596 597 target_link_libraries (symbolize_unittest PRIVATE glog) 598 endif (HAVE_SYMBOLIZE) 599 600 add_executable (demangle_unittest 601 src/demangle_unittest.cc 602 ) 603 604 target_link_libraries (demangle_unittest PRIVATE glog) 605 606 if (HAVE_STACKTRACE) 607 add_executable (stacktrace_unittest 608 src/stacktrace_unittest.cc 609 ) 610 611 target_link_libraries (stacktrace_unittest PRIVATE glog) 612 endif (HAVE_STACKTRACE) 613 614 add_executable (utilities_unittest 615 src/utilities_unittest.cc 616 ) 617 618 target_link_libraries (utilities_unittest PRIVATE glog) 619 620 if (HAVE_STACKTRACE AND HAVE_SYMBOLIZE) 621 add_executable (signalhandler_unittest 622 src/signalhandler_unittest.cc 623 ) 624 625 target_link_libraries (signalhandler_unittest PRIVATE glog) 626 endif (HAVE_STACKTRACE AND HAVE_SYMBOLIZE) 627 628 add_test (NAME demangle COMMAND demangle_unittest) 629 add_test (NAME logging COMMAND logging_unittest) 630 631 if (TARGET signalhandler_unittest) 632 add_test (NAME signalhandler COMMAND signalhandler_unittest) 633 endif (TARGET signalhandler_unittest) 634 635 if (TARGET stacktrace_unittest) 636 add_test (NAME stacktrace COMMAND stacktrace_unittest) 637 set_tests_properties(stacktrace PROPERTIES TIMEOUT 30) 638 endif (TARGET stacktrace_unittest) 639 640 add_test (NAME stl_logging COMMAND stl_logging_unittest) 641 642 if (TARGET symbolize_unittest) 643 add_test (NAME symbolize COMMAND symbolize_unittest) 644 endif (TARGET symbolize_unittest) 645 endif (BUILD_TESTING) 646 647 install (TARGETS glog 648 EXPORT glog-targets 649 RUNTIME DESTINATION ${_glog_CMake_BINDIR} 650 PUBLIC_HEADER DESTINATION ${_glog_CMake_INCLUDE_DIR}/glog 651 LIBRARY DESTINATION ${_glog_CMake_LIBDIR} 652 ARCHIVE DESTINATION ${_glog_CMake_LIBDIR}) 653 654 set (glog_CMake_VERSION 3.0) 655 656 if (gflags_FOUND) 657 # Ensure clients locate only the package config and not third party find 658 # modules having the same name. This avoid cmake_policy PUSH/POP errors. 659 if (CMAKE_VERSION VERSION_LESS 3.9) 660 set (gflags_DEPENDENCY "find_dependency (gflags ${gflags_VERSION})") 661 else (CMAKE_VERSION VERSION_LESS 3.9) 662 # Passing additional find_package arguments to find_dependency is possible 663 # starting with CMake 3.9. 664 set (glog_CMake_VERSION 3.9) 665 set (gflags_DEPENDENCY "find_dependency (gflags ${gflags_VERSION} NO_MODULE)") 666 endif (CMAKE_VERSION VERSION_LESS 3.9) 667 endif (gflags_FOUND) 668 669 configure_package_config_file (glog-config.cmake.in 670 ${CMAKE_CURRENT_BINARY_DIR}/glog-config.cmake 671 INSTALL_DESTINATION ${_glog_CMake_INSTALLDIR} 672 NO_CHECK_REQUIRED_COMPONENTS_MACRO) 673 674 write_basic_package_version_file (glog-config-version.cmake VERSION 675 ${PROJECT_VERSION} COMPATIBILITY SameMajorVersion) 676 677 export (TARGETS glog NAMESPACE glog:: FILE glog-targets.cmake) 678 export (PACKAGE glog) 679 680 install (FILES 681 ${CMAKE_CURRENT_BINARY_DIR}/glog-config.cmake 682 ${CMAKE_CURRENT_BINARY_DIR}/glog-config-version.cmake 683 DESTINATION ${_glog_CMake_INSTALLDIR}) 684 685 install (EXPORT glog-targets NAMESPACE glog:: DESTINATION 686 ${_glog_CMake_INSTALLDIR})