CMakeLists.txt 22.5 KB
Newer Older
1
2
3
4
5
#
# This is a CMake makefile.  You can find the cmake utility and
# information about it at http://www.cmake.org
#

6

7
cmake_minimum_required(VERSION 2.8.4)
8

9
10
# default to a Release build (except if CMAKE_BUILD_TYPE is set)
include(release_build_by_default)
11
include(use_cpp_11.cmake)
12

13
14
15
16
project(dlib)

set(CPACK_PACKAGE_VERSION_MAJOR "18")
set(CPACK_PACKAGE_VERSION_MINOR "17")
Davis King's avatar
Davis King committed
17
set(CPACK_PACKAGE_VERSION_PATCH "100")
18
set(VERSION ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH})
19

20
set(CMAKE_LEGACY_CYGWIN_WIN32 0) # Remove when CMake >= 2.8.4 is required
21
# Suppress cmake warnings about changes in new versions.
22
23
if(COMMAND cmake_policy) 
   cmake_policy(SET CMP0003 NEW) 
24
25
26
   if (POLICY CMP0054)
      cmake_policy(SET CMP0054 NEW)
   endif()
27
endif()
28

29
include(add_global_compiler_switch.cmake)
30
31
32
33
34
35
36
37
38


# Make sure ENABLE_ASSERTS is defined for debug builds
if (NOT CMAKE_CXX_FLAGS_DEBUG MATCHES "-DENABLE_ASSERTS")
   set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DENABLE_ASSERTS" 
      CACHE STRING "Flags used by the compiler during C++ debug builds." 
      FORCE)
endif ()

39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# Don't try to call add_library(dlib) and setup dlib's stuff if it has already
# been done by some other part of the current cmake project.  We do this
# because it avoids getting warnings/errors about cmake policy CMP0002.  This
# happens when a project tries to call add_subdirectory() on dlib more than
# once.  This most often happens when the top level of a project depends on two
# or more other things which both depend on dlib. 
if (NOT TARGET dlib)

   set (DLIB_ISO_CPP_ONLY_STR 
   "Enable this if you don't want to compile any non-ISO C++ code (i.e. you don't use any of the API Wrappers)" )
   set (DLIB_NO_GUI_SUPPORT_STR 
   "Enable this if you don't want to compile any of the dlib GUI code" )
   set (DLIB_ENABLE_STACK_TRACE_STR 
   "Enable this if you want to turn on the DLIB_STACK_TRACE macros" )
   set (DLIB_ENABLE_ASSERTS_STR 
   "Enable this if you want to turn on the DLIB_ASSERT macro" )
   set (DLIB_USE_BLAS_STR
   "Disable this if you don't want to use a BLAS library" )
   set (DLIB_USE_LAPACK_STR
   "Disable this if you don't want to use a LAPACK library" )
59
60
   set (DLIB_USE_CUDA_STR
   "Disable this if you don't want to use NVIDIA CUDA" )
61
   set (DLIB_PNG_SUPPORT_STR
62
   "Disable this if you don't want to link against libpng" )
63
   set (DLIB_JPEG_SUPPORT_STR
64
65
66
   "Disable this if you don't want to link against libjpeg" )
   set (DLIB_LINK_WITH_SQLITE3_STR
   "Disable this if you don't want to link against sqlite3" )
67
   #set (DLIB_USE_FFTW_STR "Disable this if you don't want to link against fftw" )
68
69
70
71

   option(DLIB_ISO_CPP_ONLY ${DLIB_ISO_CPP_ONLY_STR} OFF)
   option(DLIB_NO_GUI_SUPPORT ${DLIB_NO_GUI_SUPPORT_STR} OFF)
   option(DLIB_ENABLE_STACK_TRACE ${DLIB_ENABLE_STACK_TRACE_STR} OFF)
72

