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