cmake: allow to disable multithreading support
[platform/upstream/glog.git] / CMakeLists.txt
1 cmake_minimum_required (VERSION 3.0)
2
3 if (POLICY CMP0042)
4   cmake_policy (SET CMP0042 NEW)
5 endif (POLICY CMP0042)
6
7 project (google-glog)
8
9 enable_testing ()
10
11 set (GLOG_MAJOR_VERSION 0)
12 set (GLOG_MINOR_VERSION 3)
13 set (GLOG_PATCH_VERSION 4)
14
15 set (GLOG_VERSION
16   ${GLOG_MAJOR_VERSION}.${GLOG_MINOR_VERSION}.${GLOG_PATCH_VERSION})
17
18 set (CPACK_PACKAGE_NAME glog)
19 set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "")
20 set (CPACK_PACKAGE_VERSION_MAJOR ${GLOG_MAJOR_VERSION})
21 set (CPACK_PACKAGE_VERSION_MINOR ${GLOG_MINOR_VERSION})
22 set (CPACK_PACKAGE_VERSION_PATCH ${GLOG_PATCH_VERSION})
23 set (CPACK_PACKAGE_VERSION ${GLOG_VERSION})
24
25 option (WITH_GFLAGS "Use gflags" ON)
26 option (WITH_THREADS "Enable multithreading support" ON)
27
28 list (APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
29
30 include (CMakePackageConfigHelpers)
31 include (CPack)
32 include (CheckCSourceCompiles)
33 include (CheckCXXCompilerFlag)
34 include (CheckCXXSourceCompiles)
35 include (CheckFunctionExists)
36 include (CheckIncludeFile)
37 include (CheckIncludeFileCXX)
38 include (CheckLibraryExists)
39 include (CheckStructHasMember)
40 include (CheckSymbolExists)
41 include (CheckTypeSize)
42 include (DetermineGflagsNamespace)
43
44 set (CMAKE_THREAD_PREFER_PTHREAD 1)
45
46 if (WITH_GFLAGS)
47   find_package (gflags)
48
49   if (gflags_FOUND)
50     set (HAVE_LIB_GFLAGS 1)
51     determine_gflags_namespace (gflags_NAMESPACE)
52   endif (gflags_FOUND)
53 endif (WITH_GFLAGS)
54
55 if (WITH_THREADS)
56   find_package (Threads)
57 endif (WITH_THREADS)
58
59 check_include_file (dlfcn.h HAVE_DLFCN_H)
60 check_include_file (execinfo.h HAVE_EXECINFO_H)
61 check_include_file (glob.h HAVE_GLOB_H)
62 check_include_file (inttypes.h HAVE_INTTYPES_H)
63 check_include_file (libunwind.h HAVE_LIBUNWIND_H)
64 check_include_file (memory.h HAVE_MEMORY_H)
65 check_include_file (pwd.h HAVE_PWD_H)
66 check_include_file (stdint.h HAVE_STDINT_H)
67 check_include_file (stdlib.h HAVE_STDLIB_H)
68 check_include_file (string.h HAVE_STRING_H)
69 check_include_file (strings.h HAVE_STRINGS_H)
70 check_include_file (sys/stat.h HAVE_SYS_STAT_H)
71 check_include_file (sys/syscall.h HAVE_SYS_SYSCALL_H)
72 check_include_file (sys/time.h HAVE_SYS_TIME_H)
73 check_include_file (sys/types.h HAVE_SYS_TYPES_H)
74 check_include_file (sys/utsname.h HAVE_SYS_UTSNAME_H)
75 check_include_file (syscall.h HAVE_SYSCALL_H)
76 check_include_file (syslog.h HAVE_SYSLOG_H)
77 check_include_file (ucontext.h HAVE_UCONTEXT_H)
78 check_include_file (unistd.h HAVE_UNISTD_H)
79 check_include_file (unwind.h HAVE_UNWIND_H)
80
81 check_include_file_cxx ("ext/hash_map" HAVE_EXT_HASH_MAP)
82 check_include_file_cxx ("ext/hash_set" HAVE_EXT_HASH_SET)
83 check_include_file_cxx ("ext/slist" HAVE_EXT_SLIST)
84 check_include_file_cxx ("tr1/unordered_map" HAVE_TR1_UNORDERED_MAP)
85 check_include_file_cxx ("tr1/unordered_set" HAVE_TR1_UNORDERED_SET)
86 check_include_file_cxx ("unordered_map" HAVE_UNORDERED_MAP)
87 check_include_file_cxx ("unordered_set" HAVE_UNORDERED_SET)
88
89 check_type_size ("unsigned __int16" HAVE___UINT16)
90 check_type_size (u_int16_t HAVE_U_INT16_T)
91 check_type_size (uint16_t HAVE_UINT16_T)
92
93 check_function_exists (dladdr HAVE_DLADDR)
94 check_function_exists (fcntl HAVE_FCNTL)
95 check_function_exists (pread HAVE_PREAD)
96 check_function_exists (pwrite HAVE_PWRITE)
97 check_function_exists (sigaction HAVE_SIGACTION)
98 check_function_exists (sigaltstack HAVE_SIGALSTACK)
99
100 check_cxx_compiler_flag (-Wno-deprecated HAVE_NO_DEPRECATED)
101 check_cxx_compiler_flag (-Wno-unnamed-type-template-args
102     HAVE_NO_UNNAMED_TYPE_TEMPLATE_ARGS)
103
104 # NOTE: Cannot use check_function_exists here since >=vc-14.0 can define
105 # snprintf as an inline function
106 check_symbol_exists (snprintf stdio.h HAVE_SNPRINTF)
107
108 check_library_exists (unwind get_static_proc_name "" HAVE_LIB_UNWIND)
109
110 find_library (UNWIND_LIBRARY NAMES unwind DOC "unwind library")
111 mark_as_advanced (UNWIND_LIBRARY)
112
113 check_c_source_compiles ("
114 #include <stdlib.h>
115 static void foo(void) __attribute__ ((unused));
116 int main(void) { return 0; }
117 " HAVE___ATTRIBUTE__)
118
119 check_c_source_compiles ("
120 #include <stdlib.h>
121 static void foo(void) __attribute__ ((visibility(\"default\")));
122 int main(void) { return 0; }
123 " HAVE___ATTRIBUTE__VISIBILITY_DEFAULT)
124
125 check_c_source_compiles ("
126 #include <stdlib.h>
127 static void foo(void) __attribute__ ((visibility(\"hidden\")));
128 int main(void) { return 0; }
129 " HAVE___ATTRIBUTE__VISIBILITY_HIDDEN)
130
131 check_c_source_compiles ("
132 int main(void) { if (__builtin_expect(0, 0)) return 1; return 0; }
133 " HAVE___BUILTIN_EXPECT)
134
135 check_c_source_compiles ("
136 int main(void)
137 {
138   int a; if (__sync_val_compare_and_swap(&a, 0, 1)) return 1; return 0;
139 }
140 " HAVE___SYNC_VAL_COMPARE_AND_SWAP)
141
142 check_c_source_compiles ("
143 #define _XOPEN_SOURCE 500
144 #include <pthread.h>
145 int main(void)
146 {
147   pthread_rwlock_t l;
148   pthread_rwlock_init(&l, NULL);
149   pthread_rwlock_rdlock(&l);
150   return 0;
151 }
152 " HAVE_RWLOCK)
153
154 check_c_source_compiles ("
155 __declspec(selectany) int a;
156 int main(void) { return 0; }
157 " HAVE___DECLSPEC)
158
159 check_cxx_source_compiles ("
160 #include <vector>
161 vector<int> t; int main() { }
162 " STL_NO_NAMESPACE)
163
164 check_cxx_source_compiles ("
165 #include <vector>
166 std::vector<int> t; int main() { }
167 " STL_STD_NAMESPACE)
168
169 check_cxx_source_compiles ("
170 #include <iostream>
171 std::ostream& operator<<(std::ostream&, struct s);
172 using ::operator<<;
173 int main() { }
174 " HAVE_USING_OPERATOR)
175
176 check_cxx_source_compiles ("
177 namespace Outer { namespace Inner { int i = 0; }}
178 using namespace Outer::Inner;;
179 int main() { return i; }
180 " HAVE_NAMESPACES)
181
182 set (_PC_FIELDS
183   "gregs[REG_PC]"
184   "gregs[REG_EIP]"
185   "gregs[REG_RIP]"
186   "sc_ip"
187   "uc_regs->gregs[PT_NIP]"
188   "gregs[R15]"
189   "arm_pc"
190   "mc_eip"
191   "mc_rip"
192   "__gregs[REG_EIP]"
193   "__gregs[REG_RIP]"
194   "ss.eip"
195   "__ss.__eip"
196   "ss.rip"
197   "__ss.__rip"
198   "ss.srr0"
199   "__ss.__srr0"
200 )
201
202 set (_PC_HEADERS ucontext.h signal.h)
203
204 if (HAVE_UCONTEXT_H AND NOT PC_FROM_UCONTEXT)
205   foreach (_PC_FIELD ${_PC_FIELDS})
206     foreach (_PC_HEADER ${_PC_HEADERS})
207       set (_TMP
208       ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/uctfield.c)
209       file (WRITE ${_TMP} "
210 #define _GNU_SOURCE 1
211 #include <${_PC_HEADER}>
212 int main(void)
213 {
214   ucontext_t u;
215   return u.${_PC_FIELD} == 0;
216 }
217 ")
218       try_compile (HAVE_PC_FROM_UCONTEXT ${CMAKE_CURRENT_BINARY_DIR} ${_TMP}
219         COMPILE_DEFINITIONS _GNU_SOURCE=1)
220
221       if (HAVE_PC_FROM_UCONTEXT)
222         set (PC_FROM_UCONTEXT ${_PC_FIELD} CACHE)
223       endif (HAVE_PC_FROM_UCONTEXT)
224     endforeach (_PC_HEADER)
225   endforeach (_PC_FIELD)
226 endif  (HAVE_UCONTEXT_H AND NOT PC_FROM_UCONTEXT)
227
228 if (STL_STD_NAMESPACE)
229   set (STL_NAMESPACE std)
230 else (STL_STD_NAMESPACE)
231   set (STL_NAMESPACE "")
232 endif (STL_STD_NAMESPACE)
233
234 set (GOOGLE_NAMESPACE google)
235 set (_START_GOOGLE_NAMESPACE_ "namespace ${GOOGLE_NAMESPACE} {")
236 set (_END_GOOGLE_NAMESPACE_ "}")
237
238 if (HAVE___UINT16)
239   set (ac_cv_have___uint16 1)
240 else (HAVE___UINT16)
241   set (ac_cv_have___uint16 0)
242 endif (HAVE___UINT16)
243
244 if (HAVE_INTTYPES_H)
245   set (ac_cv_have_inttypes_h 1)
246 else (HAVE_INTTYPES_H)
247   set (ac_cv_have_inttypes_h 0)
248 endif (HAVE_INTTYPES_H)
249
250 if (HAVE_LIB_GFLAGS)
251   set (ac_cv_have_libgflags 1)
252 else (HAVE_LIB_GFLAGS)
253   set (ac_cv_have_libgflags 0)
254 endif (HAVE_LIB_GFLAGS)
255
256 if (HAVE_STDINT_H)
257   set (ac_cv_have_stdint_h 1)
258 else (HAVE_STDINT_H)
259   set (ac_cv_have_stdint_h 0)
260 endif (HAVE_STDINT_H)
261
262 if (HAVE_SYS_TYPES_H)
263   set (ac_cv_have_systypes_h 1)
264 else (HAVE_SYS_TYPES_H)
265   set (ac_cv_have_systypes_h 0)
266 endif (HAVE_SYS_TYPES_H)
267
268 if (HAVE_U_INT16_T)
269   set (ac_cv_have_u_int16_t 1)
270 else (HAVE_U_INT16_T)
271   set (ac_cv_have_u_int16_t 0)
272 endif (HAVE_U_INT16_T)
273
274 if (HAVE_UINT16_T)
275   set (ac_cv_have_uint16_t 1)
276 else (HAVE_UINT16_T)
277   set (ac_cv_have_uint16_t 0)
278 endif (HAVE_UINT16_T)
279
280 if (HAVE_UNISTD_H)
281   set (ac_cv_have_unistd_h 1)
282 else (HAVE_UNISTD_H)
283   set (ac_cv_have_unistd_h 0)
284 endif (HAVE_UNISTD_H)
285
286 set (ac_google_namespace ${GOOGLE_NAMESPACE})
287 set (ac_google_end_namespace ${_END_GOOGLE_NAMESPACE_})
288 set (ac_google_start_namespace ${_START_GOOGLE_NAMESPACE_})
289
290 if (HAVE___ATTRIBUTE__)
291   set (ac_cv___attribute___noreturn "__attribute__((noreturn))")
292   set (ac_cv___attribute___noinline "__attribute__((noinline))")
293 elseif (HAVE___DECLSPEC)
294   set (ac_cv___attribute___noreturn "__declspec(noreturn)")
295   #set (ac_cv___attribute___noinline "__declspec(noinline)")
296 endif (HAVE___ATTRIBUTE__)
297
298 if (HAVE___BUILTIN_EXPECT)
299   set (ac_cv_have___builtin_expect 1)
300 else (HAVE___BUILTIN_EXPECT)
301   set (ac_cv_have___builtin_expect 0)
302 endif (HAVE___BUILTIN_EXPECT)
303
304 if (HAVE_USING_OPERATOR)
305   set (ac_cv_cxx_using_operator 1)
306 else (HAVE_USING_OPERATOR)
307   set (ac_cv_cxx_using_operator 0)
308 endif (HAVE_USING_OPERATOR)
309
310 set (SIZEOF_VOID_P ${CMAKE_SIZEOF_VOID_P})
311
312 if (WITH_THREADS AND Threads_FOUND)
313   if (CMAKE_USE_PTHREADS_INIT)
314     set (HAVE_PTHREAD 1)
315   endif (CMAKE_USE_PTHREADS_INIT)
316 else (WITH_THREADS AND Threads_FOUND)
317   set (NO_THREADS 1)
318 endif (WITH_THREADS AND Threads_FOUND)
319
320 set (TEST_SRC_DIR \"${CMAKE_CURRENT_SOURCE_DIR}\")
321
322 configure_file (src/config.h.cmake.in config.h)
323 configure_file (src/glog/logging.h.in glog/logging.h @ONLY)
324 configure_file (src/glog/raw_logging.h.in glog/raw_logging.h @ONLY)
325 configure_file (src/glog/stl_logging.h.in glog/stl_logging.h @ONLY)
326 configure_file (src/glog/vlog_is_on.h.in glog/vlog_is_on.h @ONLY)
327
328 set (CMAKE_CXX_VISIBILITY_PRESET default)
329 set (CMAKE_VISIBILITY_INLINES_HIDDEN 1)
330
331 set (GLOG_PUBLIC_H
332   ${CMAKE_CURRENT_BINARY_DIR}/config.h
333   ${CMAKE_CURRENT_BINARY_DIR}/glog/logging.h
334   ${CMAKE_CURRENT_BINARY_DIR}/glog/raw_logging.h
335   ${CMAKE_CURRENT_BINARY_DIR}/glog/stl_logging.h
336   ${CMAKE_CURRENT_BINARY_DIR}/glog/vlog_is_on.h
337   src/glog/log_severity.h
338 )
339
340 set (GLOG_SRCS
341   ${GLOG_PUBLIC_H}
342   src/base/commandlineflags.h
343   src/base/googleinit.h
344   src/base/mutex.h
345   src/demangle.cc
346   src/demangle.h
347   src/logging.cc
348   src/raw_logging.cc
349   src/symbolize.cc
350   src/symbolize.h
351   src/utilities.cc
352   src/utilities.h
353   src/vlog_is_on.cc
354 )
355
356 if (HAVE_PTHREAD)
357   list (APPEND GLOG_SRCS src/signalhandler.cc)
358 endif (HAVE_PTHREAD)
359
360 if (WIN32)
361   list (APPEND GLOG_SRCS
362     src/windows/port.cc
363     src/windows/port.h
364   )
365 endif (WIN32)
366
367 add_library (glog
368   ${GLOG_SRCS}
369 )
370
371 if (UNWIND_LIBRARY)
372   target_link_libraries (glog PUBLIC ${UNWIND_LIBRARY})
373 endif (UNWIND_LIBRARY)
374
375 if (WIN32 AND HAVE_SNPRINTF)
376   set_property (SOURCE src/windows/port.cc APPEND PROPERTY COMPILE_DEFINITIONS
377     HAVE_SNPRINTF)
378 endif (WIN32 AND HAVE_SNPRINTF)
379
380 if (HAVE_NO_UNNAMED_TYPE_TEMPLATE_ARGS)
381   target_compile_options (glog PUBLIC -Wno-unnamed-type-template-args)
382 endif (HAVE_NO_UNNAMED_TYPE_TEMPLATE_ARGS)
383
384 if (gflags_FOUND)
385   target_include_directories (glog PUBLIC ${gflags_INCLUDE_DIR})
386   target_link_libraries (glog PUBLIC ${gflags_LIBRARIES})
387
388   if (NOT BUILD_SHARED_LIBS)
389     # Don't use __declspec(dllexport|dllimport) if this is a static build
390     targeT_compile_definitions (glog PUBLIC GFLAGS_DLL_DECLARE_FLAG= GFLAGS_DLL_DEFINE_FLAG=)
391   endif (NOT BUILD_SHARED_LIBS)
392 endif (gflags_FOUND)
393
394 set_target_properties (glog PROPERTIES VERSION ${GLOG_MAJOR_VERSION})
395 set_target_properties (glog PROPERTIES SOVERSION ${GLOG_VERSION})
396
397 if (WIN32)
398   target_compile_definitions (glog PUBLIC GLOG_NO_ABBREVIATED_SEVERITIES)
399 endif (WIN32)
400
401 set_target_properties (glog PROPERTIES PUBLIC_HEADER "${GLOG_PUBLIC_H}")
402
403 target_include_directories (glog BEFORE PUBLIC
404   "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>"
405   "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>"
406   PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
407   PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src)
408
409 if (WIN32)
410   target_include_directories (glog PUBLIC
411     "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/windows>"
412     PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/windows)
413 endif (WIN32)
414
415 set_target_properties (glog PROPERTIES DEFINE_SYMBOL LIBGLOG_EXPORTS)
416
417 if (NOT BUILD_SHARED_LIBS)
418   target_compile_definitions (glog PUBLIC GOOGLE_GLOG_DLL_DECL=)
419 else (NOT BUILD_SHARED_LIBS)
420   target_compile_definitions (glog PRIVATE GOOGLE_GLOG_IS_A_DLL=1)
421
422   if (HAVE___ATTRIBUTE__VISIBILITY_DEFAULT)
423     set (_EXPORT "__attribute__((visibility(\"default\")))")
424     set (_IMPORT "")
425   elseif (HAVE___DECLSPEC)
426     set (_EXPORT "__declspec(dllexport)")
427     set (_IMPORT "__declspec(dllimport)")
428   endif (HAVE___ATTRIBUTE__VISIBILITY_DEFAULT)
429
430   target_compile_definitions (glog PRIVATE
431     "GOOGLE_GLOG_DLL_DECL=${_EXPORT}")
432   target_compile_definitions (glog INTERFACE
433     "GOOGLE_GLOG_DLL_DECL=${_IMPORT}")
434   target_compile_definitions (glog INTERFACE
435     "GOOGLE_GLOG_DLL_DECL_FOR_UNITTESTS=${_IMPORT}")
436 endif (NOT BUILD_SHARED_LIBS)
437
438 if (HAVE_EXECINFO_H)
439   set (HAVE_STACKTRACE 1)
440 endif (HAVE_EXECINFO_H)
441
442 if (UNIX OR (APPLE AND HAVE_DLADDR))
443   set (HAVE_SYMBOLIZE 1)
444 endif (UNIX OR (APPLE AND HAVE_DLADDR))
445
446 # Unit testing
447
448 add_executable (logging_unittest
449   src/logging_unittest.cc
450 )
451
452 target_link_libraries (logging_unittest PRIVATE glog)
453
454 add_executable (stl_logging_unittest
455   src/stl_logging_unittest.cc
456 )
457
458 target_link_libraries (stl_logging_unittest PRIVATE glog)
459
460 if (HAVE_NO_DEPRECATED)
461   set_property (TARGET stl_logging_unittest APPEND PROPERTY COMPILE_OPTIONS
462     -Wno-deprecated)
463 endif (HAVE_NO_DEPRECATED)
464
465 if (HAVE_UNORDERED_MAP AND HAVE_UNORDERED_SET)
466   target_compile_definitions (stl_logging_unittest PRIVATE
467     GLOG_STL_LOGGING_FOR_UNORDERED)
468 endif (HAVE_UNORDERED_MAP AND HAVE_UNORDERED_SET)
469
470 if (HAVE_TR1_UNORDERED_MAP AND HAVE_TR1_UNORDERED_SET)
471   target_compile_definitions (stl_logging_unittest PRIVATE
472     GLOG_STL_LOGGING_FOR_TR1_UNORDERED)
473 endif (HAVE_TR1_UNORDERED_MAP AND HAVE_TR1_UNORDERED_SET)
474
475 if (HAVE_EXT_HASH_MAP AND HAVE_EXT_HASH_SET)
476   target_compile_definitions (stl_logging_unittest PRIVATE
477     GLOG_STL_LOGGING_FOR_EXT_HASH)
478 endif (HAVE_EXT_HASH_MAP AND HAVE_EXT_HASH_SET)
479
480 if (HAVE_EXT_SLIST)
481   target_compile_definitions (stl_logging_unittest PRIVATE
482     GLOG_STL_LOGGING_FOR_EXT_SLIST)
483 endif (HAVE_EXT_SLIST)
484
485 if (HAVE_SYMBOLIZE)
486   add_executable (symbolize_unittest
487     src/symbolize_unittest.cc
488   )
489
490   target_link_libraries (symbolize_unittest PRIVATE glog)
491 endif (HAVE_SYMBOLIZE)
492
493 add_executable (demangle_unittest
494   src/demangle_unittest.cc
495 )
496
497 target_link_libraries (demangle_unittest PRIVATE glog)
498
499 if (HAVE_STACKTRACE)
500   add_executable (stacktrace_unittest
501     src/stacktrace_unittest.cc
502   )
503
504   target_link_libraries (stacktrace_unittest PRIVATE glog)
505 endif (HAVE_STACKTRACE)
506
507 add_executable (utilities_unittest
508   src/utilities_unittest.cc
509 )
510
511 target_link_libraries (utilities_unittest PRIVATE glog)
512
513 if (HAVE_STACKTRACE AND HAVE_SYMBOLIZE)
514   add_executable (signalhandler_unittest
515     src/signalhandler_unittest.cc
516   )
517
518   target_link_libraries (signalhandler_unittest PRIVATE glog)
519 endif (HAVE_STACKTRACE AND HAVE_SYMBOLIZE)
520
521 add_test (NAME demangle COMMAND demangle_unittest)
522 add_test (NAME logging COMMAND logging_unittest)
523
524 if (TARGET signalhandler_unittest)
525   add_test (NAME signalhandler COMMAND signalhandler_unittest)
526 endif (TARGET signalhandler_unittest)
527
528 if (TARGET stacktrace_unittest)
529   add_test (NAME stacktrace COMMAND stacktrace_unittest)
530 endif (TARGET stacktrace_unittest)
531
532 add_test (NAME stl_logging COMMAND stl_logging_unittest)
533
534 if (TARGET symbolize_unittest)
535   add_test (NAME symbolize COMMAND symbolize_unittest)
536 endif (TARGET symbolize_unittest)
537
538 install (TARGETS glog
539   EXPORT glog-targets
540   RUNTIME DESTINATION bin
541   PUBLIC_HEADER DESTINATION include/glog
542   LIBRARY DESTINATION lib
543   ARCHIVE DESTINATION lib)
544
545 # Build tree config
546
547 set (glog_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)
548 set (glog_PACKAGE_DEPS)
549
550 if (gflags_FOUND)
551   set (glog_PACKAGE_DEPS
552 "
553 include (CMakeFindDependencyMacro)
554
555 find_dependency (gflags ${gflags_VERSION})
556 ")
557 endif (gflags_FOUND)
558
559 configure_package_config_file (glog-config.cmake.in
560   ${CMAKE_CURRENT_BINARY_DIR}/glog-config.cmake INSTALL_DESTINATION
561   lib/cmake/glog PATH_VARS glog_INCLUDE_DIR
562   NO_CHECK_REQUIRED_COMPONENTS_MACRO)
563
564 # The version file is the same both for build tree and install mode config
565 write_basic_package_version_file (glog-config-version.cmake VERSION
566   ${GLOG_VERSION} COMPATIBILITY SameMajorVersion)
567
568 # Install config
569
570 set (glog_INCLUDE_DIR include)
571
572 configure_package_config_file (glog-config.cmake.in
573   ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/glog-config.cmake
574   INSTALL_DESTINATION lib/cmake/glog PATH_VARS glog_INCLUDE_DIR
575   NO_CHECK_REQUIRED_COMPONENTS_MACRO)
576
577 export (TARGETS glog FILE glog-targets.cmake)
578 export (PACKAGE glog)
579
580 install (FILES
581   ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/glog-config.cmake
582   ${CMAKE_CURRENT_BINARY_DIR}/glog-config-version.cmake
583   DESTINATION lib/cmake/glog)
584
585 install (EXPORT glog-targets DESTINATION lib/cmake/glog)