73
74
75
76
77
78
79
   option(DLIB_ENABLE_ASSERTS ${DLIB_ENABLE_ASSERTS_STR} OFF)

   if(DLIB_ENABLE_ASSERTS)
       set (DLIB_DISABLE_ASSERTS false)
       set (ENABLE_ASSERTS true) # we need the CMake variable to properly configure config.h.in
   else()
       set (DLIB_DISABLE_ASSERTS true)
80
81
   endif()

82
83
   option(DLIB_USE_BLAS ${DLIB_USE_BLAS_STR} ON)
   option(DLIB_USE_LAPACK ${DLIB_USE_LAPACK_STR} ON)
84
   option(DLIB_USE_CUDA ${DLIB_USE_CUDA_STR} ON)
85
86
   option(DLIB_PNG_SUPPORT ${DLIB_PNG_SUPPORT_STR} ON)
   option(DLIB_JPEG_SUPPORT ${DLIB_JPEG_SUPPORT_STR} ON)
87
   option(DLIB_LINK_WITH_SQLITE3 ${DLIB_LINK_WITH_SQLITE3_STR} ON)
88
   #option(DLIB_USE_FFTW ${DLIB_USE_FFTW_STR} ON)
89

90
91
92
93
94
95
96
97
98
99
100
101
102
   set(source_files 
         base64/base64_kernel_1.cpp
         bigint/bigint_kernel_1.cpp
         bigint/bigint_kernel_2.cpp
         bit_stream/bit_stream_kernel_1.cpp
         entropy_decoder/entropy_decoder_kernel_1.cpp
         entropy_decoder/entropy_decoder_kernel_2.cpp
         entropy_encoder/entropy_encoder_kernel_1.cpp
         entropy_encoder/entropy_encoder_kernel_2.cpp
         md5/md5_kernel_1.cpp
         tokenizer/tokenizer_kernel_1.cpp
         unicode/unicode.cpp
         data_io/image_dataset_metadata.cpp)
103

104
   if (DLIB_ISO_CPP_ONLY)
105
       add_library(dlib STATIC ${source_files} )
106
       if (UNIX AND NOT DLIB_IN_PROJECT_BUILD)
107
           add_library(dlib-shared SHARED ${source_files} )
108
       endif()
109
   else()
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139

      set(source_files ${source_files}
         sockets/sockets_kernel_1.cpp
         bsp/bsp.cpp
         dir_nav/dir_nav_kernel_1.cpp
         dir_nav/dir_nav_kernel_2.cpp
         dir_nav/dir_nav_extensions.cpp
         linker/linker_kernel_1.cpp
         logger/extra_logger_headers.cpp
         logger/logger_kernel_1.cpp
         logger/logger_config_file.cpp
         misc_api/misc_api_kernel_1.cpp
         misc_api/misc_api_kernel_2.cpp
         sockets/sockets_extensions.cpp
         sockets/sockets_kernel_2.cpp
         sockstreambuf/sockstreambuf.cpp
         sockstreambuf/sockstreambuf_unbuffered.cpp
         server/server_kernel.cpp
         server/server_iostream.cpp
         server/server_http.cpp
         threads/multithreaded_object_extension.cpp
         threads/threaded_object_extension.cpp
         threads/threads_kernel_1.cpp
         threads/threads_kernel_2.cpp
         threads/threads_kernel_shared.cpp
         threads/thread_pool_extension.cpp
         timer/timer.cpp
         stack_trace.cpp
         )

140
141
142
      # we want to link to the right stuff depending on our platform.  
      if (WIN32 AND NOT CYGWIN) ###############################################################################
         if (DLIB_NO_GUI_SUPPORT)
143
            set (dlib_needed_libraries ws2_32 winmm)
144
         else()
145
            set (dlib_needed_libraries ws2_32 winmm comctl32 gdi32 imm32)
146
147
148
149
150
151
152
         endif()
      elseif(APPLE) ############################################################################
         find_library(pthreadlib pthread)
         set (dlib_needed_libraries ${pthreadlib})

         if (NOT DLIB_NO_GUI_SUPPORT)
            find_library(xlib X11)
