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