Use major version number only as SOVERSION.
[platform/upstream/gflags.git] / CMakeLists.txt
1 cmake_minimum_required (VERSION 2.8.4 FATAL_ERROR)
2
3 # ----------------------------------------------------------------------------
4 # includes
5 set (CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
6 include (utils)
7
8 # ----------------------------------------------------------------------------
9 # package information
10 set (PACKAGE_NAME      "gflags")
11 set (PACKAGE_VERSION   "2.1.1")
12 set (PACKAGE_STRING    "${PACKAGE_NAME} ${PACKAGE_VERSION}")
13 set (PACKAGE_TARNAME   "${PACKAGE_NAME}-${PACKAGE_VERSION}")
14 set (PACKAGE_BUGREPORT "https://code.google.com/p/gflags/issues/")
15
16 project (${PACKAGE_NAME} CXX)
17
18 version_numbers (
19   ${PACKAGE_VERSION}
20     PACKAGE_VERSION_MAJOR
21     PACKAGE_VERSION_MINOR
22     PACKAGE_VERSION_PATCH
23 )
24
25 set (PACKAGE_SOVERSION "${PACKAGE_VERSION_MAJOR}")
26
27 # ----------------------------------------------------------------------------
28 # options
29 set (GFLAGS_NAMESPACE   "${PACKAGE_NAME}" CACHE STRING "C++ namespace identifier of gflags library.")
30 set (GFLAGS_INCLUDE_DIR "${PACKAGE_NAME}" CACHE STRING "Include subdirectory of gflags header files.")
31
32 if (IS_ABSOLUTE GFLAGS_INCLUDE_DIR)
33   message (FATAL_ERROR "GFLAGS_INCLUDE_DIR must be a path relative to CMAKE_INSTALL_PREFIX/include")
34 endif ()
35 if (GFLAGS_INCLUDE_DIR MATCHES "^\\.\\.[/\\]")
36   message (FATAL_ERROR "GFLAGS_INCLUDE_DIR must not start with parent directory reference (../)")
37 endif ()
38
39 option (BUILD_SHARED_LIBS          "Request build of shared libraries."                                       OFF)
40 option (BUILD_STATIC_LIBS          "Request build of static libraries (default if BUILD_SHARED_LIBS is OFF)." OFF)
41 option (BUILD_gflags_LIB           "Request build of the multi-threaded gflags library."                      ON)
42 option (BUILD_gflags_nothreads_LIB "Request build of the single-threaded gflags library."                     ON)
43 option (BUILD_PACKAGING            "Enable build of distribution packages using CPack."                       OFF)
44 option (BUILD_TESTING              "Enable build of the unit tests and their execution using CTest."          OFF)
45 option (BUILD_NC_TESTS             "Request addition of negative compilation tests."                          OFF)
46 option (INSTALL_HEADERS            "Request packaging of headers and other development files."                ON)
47
48 mark_as_advanced (CLEAR CMAKE_INSTALL_PREFIX)
49 mark_as_advanced (CMAKE_CONFIGURATION_TYPES
50                   GFLAGS_NAMESPACE
51                   GFLAGS_INCLUDE_DIR
52                   BUILD_STATIC_LIBS
53                   BUILD_NC_TESTS
54                   INSTALL_HEADERS)
55 if (APPLE)
56   mark_as_advanced(CMAKE_OSX_ARCHITECTURES
57                    CMAKE_OSX_DEPLOYMENT_TARGET
58                    CMAKE_OSX_SYSROOT)
59 endif ()
60
61 if (NOT BUILD_SHARED_LIBS AND NOT BUILD_STATIC_LIBS)
62   set (BUILD_STATIC_LIBS ON)
63 endif ()
64 if (NOT BUILD_gflags_LIB AND NOT BUILD_gflags_nothreads_LIB)
65  message (FATAL_ERROR "At least one of BUILD_gflags_LIB and BUILD_gflags_nothreads_LIB must be ON.")
66 endif ()
67
68 if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CXX_FLAGS)
69   set_property (CACHE CMAKE_BUILD_TYPE PROPERTY VALUE Release)
70 endif ()
71
72 # ----------------------------------------------------------------------------
73 # system checks
74 include (CheckTypeSize)
75 include (CheckIncludeFileCXX)
76 include (CheckCXXSymbolExists)
77
78 if (WIN32 AND NOT CYGWIN)
79   set (OS_WINDOWS 1)
80 else ()
81   set (OS_WINDOWS 0)
82 endif ()
83
84 if (MSVC)
85   set (HAVE_SYS_TYPES_H 1)
86   set (HAVE_STDINT_H    1)
87   set (HAVE_STDDEF_H    1) # used by CheckTypeSize module
88   set (HAVE_INTTYPES_H  0)
89   set (HAVE_UNISTD_H    0)
90   set (HAVE_SYS_STAT_H  1)
91   set (HAVE_SHLWAPI_H   1)
92 else ()
93   foreach (fname IN ITEMS unistd stdint inttypes sys/types sys/stat fnmatch)
94     string (TOUPPER "${fname}" FNAME)
95     string (REPLACE "/" "_" FNAME "${FNAME}")
96     if (NOT HAVE_${FNAME}_H)
97       check_include_file_cxx ("${fname}.h" HAVE_${FNAME}_H)
98     endif ()
99   endforeach ()
100   # the following are used in #if directives not #ifdef
101   bool_to_int (HAVE_STDINT_H)
102   bool_to_int (HAVE_SYS_TYPES_H)
103   bool_to_int (HAVE_INTTYPES_H)
104   if (NOT HAVE_FNMATCH_H AND OS_WINDOWS)
105     check_include_file_cxx ("shlwapi.h" HAVE_SHLWAPI_H)
106   endif ()
107 endif ()
108
109 set (GFLAGS_INTTYPES_FORMAT "" CACHE STRING "Format of integer types: \"C99\" (uint32_t), \"BSD\" (u_int32_t), \"VC7\" (__int32)")
110 set_property (CACHE GFLAGS_INTTYPES_FORMAT PROPERTY STRINGS "C99;BSD;VC7")
111 mark_as_advanced (GFLAGS_INTTYPES_FORMAT)
112 if (NOT GFLAGS_INTTYPES_FORMAT)
113   set (TYPES uint32_t u_int32_t)
114   if (MSVC)
115     list (INSERT TYPES 0 __int32)
116   endif ()
117   foreach (type IN LISTS TYPES)
118     check_type_size (${type} ${type} LANGUAGE CXX)
119     if (HAVE_${type})
120       break ()
121     endif ()
122   endforeach ()
123   if (HAVE_uint32_t)
124     set_property (CACHE GFLAGS_INTTYPES_FORMAT PROPERTY VALUE C99)
125   elseif (HAVE_u_int32_t)
126     set_property (CACHE GFLAGS_INTTYPES_FORMAT PROPERTY VALUE BSD)
127   elseif (HAVE___int32)
128     set_property (CACHE GFLAGS_INTTYPES_FORMAT PROPERTY VALUE VC7)
129   else ()
130     mark_as_advanced (CLEAR GFLAGS_INTTYPES_FORMAT)
131     message (FATAL_ERROR "Do not know how to define a 32-bit integer quantity on your system!"
132                          " Neither uint32_t, u_int32_t, nor __int32 seem to be available."
133                          " Set GFLAGS_INTTYPES_FORMAT to either C99, BSD, or VC7 and try again.")
134   endif ()
135 endif ()
136 # use of special characters in strings to circumvent bug #0008226
137 if ("^${GFLAGS_INTTYPES_FORMAT}$" STREQUAL "^WIN$")
138   set_property (CACHE GFLAGS_INTTYPES_FORMAT PROPERTY VALUE VC7)
139 endif ()
140 if (NOT GFLAGS_INTTYPES_FORMAT MATCHES "^(C99|BSD|VC7)$")
141   message (FATAL_ERROR "Invalid value for GFLAGS_INTTYPES_FORMAT! Choose one of \"C99\", \"BSD\", or \"VC7\"")
142 endif ()
143 set (GFLAGS_INTTYPES_FORMAT_C99 0)
144 set (GFLAGS_INTTYPES_FORMAT_BSD 0)
145 set (GFLAGS_INTTYPES_FORMAT_VC7 0)
146 set ("GFLAGS_INTTYPES_FORMAT_${GFLAGS_INTTYPES_FORMAT}" 1)
147
148 if (MSVC)
149   set (HAVE_strtoll 0)
150   set (HAVE_strtoq  0)
151 else ()
152   check_cxx_symbol_exists (strtoll stdlib.h HAVE_STRTOLL)
153   if (NOT HAVE_STRTOLL)
154     check_cxx_symbol_exists (strtoq stdlib.h HAVE_STRTOQ)
155   endif ()
156 endif ()
157
158 set (CMAKE_THREAD_PREFER_PTHREAD TRUE)
159 find_package (ThreadsCXX)
160 if (Threads_FOUND AND CMAKE_USE_PTHREADS_INIT)
161   set (HAVE_PTHREAD 1)
162   check_type_size (pthread_rwlock_t RWLOCK LANGUAGE CXX)
163 else ()
164   set (HAVE_PTHREAD 0)
165 endif ()
166
167 if (UNIX AND NOT HAVE_PTHREAD AND BUILD_gflags_LIB)
168   if (CMAKE_HAVE_PTHREAD_H)
169     set (what "library")
170   else ()
171     set (what ".h file")
172   endif ()
173   message (FATAL_ERROR "Could not find pthread${what}. Check the log file"
174                        "\n\t${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log"
175                        "\nor disable the build of the multi-threaded gflags library (BUILD_gflags_LIB=OFF).")
176 endif ()
177
178 # ----------------------------------------------------------------------------
179 # source files - excluding root subdirectory and/or .in suffix
180 set (PUBLIC_HDRS
181   "gflags.h"
182   "gflags_declare.h"
183   "gflags_completions.h"
184 )
185
186 set (PRIVATE_HDRS
187   "config.h"
188   "util.h"
189   "mutex.h"
190 )
191
192 set (GFLAGS_SRCS
193   "gflags.cc"
194   "gflags_reporting.cc"
195   "gflags_completions.cc"
196 )
197
198 if (OS_WINDOWS)
199   list (APPEND PRIVATE_HDRS "windows_port.h")
200   list (APPEND GFLAGS_SRCS  "windows_port.cc")
201 endif ()
202
203 # ----------------------------------------------------------------------------
204 # configure source files
205 if (CMAKE_COMPILER_IS_GNUCXX)
206   set (GFLAGS_ATTRIBUTE_UNUSED "__attribute((unused))")
207 else ()
208   set (GFLAGS_ATTRIBUTE_UNUSED)
209 endif ()
210
211 # whenever we build a shared library (DLL on Windows), configure the public
212 # headers of the API for use of this library rather than the optionally
213 # also build statically linked library; users can override GFLAGS_DLL_DECL
214 if (BUILD_SHARED_LIBS)
215   set (GFLAGS_IS_A_DLL 1)
216 else ()
217   set (GFLAGS_IS_A_DLL 0)
218 endif ()
219
220 configure_headers (PUBLIC_HDRS  ${PUBLIC_HDRS})
221 configure_sources (PRIVATE_HDRS ${PRIVATE_HDRS})
222 configure_sources (GFLAGS_SRCS  ${GFLAGS_SRCS})
223
224 include_directories ("${PROJECT_SOURCE_DIR}/src")
225 include_directories ("${PROJECT_BINARY_DIR}/include")
226 include_directories ("${PROJECT_BINARY_DIR}/include/${GFLAGS_INCLUDE_DIR}")
227
228 # ----------------------------------------------------------------------------
229 # output directories
230 set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "bin")
231 set (CMAKE_LIBRARY_OUTPUT_DIRECTORY "lib")
232 set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY "lib")
233
234 # ----------------------------------------------------------------------------
235 # add library targets
236 set (TARGETS)
237 # static vs. shared
238 foreach (TYPE IN ITEMS STATIC SHARED)
239   if (BUILD_${TYPE}_LIBS)
240     # whether or not targets are a DLL
241     if (OS_WINDOWS AND "^${TYPE}$" STREQUAL "^SHARED$")
242       set (GFLAGS_IS_A_DLL 1)
243     else ()
244       set (GFLAGS_IS_A_DLL 0)
245     endif ()
246     string (TOLOWER "${TYPE}" type)
247     # multi-threaded vs. single-threaded
248     foreach (opts IN ITEMS "" _nothreads)
249       if (BUILD_gflags${opts}_LIB)
250         add_library (gflags${opts}-${type} ${TYPE} ${GFLAGS_SRCS} ${PRIVATE_HDRS} ${PUBLIC_HDRS})
251         if (opts MATCHES "nothreads")
252           set (defines "GFLAGS_IS_A_DLL=${GFLAGS_IS_A_DLL};NOTHREADS")
253         else ()
254           set (defines "GFLAGS_IS_A_DLL=${GFLAGS_IS_A_DLL}")
255           if (CMAKE_USE_PTHREADS_INIT)
256             target_link_libraries (gflags${opts}-${type} ${CMAKE_THREAD_LIBS_INIT})
257           endif ()
258         endif ()
259         set_target_properties (
260           gflags${opts}-${type} PROPERTIES COMPILE_DEFINITIONS "${defines}"
261                                            OUTPUT_NAME         "gflags${opts}"
262                                            VERSION             "${PACKAGE_VERSION}"
263                                            SOVERSION           "${PACKAGE_SOVERSION}"
264         )
265         if (HAVE_SHLWAPI_H)
266           target_link_libraries (gflags${opts}-${type} shlwapi.lib)
267         endif ()
268         if (NOT TARGET gflags${opts})
269           add_custom_target (gflags${opts})
270         endif ()
271         add_dependencies (gflags${opts} gflags${opts}-${type})
272         list (APPEND TARGETS gflags${opts}-${type})
273       endif ()
274     endforeach ()
275   endif ()
276 endforeach ()
277
278 # ----------------------------------------------------------------------------
279 # installation
280 if (OS_WINDOWS)
281   set (RUNTIME_INSTALL_DIR Bin)
282   set (LIBRARY_INSTALL_DIR Lib)
283   set (INCLUDE_INSTALL_DIR Include)
284   set (CONFIG_INSTALL_DIR  CMake)
285 else ()
286   set (RUNTIME_INSTALL_DIR bin)
287   # The LIB_INSTALL_DIR and LIB_SUFFIX variables are used by the Fedora
288   # package maintainers. Also package maintainers of other distribution
289   # packages need to be able to specify the name of the library directory.
290   if (NOT LIB_INSTALL_DIR)
291     set (LIB_INSTALL_DIR "lib${LIB_SUFFIX}")
292   endif ()
293   set (LIBRARY_INSTALL_DIR "${LIB_INSTALL_DIR}"
294     CACHE PATH "Directory of installed libraries, e.g., \"lib64\""
295   )
296   mark_as_advanced (LIBRARY_INSTALL_DIR)
297   set (INCLUDE_INSTALL_DIR include)
298   set (CONFIG_INSTALL_DIR  ${LIBRARY_INSTALL_DIR}/cmake/${PACKAGE_NAME})
299 endif ()
300
301 file (RELATIVE_PATH INSTALL_PREFIX_REL2CONFIG_DIR "${CMAKE_INSTALL_PREFIX}/${CONFIG_INSTALL_DIR}" "${CMAKE_INSTALL_PREFIX}")
302 configure_file (cmake/config.cmake.in  "${PROJECT_BINARY_DIR}/${PACKAGE_NAME}-config-install.cmake" @ONLY)
303 configure_file (cmake/version.cmake.in "${PROJECT_BINARY_DIR}/${PACKAGE_NAME}-config-version.cmake" @ONLY)
304
305 install (TARGETS ${TARGETS} DESTINATION ${LIBRARY_INSTALL_DIR} EXPORT gflags-lib)
306 if (INSTALL_HEADERS)
307   install (FILES ${PUBLIC_HDRS} DESTINATION ${INCLUDE_INSTALL_DIR}/${GFLAGS_INCLUDE_DIR})
308   install (
309     FILES "${PROJECT_BINARY_DIR}/${PACKAGE_NAME}-config-install.cmake"
310     RENAME ${PACKAGE_NAME}-config.cmake
311     DESTINATION ${CONFIG_INSTALL_DIR}
312   )
313   install (
314     FILES "${PROJECT_BINARY_DIR}/${PACKAGE_NAME}-config-version.cmake"
315     DESTINATION ${CONFIG_INSTALL_DIR}
316   )
317   install (EXPORT gflags-lib DESTINATION ${CONFIG_INSTALL_DIR} FILE ${PACKAGE_NAME}-export.cmake)
318   if (UNIX)
319     install (PROGRAMS src/gflags_completions.sh DESTINATION ${RUNTIME_INSTALL_DIR})
320   endif ()
321 endif ()
322
323 # ----------------------------------------------------------------------------
324 # support direct use of build tree
325 set (INSTALL_PREFIX_REL2CONFIG_DIR .)
326 export (TARGETS ${TARGETS} FILE "${PROJECT_BINARY_DIR}/${PACKAGE_NAME}-export.cmake")
327 export (PACKAGE gflags)
328 configure_file (cmake/config.cmake.in "${PROJECT_BINARY_DIR}/${PACKAGE_NAME}-config.cmake" @ONLY)
329
330 # ----------------------------------------------------------------------------
331 # testing - MUST follow the generation of the build tree config file
332 if (BUILD_TESTING)
333   include (CTest)
334   enable_testing ()
335   add_subdirectory (test)
336 endif ()
337
338 # ----------------------------------------------------------------------------
339 # packaging
340 if (BUILD_PACKAGING)
341
342   if (NOT BUILD_SHARED_LIBS AND NOT INSTALL_HEADERS)
343     message (WARNING "Package will contain static libraries without headers!"
344                      "\nRecommended options for generation of runtime package:"
345                      "\n  BUILD_SHARED_LIBS=ON"
346                      "\n  BUILD_STATIC_LIBS=OFF"
347                      "\n  INSTALL_HEADERS=OFF"
348                      "\nRecommended options for generation of development package:"
349                      "\n  BUILD_SHARED_LIBS=ON"
350                      "\n  BUILD_STATIC_LIBS=ON"
351                      "\n  INSTALL_HEADERS=ON")
352   endif ()
353
354   # default package generators
355   if (APPLE)
356     set (PACKAGE_GENERATOR        "PackageMaker")
357     set (PACKAGE_SOURCE_GENERATOR "TGZ;ZIP")
358   elseif (UNIX)
359     set (PACKAGE_GENERATOR        "DEB;RPM")
360     set (PACKAGE_SOURCE_GENERATOR "TGZ;ZIP")
361   else ()
362     set (PACKAGE_GENERATOR        "ZIP")
363     set (PACKAGE_SOURCE_GENERATOR "ZIP")
364   endif ()
365
366   # used package generators
367   set (CPACK_GENERATOR        "${PACKAGE_GENERATOR}"        CACHE STRING "List of binary package generators (CPack).")
368   set (CPACK_SOURCE_GENERATOR "${PACKAGE_SOURCE_GENERATOR}" CACHE STRING "List of source package generators (CPack).")
369   mark_as_advanced (CPACK_GENERATOR CPACK_SOURCE_GENERATOR)
370
371   # common package information
372   set (CPACK_PACKAGE_VENDOR              "Andreas Schuh")
373   set (CPACK_PACKAGE_CONTACT             "google-gflags@googlegroups.com")
374   set (CPACK_PACKAGE_NAME                "${PACKAGE_NAME}")
375   set (CPACK_PACKAGE_VERSION             "${PACKAGE_VERSION}")
376   set (CPACK_PACKAGE_VERSION_MAJOR       "${PACKAGE_VERSION_MAJOR}")
377   set (CPACK_PACKAGE_VERSION_MINOR       "${PACKAGE_VERSION_MINOR}")
378   set (CPACK_PACKAGE_VERSION_PATCH       "${PACKAGE_VERSION_PATCH}")
379   set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "A commandline flags library that allows for distributed flags.")
380   set (CPACK_RESOURCE_FILE_WELCOME       "${CMAKE_CURRENT_LIST_DIR}/README.txt")
381   set (CPACK_RESOURCE_FILE_LICENSE       "${CMAKE_CURRENT_LIST_DIR}/COPYING.txt")
382   set (CPACK_PACKAGE_DESCRIPTION_FILE    "${CMAKE_CURRENT_LIST_DIR}/README.txt")
383   set (CPACK_INSTALL_PREFIX              "${CMAKE_INSTALL_PREFIX}")
384   set (CPACK_OUTPUT_FILE_PREFIX          packages)
385   set (CPACK_PACKAGE_RELOCATABLE         TRUE)
386   set (CPACK_MONOLITHIC_INSTALL          TRUE)
387
388   # RPM package information -- used in cmake/package.cmake.in also for DEB
389   set (CPACK_RPM_PACKAGE_GROUP   "Development/Libraries")
390   set (CPACK_RPM_PACKAGE_LICENSE "BSD")
391   set (CPACK_RPM_PACKAGE_URL     "http://code.google.com/p/gflags")
392   set (CPACK_RPM_CHANGELOG_FILE  "${CMAKE_CURRENT_LIST_DIR}/ChangeLog.txt")
393
394   if (INSTALL_HEADERS)
395     set (CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_LIST_DIR}/doc/gflags.html")
396   else ()
397     set (CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_LIST_DIR}/cmake/README_runtime.txt")
398   endif ()
399
400   # system/architecture
401   if (WINDOWS)
402     if (CMAKE_CL_64)
403       set (CPACK_SYSTEM_NAME "win64")
404     else ()
405       set (CPACK_SYSTEM_NAME "win32")
406     endif ()
407     set (CPACK_PACKAGE_ARCHITECTURE)
408   elseif (APPLE)
409     set (CPACK_PACKAGE_ARCHITECTURE darwin)
410   else ()
411     string (TOLOWER "${CMAKE_SYSTEM_NAME}" CPACK_SYSTEM_NAME)
412     if (CMAKE_CXX_FLAGS MATCHES "-m32")
413       set (CPACK_PACKAGE_ARCHITECTURE i386)
414     else ()
415       execute_process (
416         COMMAND         dpkg --print-architecture
417         RESULT_VARIABLE RV
418         OUTPUT_VARIABLE CPACK_PACKAGE_ARCHITECTURE
419       )
420       if (RV EQUAL 0)
421               string (STRIP "${CPACK_PACKAGE_ARCHITECTURE}" CPACK_PACKAGE_ARCHITECTURE)
422       else ()
423         execute_process (COMMAND uname -m OUTPUT_VARIABLE CPACK_PACKAGE_ARCHITECTURE)
424         if (CPACK_PACKAGE_ARCHITECTURE MATCHES "x86_64")
425                 set (CPACK_PACKAGE_ARCHITECTURE amd64)
426         else ()
427           set (CPACK_PACKAGE_ARCHITECTURE i386)
428         endif ()
429       endif ()
430     endif ()
431   endif ()
432
433   # source package settings
434   set (CPACK_SOURCE_TOPLEVEL_TAG      "source")
435   set (CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}")
436   set (CPACK_SOURCE_IGNORE_FILES      "/\\\\.git/;\\\\.swp$;\\\\.#;/#;\\\\.*~;cscope\\\\.*;/[Bb]uild[.+-_a-zA-Z0-9]*/")
437
438   # default binary package settings
439   set (CPACK_INCLUDE_TOPLEVEL_DIRECTORY TRUE)
440   set (CPACK_PACKAGE_FILE_NAME          "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME}")
441   if (CPACK_PACKAGE_ARCHITECTURE)
442     set (CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}-${CPACK_PACKAGE_ARCHITECTURE}")
443   endif ()
444
445   # generator specific configuration file
446   #
447   # allow package maintainers to use their own configuration file
448   # $ cmake -DCPACK_PROJECT_CONFIG_FILE:FILE=/path/to/package/config
449   if (NOT CPACK_PROJECT_CONFIG_FILE)
450     configure_file (
451       "${CMAKE_CURRENT_LIST_DIR}/cmake/package.cmake.in"
452       "${PROJECT_BINARY_DIR}/${PACKAGE_NAME}-package.cmake" @ONLY
453     )
454     set (CPACK_PROJECT_CONFIG_FILE "${PROJECT_BINARY_DIR}/${PACKAGE_NAME}-package.cmake")
455   endif ()
456
457   include (CPack)
458
459 endif () # BUILD_PACKAGING