Davis King's avatar
Davis King committed
153
154
155
156
            # Make sure X11 is in the include path.  Note that we look for
            # Xlocale.h rather than Xlib.h because it avoids finding a partial
            # copy of the X11 headers on systems with anaconda installed.
            find_path(xlib_path Xlocale.h
157
158
               PATHS 
               /Developer/SDKs/MacOSX10.4u.sdk/usr/X11R6/include
Davis King's avatar
Davis King committed
159
               /opt/local/include
160
161
162
163
164
165
166
               PATH_SUFFIXES X11
               )
            if (xlib AND xlib_path)
               get_filename_component(x11_path ${xlib_path} PATH CACHE)
               include_directories(${x11_path})
               set(dlib_needed_libraries ${dlib_needed_libraries} ${xlib} )
            else()
167
168
               message(" *****************************************************************************")
               message(" *** DLIB GUI SUPPORT DISABLED BECAUSE X11 DEVELOPMENT LIBRARIES NOT FOUND ***")
169
170
               message(" *** Make sure XQuartz is installed if you want GUI support.               ***")
               message(" *** You can download XQuartz from: http://xquartz.macosforge.org/landing/ ***")
171
               message(" *****************************************************************************")
172
173
               set(DLIB_NO_GUI_SUPPORT ON CACHE STRING ${DLIB_NO_GUI_SUPPORT_STR} FORCE )
            endif()
174
175
         endif()

176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
         mark_as_advanced(pthreadlib xlib xlib_path x11_path)
      else () ##################################################################################
         find_library(pthreadlib pthread)
         set (dlib_needed_libraries ${pthreadlib})

         # link to the nsl library if it exists.  this is something you need sometimes 
         find_library(nsllib nsl)
         if (nsllib)
            set (dlib_needed_libraries ${dlib_needed_libraries} ${nsllib})
         endif ()

         # link to the socket library if it exists.  this is something you need on solaris
         find_library(socketlib socket)
         if (socketlib)
            set (dlib_needed_libraries ${dlib_needed_libraries} ${socketlib})
         endif ()

         if (NOT DLIB_NO_GUI_SUPPORT)
            include(FindX11)
            if (X11_FOUND)
               include_directories(${X11_INCLUDE_DIR})
               set (dlib_needed_libraries ${dlib_needed_libraries} ${X11_LIBRARIES})
            else()
199
200
               message(" *****************************************************************************")
               message(" *** DLIB GUI SUPPORT DISABLED BECAUSE X11 DEVELOPMENT LIBRARIES NOT FOUND ***")
201
202
               message(" *** Make sure libx11-dev is installed if you want GUI support.            ***")
               message(" *** On Ubuntu run: sudo apt-get install libx11-dev                        ***")
203
               message(" *****************************************************************************")
204
205
               set(DLIB_NO_GUI_SUPPORT ON CACHE STRING ${DLIB_NO_GUI_SUPPORT_STR} FORCE )
            endif()
206
207
         endif()

208
209
         mark_as_advanced(nsllib pthreadlib socketlib)
      endif () ##################################################################################
210

211
212
213
214
215
216
217
218
219
220
221
222
      if (NOT DLIB_NO_GUI_SUPPORT)
         set(source_files ${source_files}
            gui_widgets/fonts.cpp
            gui_widgets/widgets.cpp
            gui_widgets/drawable.cpp
            gui_widgets/canvas_drawing.cpp
            gui_widgets/style.cpp
            gui_widgets/base_widgets.cpp
            gui_core/gui_core_kernel_1.cpp
            gui_core/gui_core_kernel_2.cpp
            )
      endif()
223

224
      INCLUDE (CheckFunctionExists)
225

226
      if (DLIB_PNG_SUPPORT)
227
         # try to find libpng 
Davis King's avatar
Davis King committed
228
         find_package(PNG QUIET)
229
230
         # Make sure there isn't something wrong with the version of LIBPNG
         # installed on this system.  
231
232
233
234
         if (PNG_FOUND)
            set(CMAKE_REQUIRED_LIBRARIES ${PNG_LIBRARY})
            CHECK_FUNCTION_EXISTS(png_create_read_struct LIBPNG_IS_GOOD)
         endif()
