66########################################################################
77# Project setup
88########################################################################
9- cmake_minimum_required (VERSION 2.8.12 )
9+ cmake_minimum_required (VERSION 2.8...4.0 )
1010project (zyre)
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/
@@ -76,7 +77,7 @@ if (NOT HAVE_NET_IF_H)
7677 CHECK_INCLUDE_FILE("net/if.h" HAVE_NET_IF_H)
7778endif ()
7879
79- file (REMOVE "${SOURCE_DIR } /src/platform.h" )
80+ file (REMOVE "${PROJECT_SOURCE_DIR } /src/platform.h" )
8081
8182file (WRITE "${PROJECT_BINARY_DIR} /platform.h.in" "
8283#cmakedefine HAVE_LINUX_WIRELESS_H
@@ -93,7 +94,7 @@ if (WIN32)
9394 #so the sources have to be compiled as c++
9495 if (MSVC AND NOT (CMAKE_CXX_COMPILER_ID MATCHES "Clang" ))
9596 enable_language (CXX)
96- file (GLOB sources "${SOURCE_DIR } /src/*.c" )
97+ file (GLOB sources "${PROJECT_SOURCE_DIR } /src/*.c" )
9798 set_source_files_properties (
9899 ${sources}
99100 PROPERTIES LANGUAGE CXX
@@ -119,7 +120,7 @@ if (CYGWIN)
119120 set (MORE_LIBRARIES)
120121endif ()
121122
122- list (APPEND CMAKE_MODULE_PATH "${SOURCE_DIR } " )
123+ list (APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR } " )
123124set (OPTIONAL_LIBRARIES)
124125set (OPTIONAL_LIBRARIES_STATIC)
125126
@@ -186,14 +187,14 @@ set (zyre_headers
186187)
187188
188189source_group ("Header Files" FILES ${zyre_headers} )
189- install (FILES ${zyre_headers} DESTINATION include )
190+ install (FILES ${zyre_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} )
190191
191192########################################################################
192193# library
193194########################################################################
194195
195196
196- include_directories ("${SOURCE_DIR } /src" "${SOURCE_DIR } /include" "${PROJECT_BINARY_DIR} " )
197+ include_directories ("${PROJECT_SOURCE_DIR } /src" "${PROJECT_SOURCE_DIR } /include" "${PROJECT_BINARY_DIR} " )
197198set (zyre_sources
198199 src/zyre.c
199200 src/zyre_event.c
@@ -254,15 +255,12 @@ if (ZYRE_BUILD_SHARED)
254255
255256 install (TARGETS zyre
256257 EXPORT zyre-targets
257- LIBRARY DESTINATION "lib${LIB_SUFFIX} " # .so file
258- ARCHIVE DESTINATION "lib${LIB_SUFFIX} " # .lib file
259- RUNTIME DESTINATION bin # .dll file
260258 )
261259
262260 target_include_directories (zyre
263261 PUBLIC
264262 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include >
265- $<INSTALL_INTERFACE:include >
263+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >
266264 )
267265endif ()
268266
@@ -291,15 +289,12 @@ if (ZYRE_BUILD_STATIC)
291289
292290 install (TARGETS zyre-static
293291 EXPORT zyre-targets
294- LIBRARY DESTINATION "lib${LIB_SUFFIX} " # .so file
295- ARCHIVE DESTINATION "lib${LIB_SUFFIX} " # .lib file
296- RUNTIME DESTINATION bin # .dll file
297292 )
298293
299294 target_include_directories (zyre-static
300295 PUBLIC
301296 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include >
302- $<INSTALL_INTERFACE:include >
297+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >
303298 )
304299 target_compile_definitions (zyre-static
305300 PUBLIC ZYRE_STATIC
@@ -316,21 +311,21 @@ include(${CMAKE_CURRENT_SOURCE_DIR}/src/CMakeLists-local.txt) # Optional project
316311set (VERSION "2.0.1" )
317312set (prefix "${CMAKE_INSTALL_PREFIX} " )
318313set (exec_prefix "\$ {prefix}" )
319- set (libdir "\$ {prefix}/lib ${LIB_SUFFIX } " )
320- set (includedir "\$ {prefix}/include " )
314+ set (libdir "\$ {prefix}/${CMAKE_INSTALL_LIBDIR } " )
315+ set (includedir "\$ {prefix}/${CMAKE_INSTALL_INCLUDEDIR} " )
321316IF (ENABLE_DRAFTS)
322317 set (pkg_config_defines "-DZYRE_BUILD_DRAFT_API=1" )
323318ELSE (ENABLE_DRAFTS)
324319 set (pkg_config_defines "" )
325320ENDIF (ENABLE_DRAFTS)
326321configure_file (
327- "${SOURCE_DIR } /src/libzyre.pc.in"
328- "${SOURCE_DIR } /src/libzyre.pc"
322+ "${PROJECT_SOURCE_DIR } /src/libzyre.pc.in"
323+ "${PROJECT_SOURCE_DIR } /src/libzyre.pc"
329324@ONLY)
330325
331326install (
332- FILES "${SOURCE_DIR } /src/libzyre.pc"
333- DESTINATION "lib ${LIB_SUFFIX } /pkgconfig"
327+ FILES "${PROJECT_SOURCE_DIR } /src/libzyre.pc"
328+ DESTINATION "${CMAKE_INSTALL_LIBDIR } /pkgconfig"
334329)
335330
336331########################################################################
@@ -340,8 +335,7 @@ include(CMakePackageConfigHelpers)
340335if (WIN32 )
341336 set (CMAKECONFIG_INSTALL_DIR "CMake" CACHE STRING "install path for zyreConfig.cmake" )
342337else ()
343- # GNUInstallDirs "DATADIR" wrong here; CMake search path wants "share".
344- set (CMAKECONFIG_INSTALL_DIR "share/cmake/zyre" CACHE STRING "install path for zyreConfig.cmake" )
338+ set (CMAKECONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR} /cmake/zyre" CACHE STRING "install path for zyreConfig.cmake" )
345339endif ()
346340
347341if (NOT CMAKE_VERSION VERSION_LESS 3.0)
@@ -366,7 +360,7 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/zyreConfig.cmake
366360########################################################################
367361add_executable (
368362 perf_local
369- "${SOURCE_DIR } /src/perf_local.c"
363+ "${PROJECT_SOURCE_DIR } /src/perf_local.c"
370364)
371365if (TARGET zyre)
372366target_link_libraries (
@@ -389,7 +383,7 @@ target_link_libraries(
389383endif ()
390384add_executable (
391385 perf_remote
392- "${SOURCE_DIR } /src/perf_remote.c"
386+ "${PROJECT_SOURCE_DIR } /src/perf_remote.c"
393387)
394388if (TARGET zyre)
395389target_link_libraries (
@@ -412,7 +406,7 @@ target_link_libraries(
412406endif ()
413407add_executable (
414408 zpinger
415- "${SOURCE_DIR } /src/zpinger.c"
409+ "${PROJECT_SOURCE_DIR } /src/zpinger.c"
416410)
417411if (TARGET zyre)
418412target_link_libraries (
@@ -433,12 +427,10 @@ target_link_libraries(
433427 ${OPTIONAL_LIBRARIES_STATIC}
434428)
435429endif ()
436- install (TARGETS zpinger
437- RUNTIME DESTINATION bin
438- )
430+ install (TARGETS zpinger)
439431add_executable (
440432 ztester_beacon
441- "${SOURCE_DIR } /src/ztester_beacon.c"
433+ "${PROJECT_SOURCE_DIR } /src/ztester_beacon.c"
442434)
443435if (TARGET zyre)
444436target_link_libraries (
@@ -461,7 +453,7 @@ target_link_libraries(
461453endif ()
462454add_executable (
463455 ztester_gossip
464- "${SOURCE_DIR } /src/ztester_gossip.c"
456+ "${PROJECT_SOURCE_DIR } /src/ztester_gossip.c"
465457)
466458if (TARGET zyre)
467459target_link_libraries (
@@ -484,7 +476,7 @@ target_link_libraries(
484476endif ()
485477add_executable (
486478 zyre_selftest
487- "${SOURCE_DIR } /src/zyre_selftest.c"
479+ "${PROJECT_SOURCE_DIR } /src/zyre_selftest.c"
488480)
489481if (TARGET zyre)
490482target_link_libraries (
@@ -579,37 +571,36 @@ include(CTest)
579571# cleanup
580572########################################################################
581573if (NOT TARGET distclean)
582- add_custom_target (distclean @echo Cleaning for source distribution)
574+ if (CMAKE_VERSION VERSION_LESS 3.17)
575+ set (rm_command rm -rf)
576+ else ()
577+ set (rm_command ${CMAKE_COMMAND} -E rm -rf --)
578+ endif ()
579+ set (cmake_generated ${PROJECT_BINARY_DIR} /CMakeCache.txt
580+ ${PROJECT_BINARY_DIR} /cmake_install.cmake
581+ ${PROJECT_BINARY_DIR} /Makefile
582+ ${PROJECT_BINARY_DIR} /CMakeFiles
583+ ${PROJECT_BINARY_DIR} /CTestTestfile.cmake
584+ ${PROJECT_BINARY_DIR} /DartConfiguration.tcl
585+ ${PROJECT_BINARY_DIR} /Testing
586+ ${PROJECT_BINARY_DIR} /compile_commands.json
587+ ${PROJECT_BINARY_DIR} /platform.h
588+ ${PROJECT_BINARY_DIR} /src/libzyre.pc
589+ ${PROJECT_BINARY_DIR} /src/libzyre.so
590+ ${PROJECT_BINARY_DIR} /src/zyre_selftest
591+ ${PROJECT_BINARY_DIR} /src/perf_local
592+ ${PROJECT_BINARY_DIR} /src/perf_remote
593+ ${PROJECT_BINARY_DIR} /src/zpinger
594+ ${PROJECT_BINARY_DIR} /src/ztester_beacon
595+ ${PROJECT_BINARY_DIR} /src/ztester_gossip
596+ ${PROJECT_BINARY_DIR} /src/zyre_selftest
597+ )
598+ add_custom_target (distclean
599+ COMMAND ${rm_command} CMakeTmp ${cmake_generated}
600+ COMMENT Cleaning for source distribution
601+ )
583602endif ()
584603
585- set (cmake_generated ${PROJECT_BINARY_DIR} /CMakeCache.txt
586- ${PROJECT_BINARY_DIR} /cmake_install.cmake
587- ${PROJECT_BINARY_DIR} /Makefile
588- ${PROJECT_BINARY_DIR} /CMakeFiles
589- ${PROJECT_BINARY_DIR} /CTestTestfile.cmake
590- ${PROJECT_BINARY_DIR} /DartConfiguration.tcl
591- ${PROJECT_BINARY_DIR} /Testing
592- ${PROJECT_BINARY_DIR} /compile_commands.json
593- ${PROJECT_BINARY_DIR} /platform.h
594- ${PROJECT_BINARY_DIR} /src/libzyre.pc
595- ${PROJECT_BINARY_DIR} /src/libzyre.so
596- ${PROJECT_BINARY_DIR} /src/zyre_selftest
597- ${PROJECT_BINARY_DIR} /src/perf_local
598- ${PROJECT_BINARY_DIR} /src/perf_remote
599- ${PROJECT_BINARY_DIR} /src/zpinger
600- ${PROJECT_BINARY_DIR} /src/ztester_beacon
601- ${PROJECT_BINARY_DIR} /src/ztester_gossip
602- ${PROJECT_BINARY_DIR} /src/zyre_selftest
603- )
604-
605- add_custom_command (
606- DEPENDS clean
607- COMMENT "distribution clean"
608- COMMAND rm
609- ARGS -rf CMakeTmp ${cmake_generated}
610- TARGET distclean
611- )
612-
613604include (ClangFormat OPTIONAL )
614605
615606########################################################################
0 commit comments