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