235
         if (PNG_FOUND AND LIBPNG_IS_GOOD)
236
237
238
            include_directories(${PNG_INCLUDE_DIR})
            set (dlib_needed_libraries ${dlib_needed_libraries} ${PNG_LIBRARY})
         else()
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
            # If we can't find libpng then statically compile it in.
            include_directories(external/libpng external/zlib)
            set(source_files ${source_files}
               external/libpng/png.c
               external/libpng/pngerror.c
               external/libpng/pngget.c
               external/libpng/pngmem.c
               external/libpng/pngpread.c
               external/libpng/pngread.c
               external/libpng/pngrio.c
               external/libpng/pngrtran.c
               external/libpng/pngrutil.c
               external/libpng/pngset.c
               external/libpng/pngtrans.c
               external/libpng/pngwio.c
               external/libpng/pngwrite.c
               external/libpng/pngwtran.c
               external/libpng/pngwutil.c
               external/zlib/adler32.c
               external/zlib/compress.c
               external/zlib/crc32.c
               external/zlib/deflate.c
               external/zlib/gzclose.c
               external/zlib/gzlib.c
               external/zlib/gzread.c
               external/zlib/gzwrite.c
               external/zlib/infback.c
               external/zlib/inffast.c
               external/zlib/inflate.c
               external/zlib/inftrees.c
               external/zlib/trees.c
               external/zlib/uncompr.c
               external/zlib/zutil.c
               )
273
         endif()
274
275
276
277
         set(source_files ${source_files}
            image_loader/png_loader.cpp
            image_saver/save_png.cpp
            )
278
      endif()
279

280
      if (DLIB_JPEG_SUPPORT)
281
         # try to find libjpeg 
282
         find_package(JPEG QUIET)
283
         # Make sure there isn't something wrong with the version of libjpeg 
284
285
         # installed on this system.  Also don't use the installed libjpeg
         # if this is an APPLE system because apparently it's broken (as of 2015/01/01).
286
287
288
289
         if (JPEG_FOUND)
            set(CMAKE_REQUIRED_LIBRARIES ${JPEG_LIBRARY})
            CHECK_FUNCTION_EXISTS(jpeg_read_header LIBJPEG_IS_GOOD)
         endif()
290
         if (JPEG_FOUND AND LIBJPEG_IS_GOOD AND NOT APPLE)
291
292
293
            include_directories(${JPEG_INCLUDE_DIR})
            set (dlib_needed_libraries ${dlib_needed_libraries} ${JPEG_LIBRARY})
         else()
294
            # If we can't find libjpeg then statically compile it in.
295
            add_definitions(-DDLIB_JPEG_STATIC)
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
            set(source_files ${source_files}
                  external/libjpeg/jcomapi.cpp
                  external/libjpeg/jdapimin.cpp
                  external/libjpeg/jdapistd.cpp
                  external/libjpeg/jdatasrc.cpp
                  external/libjpeg/jdcoefct.cpp
                  external/libjpeg/jdcolor.cpp
                  external/libjpeg/jddctmgr.cpp
                  external/libjpeg/jdhuff.cpp
                  external/libjpeg/jdinput.cpp
                  external/libjpeg/jdmainct.cpp
                  external/libjpeg/jdmarker.cpp
                  external/libjpeg/jdmaster.cpp
                  external/libjpeg/jdmerge.cpp
                  external/libjpeg/jdphuff.cpp
                  external/libjpeg/jdpostct.cpp
                  external/libjpeg/jdsample.cpp
                  external/libjpeg/jerror.cpp
                  external/libjpeg/jidctflt.cpp
                  external/libjpeg/jidctfst.cpp
                  external/libjpeg/jidctint.cpp
                  external/libjpeg/jidctred.cpp
                  external/libjpeg/jmemmgr.cpp
                  external/libjpeg/jmemnobs.cpp
                  external/libjpeg/jquant1.cpp
                  external/libjpeg/jquant2.cpp
Davis King's avatar
Davis King committed
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
                  external/libjpeg/jutils.cpp  
                  external/libjpeg/jcapimin.cpp
                  external/libjpeg/jdatadst.cpp
                  external/libjpeg/jcparam.cpp
                  external/libjpeg/jcapistd.cpp
                  external/libjpeg/jcmarker.cpp
                  external/libjpeg/jcinit.cpp
                  external/libjpeg/jcmaster.cpp
                  external/libjpeg/jcdctmgr.cpp
                  external/libjpeg/jccoefct.cpp  
                  external/libjpeg/jccolor.cpp  
                  external/libjpeg/jchuff.cpp  
                  external/libjpeg/jcmainct.cpp  
                  external/libjpeg/jcphuff.cpp  
                  external/libjpeg/jcprepct.cpp  
                  external/libjpeg/jcsample.cpp
                  external/libjpeg/jfdctint.cpp
                  external/libjpeg/jfdctflt.cpp
                  external/libjpeg/jfdctfst.cpp
                  )
