6
6
########################################################################
7
7
# Project setup
8
8
########################################################################
9
- cmake_minimum_required (VERSION 2.8.12 )
9
+ cmake_minimum_required (VERSION 2.8...4.0 )
10
10
project (czmq )
11
11
enable_language (C )
12
12
enable_testing ()
13
13
14
- set (SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR} " )
14
+ include (GNUInstallDirs )
15
+
15
16
set (CMAKE_EXPORT_COMPILE_COMMANDS 1 )
16
17
# Select flags
17
18
if (MSVC )
@@ -30,7 +31,7 @@ set(pkg_config_names_private "")
30
31
# options
31
32
########################################################################
32
33
if (NOT CMAKE_BUILD_TYPE )
33
- if (EXISTS "${SOURCE_DIR } /.git" )
34
+ if (EXISTS "${PROJECT_SOURCE_DIR } /.git" )
34
35
set (CMAKE_BUILD_TYPE Debug )
35
36
else ()
36
37
# http://xit0.org/2013/04/cmake-use-git-branch-and-commit-details-in-project/
@@ -79,7 +80,7 @@ endif()
79
80
include (CheckSymbolExists )
80
81
check_symbol_exists (AI_V4MAPPED "czmq.h" HAVE_DECL_AI_V4MAPPED )
81
82
82
- file (REMOVE "${SOURCE_DIR } /src/platform.h" )
83
+ file (REMOVE "${PROJECT_SOURCE_DIR } /src/platform.h" )
83
84
84
85
file (WRITE "${PROJECT_BINARY_DIR} /platform.h.in" "
85
86
#cmakedefine HAVE_LINUX_WIRELESS_H
@@ -97,7 +98,7 @@ if (WIN32)
97
98
#so the sources have to be compiled as c++
98
99
if (MSVC AND NOT (CMAKE_CXX_COMPILER_ID MATCHES "Clang" ))
99
100
enable_language (CXX )
100
- file (GLOB sources "${SOURCE_DIR } /src/*.c" )
101
+ file (GLOB sources "${PROJECT_SOURCE_DIR } /src/*.c" )
101
102
set_source_files_properties (
102
103
${sources}
103
104
PROPERTIES LANGUAGE CXX
@@ -123,7 +124,7 @@ if (CYGWIN)
123
124
set (MORE_LIBRARIES )
124
125
endif ()
125
126
126
- list (APPEND CMAKE_MODULE_PATH "${SOURCE_DIR } " )
127
+ list (APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR } " )
127
128
set (OPTIONAL_LIBRARIES )
128
129
set (OPTIONAL_LIBRARIES_STATIC )
129
130
@@ -340,14 +341,14 @@ IF (ENABLE_DRAFTS)
340
341
ENDIF (ENABLE_DRAFTS )
341
342
342
343
source_group ("Header Files" FILES ${czmq_headers} )
343
- install (FILES ${czmq_headers} DESTINATION include )
344
+ install (FILES ${czmq_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} )
344
345
345
346
########################################################################
346
347
# library
347
348
########################################################################
348
349
349
350
350
- include_directories ("${SOURCE_DIR } /src" "${SOURCE_DIR } /include" "${PROJECT_BINARY_DIR} " )
351
+ include_directories ("${PROJECT_SOURCE_DIR } /src" "${PROJECT_SOURCE_DIR } /include" "${PROJECT_BINARY_DIR} " )
351
352
set (czmq_sources
352
353
src/zactor.c
353
354
src/zarmour.c
@@ -448,15 +449,12 @@ if (CZMQ_BUILD_SHARED)
448
449
449
450
install (TARGETS czmq
450
451
EXPORT czmq-targets
451
- LIBRARY DESTINATION "lib${LIB_SUFFIX} " # .so file
452
- ARCHIVE DESTINATION "lib${LIB_SUFFIX} " # .lib file
453
- RUNTIME DESTINATION bin # .dll file
454
452
)
455
453
456
454
target_include_directories (czmq
457
455
PUBLIC
458
456
$< BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include>
459
- $< INSTALL_INTERFACE:include >
457
+ $< INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >
460
458
)
461
459
endif ()
462
460
@@ -485,15 +483,12 @@ if (CZMQ_BUILD_STATIC)
485
483
486
484
install (TARGETS czmq-static
487
485
EXPORT czmq-targets
488
- LIBRARY DESTINATION "lib${LIB_SUFFIX} " # .so file
489
- ARCHIVE DESTINATION "lib${LIB_SUFFIX} " # .lib file
490
- RUNTIME DESTINATION bin # .dll file
491
486
)
492
487
493
488
target_include_directories (czmq-static
494
489
PUBLIC
495
490
$< BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include>
496
- $< INSTALL_INTERFACE:include >
491
+ $< INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >
497
492
)
498
493
target_compile_definitions (czmq-static
499
494
PUBLIC CZMQ_STATIC
@@ -510,21 +505,21 @@ include(${CMAKE_CURRENT_SOURCE_DIR}/src/CMakeLists-local.txt) # Optional project
510
505
set (VERSION "4.2.2" )
511
506
set (prefix "${CMAKE_INSTALL_PREFIX} " )
512
507
set (exec_prefix "\$ {prefix}" )
513
- set (libdir "\$ {prefix}/lib ${LIB_SUFFIX } " )
514
- set (includedir "\$ {prefix}/include " )
508
+ set (libdir "\$ {prefix}/${CMAKE_INSTALL_LIBDIR } " )
509
+ set (includedir "\$ {prefix}/${CMAKE_INSTALL_INCLUDEDIR} " )
515
510
IF (ENABLE_DRAFTS )
516
511
set (pkg_config_defines "-DCZMQ_BUILD_DRAFT_API=1" )
517
512
ELSE (ENABLE_DRAFTS )
518
513
set (pkg_config_defines "" )
519
514
ENDIF (ENABLE_DRAFTS )
520
515
configure_file (
521
- "${SOURCE_DIR } /src/libczmq.pc.in"
522
- "${SOURCE_DIR } /src/libczmq.pc"
516
+ "${PROJECT_SOURCE_DIR } /src/libczmq.pc.in"
517
+ "${PROJECT_SOURCE_DIR } /src/libczmq.pc"
523
518
@ONLY )
524
519
525
520
install (
526
- FILES "${SOURCE_DIR } /src/libczmq.pc"
527
- DESTINATION "lib ${LIB_SUFFIX } /pkgconfig"
521
+ FILES "${PROJECT_SOURCE_DIR } /src/libczmq.pc"
522
+ DESTINATION "${CMAKE_INSTALL_LIBDIR } /pkgconfig"
528
523
)
529
524
530
525
########################################################################
@@ -534,8 +529,7 @@ include(CMakePackageConfigHelpers)
534
529
if (WIN32 )
535
530
set (CMAKECONFIG_INSTALL_DIR "CMake" CACHE STRING "install path for czmqConfig.cmake" )
536
531
else ()
537
- # GNUInstallDirs "DATADIR" wrong here; CMake search path wants "share".
538
- set (CMAKECONFIG_INSTALL_DIR "share/cmake/czmq" CACHE STRING "install path for czmqConfig.cmake" )
532
+ set (CMAKECONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR} /cmake/czmq" CACHE STRING "install path for czmqConfig.cmake" )
539
533
endif ()
540
534
541
535
if (NOT CMAKE_VERSION VERSION_LESS 3.0 )
@@ -560,7 +554,7 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/czmqConfig.cmake
560
554
########################################################################
561
555
add_executable (
562
556
zmakecert
563
- "${SOURCE_DIR } /src/zmakecert.c"
557
+ "${PROJECT_SOURCE_DIR } /src/zmakecert.c"
564
558
)
565
559
if (TARGET czmq )
566
560
target_link_libraries (
@@ -579,12 +573,10 @@ target_link_libraries(
579
573
${OPTIONAL_LIBRARIES_STATIC}
580
574
)
581
575
endif ()
582
- install (TARGETS zmakecert
583
- RUNTIME DESTINATION bin
584
- )
576
+ install (TARGETS zmakecert )
585
577
add_executable (
586
578
zsp
587
- "${SOURCE_DIR } /src/zsp.c"
579
+ "${PROJECT_SOURCE_DIR } /src/zsp.c"
588
580
)
589
581
if (TARGET czmq )
590
582
target_link_libraries (
@@ -605,7 +597,7 @@ target_link_libraries(
605
597
endif ()
606
598
add_executable (
607
599
test_randof
608
- "${SOURCE_DIR } /src/test_randof.c"
600
+ "${PROJECT_SOURCE_DIR } /src/test_randof.c"
609
601
)
610
602
if (TARGET czmq )
611
603
target_link_libraries (
@@ -626,7 +618,7 @@ target_link_libraries(
626
618
endif ()
627
619
add_executable (
628
620
czmq_selftest
629
- "${SOURCE_DIR } /src/czmq_selftest.c"
621
+ "${PROJECT_SOURCE_DIR } /src/czmq_selftest.c"
630
622
)
631
623
if (TARGET czmq )
632
624
target_link_libraries (
@@ -762,83 +754,21 @@ include(CTest)
762
754
# cleanup
763
755
########################################################################
764
756
if (NOT TARGET distclean )
765
- add_custom_target (distclean @echo Cleaning for source distribution )
766
- endif ()
767
-
768
- set (cmake_generated ${PROJECT_BINARY_DIR} /CMakeCache.txt
769
- ${PROJECT_BINARY_DIR} /cmake_install.cmake
770
- ${PROJECT_BINARY_DIR} /Makefile
771
- ${PROJECT_BINARY_DIR} /CMakeFiles
772
- ${PROJECT_BINARY_DIR} /CTestTestfile.cmake
773
- ${PROJECT_BINARY_DIR} /DartConfiguration.tcl
774
- ${PROJECT_BINARY_DIR} /Testing
775
- ${PROJECT_BINARY_DIR} /compile_commands.json
776
- ${PROJECT_BINARY_DIR} /platform.h
777
- ${PROJECT_BINARY_DIR} /src/libczmq.pc
778
- ${PROJECT_BINARY_DIR} /src/libczmq.so
779
- ${PROJECT_BINARY_DIR} /src/czmq_selftest
780
- ${PROJECT_BINARY_DIR} /src/zmakecert
781
- ${PROJECT_BINARY_DIR} /src/zsp
782
- ${PROJECT_BINARY_DIR} /src/test_randof
783
- ${PROJECT_BINARY_DIR} /src/czmq_selftest
784
- )
785
-
786
- add_custom_command (
787
- DEPENDS clean
788
- COMMENT "distribution clean"
789
- COMMAND rm
790
- ARGS -rf CMakeTmp ${cmake_generated}
791
- TARGET distclean
792
- )
793
-
794
- include (ClangFormat OPTIONAL )
795
-
796
- ########################################################################
797
- # summary
798
- ########################################################################
799
- message ("" )
800
- message (STATUS "******************* Configuration Summary *******************" )
801
- message (STATUS "General:" )
802
- message (STATUS " Version : ${VERSION} " )
803
- message (STATUS " System : ${CMAKE_SYSTEM_NAME} " )
804
- message (STATUS " C compiler : ${CMAKE_C_COMPILER} " )
805
- message (STATUS " Debug C flags : ${CMAKE_C_FLAGS_DEBUG} ${CMAKE_C_FLAGS} " )
806
- message (STATUS " Release C flags : ${CMAKE_C_FLAGS_RELEASE} ${CMAKE_C_FLAGS} " )
807
- message (STATUS " Build type : ${CMAKE_BUILD_TYPE} " )
808
- message (STATUS " Static build : ${CZMQ_BUILD_STATIC} " )
809
- message (STATUS " Shared build : ${CZMQ_BUILD_SHARED} " )
810
- IF (ENABLE_DRAFTS )
811
- message (STATUS " Draft API : Yes" )
812
- ELSE (ENABLE_DRAFTS )
813
- message (STATUS " Draft API : No" )
814
- ENDIF (ENABLE_DRAFTS )
815
- message (STATUS "" )
816
- message (STATUS "Dependencies:" )
817
- include (FeatureSummary )
818
- feature_summary (WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES )
819
- message (STATUS "" )
820
- message (STATUS "Install:" )
821
- message (STATUS " Install prefix :" "${CMAKE_INSTALL_PREFIX} " )
822
- message (STATUS "" )
823
- message (STATUS "************************* Options ***************************" )
824
- message (STATUS "Options:" )
825
- message (STATUS " Use the Draft API (default = yes):" )
826
- message (STATUS " -DENABLE-DRAFTS=[yes|no]" )
827
- message (STATUS "" )
828
- message (STATUS "*************************************************************" )
829
- message (STATUS "Configuration complete! Now procced with:" )
830
- message (STATUS " 'make' compile the project" )
831
- message (STATUS " 'make test' run the project's selftest" )
832
- message (STATUS " 'make install' install the project to ${CMAKE_INSTALL_PREFIX} " )
833
- message (STATUS "" )
834
- message (STATUS "Further options are:" )
835
- message (STATUS " 'ctest -V run test with verbose logging" )
836
- message (STATUS " 'ctest -R <test_name>' run a specific test" )
837
- message (STATUS " 'ctest -T memcheck' run the project's selftest with" )
838
- message (STATUS " valgrind to check for memory leaks" )
839
- message (STATUS "" )
840
-
841
- ################################################################################
842
- # THIS FILE IS 100% GENERATED BY ZPROJECT; DO NOT EDIT EXCEPT EXPERIMENTALLY #
843
- # Read the zproject/README.md for information about making permanent changes. #
844
- ################################################################################
757
+ if (CMAKE_VERSION VERSION_LESS 3.17 )
758
+ set (rm_command rm -rf )
759
+ else ()
760
+ set (rm_command ${CMAKE_COMMAND} -E rm -rf -- )
761
+ endif ()
762
+ set (cmake_generated ${PROJECT_BINARY_DIR} /CMakeCache.txt
763
+ ${PROJECT_BINARY_DIR} /cmake_install.cmake
764
+ ${PROJECT_BINARY_DIR} /Makefile
765
+ ${PROJECT_BINARY_DIR} /CMakeFiles
766
+ ${PROJECT_BINARY_DIR} /CTestTestfile.cmake
767
+ ${PROJECT_BINARY_DIR} /DartConfiguration.tcl
768
+ ${PROJECT_BINARY_DIR} /Testing
769
+ ${PROJECT_BINARY_DIR} /compile_commands.json
770
+ ${PROJECT_BINARY_DIR} /platform.h
771
+ ${PROJECT_BINARY_DIR} /src/libczmq.pc
772
+ ${PROJECT_BINARY_DIR} /src/libczmq.so
773
+ ${PROJECT_BINARY_DIR} /src/czmq_selftest
774
+ .for project .main
0 commit comments