From f3b225adf7bf8ea6a4b52c92f0e2b71b825b240e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Sun, 3 Feb 2019 19:27:03 +0100 Subject: [PATCH] make: let pkg_check_module() create targets --- CMakeLists.txt | 79 ++++++++++-------------------------------- modules/CMakeLists.txt | 43 ++++++++--------------- 2 files changed, 33 insertions(+), 89 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 85a5954..9a5a32d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,31 +23,23 @@ set(CMAKE_C_FLAGS "-Wall -Werror ${CMAKE_C_FLAGS}") find_package(Threads REQUIRED) find_package(PkgConfig REQUIRED) -pkg_check_modules(XCB REQUIRED xcb xcb-aux xcb-cursor xcb-event xcb-ewmh - xcb-randr xcb-render) -pkg_check_modules(XCB_ERRORS xcb-errors) -pkg_check_modules(WAYLAND REQUIRED wayland-client wayland-cursor wlroots) -pkg_check_modules(FONTCONFIG REQUIRED fontconfig) -pkg_check_modules(CAIRO REQUIRED cairo cairo-xcb cairo-ft) -pkg_check_modules(YAML REQUIRED yaml-0.1) +pkg_check_modules(xcb REQUIRED IMPORTED_TARGET + xcb xcb-aux xcb-cursor xcb-event xcb-ewmh xcb-randr xcb-render) +pkg_check_modules(xcb-errors IMPORTED_TARGET xcb-errors) +pkg_check_modules(wayland REQUIRED IMPORTED_TARGET + wayland-client wayland-cursor wlroots) +pkg_check_modules(fontconfig REQUIRED IMPORTED_TARGET fontconfig) +pkg_check_modules(cairo REQUIRED IMPORTED_TARGET cairo cairo-xcb cairo-ft) +pkg_check_modules(yaml REQUIRED IMPORTED_TARGET yaml-0.1) add_library(xcb-stuff STATIC EXCLUDE_FROM_ALL xcb.c xcb.h) +if (XCB_ERRORS_FOUND) + target_compile_definitions(xcb-stuff PRIVATE HAVE_XCB_ERRORS) +endif () add_library(bar-xcb STATIC EXCLUDE_FROM_ALL bar/xcb.c bar/xcb.h) - -target_compile_options(bar-xcb PRIVATE - ${XCB_CFLAGS_OTHER} - ${XCB_ERRORS_CFLAGS_OTHER} - ${CAIRO_CFLAGS_OTHER} - ) - -target_include_directories(bar-xcb PRIVATE - ${XCB_INCLUDE_DIRS} - ${XCB_ERRORS_INCLUDE_DIRS} - ${CAIRO_INCLUDE_DIRS} - ) - -target_link_libraries(bar-xcb xcb-stuff ${XCB_LIBRARIES} ${XCB_ERRORS_LIBRARIES}) +target_link_libraries(bar-xcb + xcb-stuff PkgConfig::xcb PkgConfig::xcb-errors PkgConfig::cairo) add_custom_command( OUTPUT wlr-layer-shell-unstable-v1.c @@ -91,19 +83,8 @@ target_include_directories(wayland-protocols PUBLIC ${CMAKE_CURRENT_BINARY_DIR}) add_library(bar-wayland STATIC EXCLUDE_FROM_ALL bar/wayland.c bar/wayland.h) target_compile_definitions(bar-wayland PRIVATE _GNU_SOURCE) -target_compile_options(bar-wayland PRIVATE - ${WAYLAND_CFLAGS_OTHER} - ${CAIRO_CFLAGS_OTHER} - ) - -target_include_directories(bar-wayland PRIVATE - ${CURRENT_BINARY_DIR} - ${WAYLAND_INCLUDE_DIRS} - ${CAIRO_INCLUDE_DIRS} - ) - -target_link_libraries(bar-wayland wayland-protocols ${WAYLAND_LIBRARIES}) - +target_link_libraries( + bar-wayland wayland-protocols PkgConfig::wayland PkgConfig::cairo) add_executable(f00bar config.c config.h @@ -122,36 +103,14 @@ add_executable(f00bar bar/bar.c bar/private.h bar/backend.h ) -target_link_libraries(f00bar xcb-stuff bar-xcb bar-wayland) +target_link_libraries(f00bar + bar-xcb bar-wayland + PkgConfig::cairo PkgConfig::fontconfig PkgConfig::yaml + ${CMAKE_THREAD_LIBS_INIT} ${CMAKE_DL_LIBS}) # Make global symbols in f00bar visible to dlopen:ed plugins set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -rdynamic") -if (XCB_ERRORS_FOUND) - target_compile_definitions(f00bar PRIVATE HAVE_XCB_ERRORS) -endif () - -target_compile_options(f00bar PRIVATE - ${FONTCONFIG_CFLAGS_OTHER} - ${CAIRO_CFLAGS_OTHER} - ${YAML_CFLAGS_OTHER} - ) - -target_include_directories(f00bar PRIVATE - ${FONTCONFIG_INCLUDE_DIRS} - ${CAIRO_INCLUDE_DIRS} - ${YAML_INCLUDE_DIRS} - ) - -target_link_libraries(f00bar - ${CMAKE_THREAD_LIBS_INIT} - ${CMAKE_DL_LIBS} - - ${FONTCONFIG_LIBRARIES} - ${CAIRO_LIBRARIES} - ${YAML_LIBRARIES} - ) - set_property(TARGET f00bar PROPERTY INSTALL_RPATH \$ORIGIN/../lib/f00bar) set_property(TARGET f00bar PROPERTY BUILD_RPATH "\$ORIGIN/modules;\$ORIGIN/particles;\$ORIGIN/decorations") diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt index d4dc54f..0a92ac9 100644 --- a/modules/CMakeLists.txt +++ b/modules/CMakeLists.txt @@ -1,9 +1,8 @@ cmake_minimum_required(VERSION 3.7) add_library(module-sdk INTERFACE) -target_compile_options(module-sdk INTERFACE ${CAIRO_CFLAGS_OTHER}) -target_include_directories(module-sdk INTERFACE ${CAIRO_INCLUDE_DIRS}) -target_link_libraries(module-sdk INTERFACE ${CMAKE_THREAD_LIBS_INIT}) +target_link_libraries( + module-sdk INTERFACE PkgConfig::cairo ${CMAKE_THREAD_LIBS_INIT}) if (CORE_PLUGINS_AS_SHARED_LIBRARIES) set(lib_type MODULE) @@ -13,58 +12,44 @@ endif () set(CMAKE_SHARED_${lib_type}_PREFIX module_) -pkg_check_modules(ALSA REQUIRED alsa) +pkg_check_modules(alsa REQUIRED IMPORTED_TARGET alsa) add_library(alsa ${lib_type} alsa.c) -target_compile_options(alsa PRIVATE ${ALSA_CFLAGS_OTHER}) -target_include_directories(alsa PRIVATE ${ALSA_INCLUDE_DIRS}) -target_link_libraries(alsa module-sdk ${ALSA_LIBRARIES}) +target_link_libraries(alsa module-sdk PkgConfig::alsa) -pkg_check_modules(UDEV REQUIRED libudev) +pkg_check_modules(udev REQUIRED IMPORTED_TARGET libudev) add_library(backlight ${lib_type} backlight.c) -target_compile_options(backlight PRIVATE ${UDEV_CFLAGS_OTHER}) -target_include_directories(backlight PRIVATE ${UDEV_INCLUDE_DIRS}) -target_link_libraries(backlight module-sdk ${UDEV_LIBRARIES}) +target_link_libraries(backlight module-sdk PkgConfig::udev) add_library(battery ${lib_type} battery.c) -target_compile_options(battery PRIVATE ${UDEV_CFLAGS_OTHER}) -target_include_directories(battery PRIVATE ${UDEV_INCLUDE_DIRS}) -target_link_libraries(battery module-sdk ${UDEV_LIBRARIES}) +target_link_libraries(battery module-sdk PkgConfig::udev) add_library(clock ${lib_type} clock.c) target_link_libraries(clock module-sdk) -pkg_check_modules(JSON REQUIRED json-c) +pkg_check_modules(json REQUIRED IMPORTED_TARGET json-c) find_file(I3_IPC_H i3/ipc.h) if (NOT I3_IPC_H) message(FATAL_ERROR "cannot find header file: i3/ipc.h") endif () add_library(i3 ${lib_type} i3.c) -target_compile_options(i3 PRIVATE ${JSON_CFLAGS_OTHER}) -target_include_directories(i3 PRIVATE ${JSON_INCLUDE_DIRS}) -target_link_libraries(i3 module-sdk dynlist ${JSON_LIBRARIES}) +target_link_libraries(i3 module-sdk dynlist PkgConfig::json) add_library(label ${lib_type} label.c) target_link_libraries(label module-sdk) -pkg_check_modules(MPD REQUIRED libmpdclient) +pkg_check_modules(mpd REQUIRED IMPORTED_TARGET libmpdclient) add_library(mpd ${lib_type} mpd.c) -target_compile_options(mpd PRIVATE ${MPD_CFLAGS_OTHER}) -target_include_directories(mpd PRIVATE ${MPD_INCLUDE_DIRS}) -target_link_libraries(mpd module-sdk ${MPD_LIBRARIES}) +target_link_libraries(mpd module-sdk PkgConfig::mpd) add_library(network ${lib_type} network.c) target_link_libraries(network module-sdk) add_library(removables ${lib_type} removables.c) -target_compile_options(removables PRIVATE ${UDEV_CFLAGS_OTHER}) -target_include_directories(removables PRIVATE ${UDEV_INCLUDE_DIRS}) -target_link_libraries(removables module-sdk dynlist ${UDEV_LIBRARIES}) +target_link_libraries(removables module-sdk dynlist PkgConfig::udev) -pkg_check_modules(XCB_XKB REQUIRED xcb-xkb) +pkg_check_modules(xkb REQUIRED IMPORTED_TARGET xcb-xkb) add_library(xkb ${lib_type} xkb.c) -target_compile_options(xkb PRIVATE ${XCB_XKB_CFLAGS_OTHER}) -target_include_directories(xkb PRIVATE ${XCB_XKB_INCLUDE_DIRS}) -target_link_libraries(xkb module-sdk ${XCB_XKB_LIBRARIES}) +target_link_libraries(xkb module-sdk PkgConfig::xkb) add_library(xwindow ${lib_type} xwindow.c) target_link_libraries(xwindow module-sdk)