342
         endif()
343
344
         set(source_files ${source_files}
            image_loader/jpeg_loader.cpp
Davis King's avatar
Davis King committed
345
            image_saver/save_jpeg.cpp
346
            )
347
348
      endif()

349

350
351
352
      if (DLIB_USE_BLAS OR DLIB_USE_LAPACK)
         # Try to find BLAS and LAPACK 
         include(cmake_find_blas.txt)
353

354
355
356
357
358
359
         if (DLIB_USE_BLAS)
            if (blas_found)
               set (dlib_needed_libraries ${dlib_needed_libraries} ${blas_libraries})
            else()
               set(DLIB_USE_BLAS OFF CACHE STRING ${DLIB_USE_BLAS_STR} FORCE )
            endif()
360
361
         endif()

362
363
364
365
366
367
         if (DLIB_USE_LAPACK)
            if (lapack_found)
               set (dlib_needed_libraries ${dlib_needed_libraries} ${lapack_libraries})
            else()
               set(DLIB_USE_LAPACK OFF CACHE STRING ${DLIB_USE_LAPACK_STR} FORCE )
            endif()
368
         endif()
369
370
371
      endif()


372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
      if (DLIB_USE_CUDA)
         find_package(CUDA)

         if (CUDA_FOUND)

            if (CUDA_VERSION_STRING LESS "7.0")
               message(FATAL_ERROR "dlib requires CUDA version 7.0 or higher")
            endif()

            message(STATUS "Looking for cuDNN install...")
            # Look for cudnn, we will look in the same place as other CUDA
            # libraries and also a few other places as well.
            find_path(cudnn_include cudnn.h
               HINTS ${CUDA_INCLUDE_DIRS}
               PATHS /usr/local/include
               )
            get_filename_component(cudnn_hint_path ${CUDA_CUBLAS_LIBRARIES} PATH)
            find_library(cudnn cudnn
               HINTS ${cudnn_hint_path}
               PATHS /usr/local/lib64 
                     /usr/local/cuda/lib64
                     /usr/local/cuda/lib
                     /usr/local/lib
               )
            mark_as_advanced(cudnn cudnn_include)
         endif()

399
         if (CUDA_FOUND AND cudnn AND cudnn_include AND COMPILER_CAN_DO_CPP_11)
400
401
402
403
404
405
            message(STATUS "Found cuDNN: " ${cudnn})
            set(source_files ${source_files} dnn/cuda.cu )
            set(dlib_needed_libraries ${dlib_needed_libraries} ${CUDA_CUBLAS_LIBRARIES} ${cudnn})
            include_directories(${cudnn_include})
         else()
            set(DLIB_USE_CUDA OFF CACHE STRING ${DLIB_USE_BLAS_STR} FORCE )
406
407
408
409
410
411
            if (NOT cudnn OR NOT cudnn_include)
               message(STATUS "cuDNN NOT FOUND.  DLIB WILL NOT USE CUDA.")
            endif()
            if (NOT COMPILER_CAN_DO_CPP_11)
               message(STATUS "Dlib CUDA support requires C++11 but your compiler doesn't support it.")
            endif()
