66########################################################################
77# Project setup
88########################################################################
9- cmake_minimum_required (VERSION 2.8.12 )
9+ cmake_minimum_required (VERSION 2.8...4.0 )
1010project (czmq)
1111enable_language (C)
1212enable_testing ()
1313
14- set (SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR} " )
14+ include (GNUInstallDirs)
15+
1516set (CMAKE_EXPORT_COMPILE_COMMANDS 1)
1617# Select flags
1718if (MSVC )
@@ -30,7 +31,7 @@ set(pkg_config_names_private "")
3031# options
3132########################################################################
3233if (NOT CMAKE_BUILD_TYPE )
33- if (EXISTS "${SOURCE_DIR } /.git" )
34+ if (EXISTS "${PROJECT_SOURCE_DIR } /.git" )
3435 set (CMAKE_BUILD_TYPE Debug)
3536 else ()
3637# http://xit0.org/2013/04/cmake-use-git-branch-and-commit-details-in-project/
@@ -79,7 +80,7 @@ endif()
7980include (CheckSymbolExists)
8081check_symbol_exists(AI_V4MAPPED "czmq.h" HAVE_DECL_AI_V4MAPPED)
8182
82- file (REMOVE "${SOURCE_DIR } /src/platform.h" )
83+ file (REMOVE "${PROJECT_SOURCE_DIR } /src/platform.h" )
8384
8485file (WRITE "${PROJECT_BINARY_DIR} /platform.h.in" "
8586#cmakedefine HAVE_LINUX_WIRELESS_H
@@ -97,7 +98,7 @@ if (WIN32)
9798 #so the sources have to be compiled as c++
9899 if (MSVC AND NOT (CMAKE_CXX_COMPILER_ID MATCHES "Clang" ))
99100 enable_language (CXX)
100- file (GLOB sources "${SOURCE_DIR } /src/*.c" )
101+ file (GLOB sources "${PROJECT_SOURCE_DIR } /src/*.c" )
101102 set_source_files_properties (
102103 ${sources}
103104 PROPERTIES LANGUAGE CXX
@@ -123,7 +124,7 @@ if (CYGWIN)
123124 set (MORE_LIBRARIES)
124125endif ()
125126
126- list (APPEND CMAKE_MODULE_PATH "${SOURCE_DIR } " )
127+ list (APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR } " )
127128set (OPTIONAL_LIBRARIES)
128129set (OPTIONAL_LIBRARIES_STATIC)
129130
@@ -340,14 +341,14 @@ IF (ENABLE_DRAFTS)
340341ENDIF (ENABLE_DRAFTS)
341342
342343source_group ("Header Files" FILES ${czmq_headers} )
343- install (FILES ${czmq_headers} DESTINATION include )
344+ install (FILES ${czmq_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} )
344345
345346########################################################################
346347# library
347348########################################################################
348349
349350
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} " )
351352set (czmq_sources
352353 src/zactor.c
353354 src/zarmour.c
@@ -448,15 +449,12 @@ if (CZMQ_BUILD_SHARED)
448449
449450 install (TARGETS czmq
450451 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
454452 )
455453
456454 target_include_directories (czmq
457455 PUBLIC
458456 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include >
459- $<INSTALL_INTERFACE:include >
457+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >
460458 )
461459endif ()
462460
@@ -485,15 +483,12 @@ if (CZMQ_BUILD_STATIC)
485483
486484 install (TARGETS czmq-static
487485 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
491486 )
492487
493488 target_include_directories (czmq-static
494489 PUBLIC
495490 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include >
496- $<INSTALL_INTERFACE:include >
491+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >
497492 )
498493 target_compile_definitions (czmq-static
499494 PUBLIC CZMQ_STATIC
@@ -510,21 +505,21 @@ include(${CMAKE_CURRENT_SOURCE_DIR}/src/CMakeLists-local.txt) # Optional project
510505set (VERSION "4.2.2" )
511506set (prefix "${CMAKE_INSTALL_PREFIX} " )
512507set (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} " )
515510IF (ENABLE_DRAFTS)
516511 set (pkg_config_defines "-DCZMQ_BUILD_DRAFT_API=1" )
517512ELSE (ENABLE_DRAFTS)
518513 set (pkg_config_defines "" )
519514ENDIF (ENABLE_DRAFTS)
520515configure_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"
523518@ONLY)
524519
525520install (
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"
528523)
529524
530525########################################################################
@@ -534,8 +529,7 @@ include(CMakePackageConfigHelpers)
534529if (WIN32 )
535530 set (CMAKECONFIG_INSTALL_DIR "CMake" CACHE STRING "install path for czmqConfig.cmake" )
536531else ()
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" )
539533endif ()
540534
541535if (NOT CMAKE_VERSION VERSION_LESS 3.0)
@@ -560,7 +554,7 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/czmqConfig.cmake
560554########################################################################
561555add_executable (
562556 zmakecert
563- "${SOURCE_DIR } /src/zmakecert.c"
557+ "${PROJECT_SOURCE_DIR } /src/zmakecert.c"
564558)
565559if (TARGET czmq)
566560target_link_libraries (
@@ -579,12 +573,10 @@ target_link_libraries(
579573 ${OPTIONAL_LIBRARIES_STATIC}
580574)
581575endif ()
582- install (TARGETS zmakecert
583- RUNTIME DESTINATION bin
584- )
576+ install (TARGETS zmakecert)
585577add_executable (
586578 zsp
587- "${SOURCE_DIR } /src/zsp.c"
579+ "${PROJECT_SOURCE_DIR } /src/zsp.c"
588580)
589581if (TARGET czmq)
590582target_link_libraries (
@@ -605,7 +597,7 @@ target_link_libraries(
605597endif ()
606598add_executable (
607599 test_randof
608- "${SOURCE_DIR } /src/test_randof.c"
600+ "${PROJECT_SOURCE_DIR } /src/test_randof.c"
609601)
610602if (TARGET czmq)
611603target_link_libraries (
@@ -626,7 +618,7 @@ target_link_libraries(
626618endif ()
627619add_executable (
628620 czmq_selftest
629- "${SOURCE_DIR } /src/czmq_selftest.c"
621+ "${PROJECT_SOURCE_DIR } /src/czmq_selftest.c"
630622)
631623if (TARGET czmq)
632624target_link_libraries (
@@ -762,83 +754,21 @@ include(CTest)
762754# cleanup
763755########################################################################
764756if (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