412
413
414
         endif()
      endif()
      
415

416
417
418
419
420
421
422
423
424
425
426
427
      if (DLIB_LINK_WITH_SQLITE3)
         find_library(sqlite sqlite3)
         # make sure sqlite3.h is in the include path
         find_path(sqlite_path sqlite3.h)
         if (sqlite AND sqlite_path)
            get_filename_component(sqlite_path2 ${sqlite_path} PATH CACHE)
            include_directories(${sqlite_path2})
            set(dlib_needed_libraries ${dlib_needed_libraries} ${sqlite} )
         else()
            set(DLIB_LINK_WITH_SQLITE3 OFF CACHE STRING ${DLIB_LINK_WITH_SQLITE3_STR} FORCE )
         endif()
         mark_as_advanced(sqlite sqlite_path sqlite_path2)
428
429
430
      endif()


431

432
      if (DLIB_USE_FFTW)
433
434
435
436
         find_library(fftw fftw3)
         # make sure fftw3.h is in the include path
         find_path(fftw_path fftw3.h)
         if (fftw AND fftw_path)
437
            include_directories(${fftw_path})
438
439
            set(dlib_needed_libraries ${dlib_needed_libraries} ${fftw} )
         else()
440
            set(DLIB_USE_FFTW OFF CACHE STRING ${DLIB_LINK_WITH_SQLITE3_STR} FORCE )
441
         endif()
442
         mark_as_advanced(fftw fftw_path)
443
444
      endif()

445

446
447
448
449
450
451
452
453

      # Tell CMake to build dlib via add_library()/cuda_add_library()
      if (DLIB_USE_CUDA)
         cuda_add_library(dlib STATIC ${source_files} )
      else()
         add_library(dlib STATIC ${source_files} )
      endif()
      target_link_libraries(dlib ${dlib_needed_libraries} )
454
      if (UNIX AND NOT DLIB_IN_PROJECT_BUILD)
455
456
457
458
459
460
         if (DLIB_USE_CUDA)
            cuda_add_library(dlib-shared SHARED ${source_files} )
         else()
            add_library(dlib-shared SHARED ${source_files} )
         endif()
         target_link_libraries(dlib-shared ${dlib_needed_libraries} )
461
      endif()
462

463
   endif ()  ##### end of if NOT DLIB_ISO_CPP_ONLY ##########################################################
464

465
   # Install the library
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
   if (NOT DLIB_IN_PROJECT_BUILD)
       if(UNIX)
           set_target_properties(dlib-shared PROPERTIES
                                        OUTPUT_NAME dlib 
                                        VERSION ${VERSION})
           install(TARGETS dlib dlib-shared
                   EXPORT dlib 
                   RUNTIME DESTINATION bin # Windows (including cygwin) considers .dll to be runtime artifacts
                   LIBRARY DESTINATION lib
                   ARCHIVE DESTINATION lib)
       else()
           install(TARGETS dlib
                   EXPORT dlib 
                   RUNTIME DESTINATION bin # Windows considers .dll to be runtime artifacts
                   LIBRARY DESTINATION lib
                   ARCHIVE DESTINATION lib)
       endif()
483
484
485
486
487

       install(DIRECTORY ${CMAKE_SOURCE_DIR}/ DESTINATION include/dlib
               FILES_MATCHING PATTERN "*.h"
               REGEX "${CMAKE_CURRENT_BINARY_DIR}" EXCLUDE)

488
489

       configure_file(${CMAKE_SOURCE_DIR}/../dlib/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)
490
491
492
       # overwrite config.h with the configured one
       install(FILES ${CMAKE_CURRENT_BINARY_DIR}/config.h DESTINATION include/dlib)

493
494
495
       configure_file(${CMAKE_SOURCE_DIR}/../dlib/revision.h.in ${CMAKE_CURRENT_BINARY_DIR}/revision.h)
       install(FILES ${CMAKE_CURRENT_BINARY_DIR}/revision.h DESTINATION include/dlib)

496
       install(FILES "LICENSE.txt" DESTINATION share/doc/dlib)
497

498
499
500
501
502
503
504
505
       ## Config.cmake generation and installation

       set(ConfigPackageLocation lib/cmake/dlib)
       install(EXPORT dlib
            NAMESPACE dlib::
            DESTINATION ${ConfigPackageLocation})

       set(CONF_INSTALL_PATH "\${dlib_CMAKE_DIR}/../../../")
506
       configure_file(dlibConfig.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/config/dlibConfig.cmake" @ONLY)
507
508
509

       include(CMakePackageConfigHelpers)
       write_basic_package_version_file(
510
           "${CMAKE_CURRENT_BINARY_DIR}/config/dlibConfigVersion.cmake"
511
512
513
514
515
           VERSION ${VERSION}
           COMPATIBILITY AnyNewerVersion
           )

       install(FILES 
516
517
                    "${CMAKE_CURRENT_BINARY_DIR}/config/dlibConfig.cmake" 
                    "${CMAKE_CURRENT_BINARY_DIR}/config/dlibConfigVersion.cmake" 
518
               DESTINATION ${ConfigPackageLocation})
519
520
   endif()

521

522
523
524
   #test for some things that really should be true about the compiler
   include(TestForSTDNamespace)
   include(TestForANSIStreamHeaders)
525
526


527
   if (DLIB_PNG_SUPPORT AND NOT DLIB_ISO_CPP_ONLY)
528
529
530
531
      add_global_define(DLIB_PNG_SUPPORT)
   else()
      remove_global_define(DLIB_PNG_SUPPORT)
   endif()
532

533
   if (DLIB_JPEG_SUPPORT AND NOT DLIB_ISO_CPP_ONLY)
534
535
536
537
      add_global_define(DLIB_JPEG_SUPPORT)
   else()
      remove_global_define(DLIB_JPEG_SUPPORT)
   endif()
538

539
   if (DLIB_USE_FFTW AND NOT DLIB_ISO_CPP_ONLY)
540
541
542
543
544
      add_global_define(DLIB_USE_FFTW)
   else()
      remove_global_define(DLIB_USE_FFTW)
   endif()

545
546
547
548
549
550
   if (DLIB_USE_CUDA AND NOT DLIB_ISO_CPP_ONLY)
      add_global_define(DLIB_USE_CUDA)
   else()
      remove_global_define(DLIB_USE_CUDA)
   endif()

551

552
553
554
555
556
   if (DLIB_USE_BLAS AND blas_found)
      add_global_define(DLIB_USE_BLAS)
   else()
      remove_global_define(DLIB_USE_BLAS)
   endif()
557

558
559
560
561
562
   if (DLIB_USE_LAPACK AND lapack_found)
      add_global_define(DLIB_USE_LAPACK)
   else()
      remove_global_define(DLIB_USE_LAPACK)
   endif()
563

564

565
566
567
568
569
   if (DLIB_ISO_CPP_ONLY)
      add_global_define(DLIB_ISO_CPP_ONLY)
   else()
      remove_global_define(DLIB_ISO_CPP_ONLY)
   endif()
570
571


572
573
574
575
576
   if (DLIB_NO_GUI_SUPPORT)
      add_global_define(DLIB_NO_GUI_SUPPORT)
   else()
      remove_global_define(DLIB_NO_GUI_SUPPORT)
   endif()
577

578
579
580
581
582
   if (DLIB_ENABLE_STACK_TRACE)
      add_global_define(DLIB_ENABLE_STACK_TRACE)
   else()
      remove_global_define(DLIB_ENABLE_STACK_TRACE)
   endif()
583
584


585
586
587
588
589
   if (DLIB_ENABLE_ASSERTS)
      add_global_define(ENABLE_ASSERTS)
   else()
      remove_global_define(ENABLE_ASSERTS)
   endif()
590

591
592

endif()