6f882ba3b2
Since APP_VERSION is different for every commit and almost all file include settings.hpp, the whole project has to be rebuilt for every commit. With this, hopefully, this can be greatly reduced and only changed files need to be rebuilt. This will also help ccache
103 lines
2.6 KiB
CMake
103 lines
2.6 KiB
CMake
#
|
|
# Configure src
|
|
#
|
|
|
|
# Source tree {{{
|
|
|
|
file(GLOB_RECURSE files RELATIVE ${CMAKE_CURRENT_LIST_DIR} *.c[p]*)
|
|
list(REMOVE_ITEM files main.cpp ipc.cpp)
|
|
|
|
configure_file(
|
|
${CMAKE_CURRENT_LIST_DIR}/settings.cpp.cmake
|
|
${CMAKE_BINARY_DIR}/generated-sources/settings.cpp
|
|
ESCAPE_QUOTES)
|
|
|
|
list(APPEND files ${CMAKE_BINARY_DIR}/generated-sources/settings.cpp)
|
|
|
|
if(NOT ENABLE_ALSA)
|
|
list(REMOVE_ITEM files modules/alsa.cpp)
|
|
list(REMOVE_ITEM files adapters/alsa/control.cpp)
|
|
list(REMOVE_ITEM files adapters/alsa/mixer.cpp)
|
|
endif()
|
|
if(NOT ENABLE_CURL)
|
|
list(REMOVE_ITEM files modules/github.cpp)
|
|
list(REMOVE_ITEM files utils/http.cpp)
|
|
endif()
|
|
if(NOT ENABLE_MPD)
|
|
list(REMOVE_ITEM files modules/mpd.cpp)
|
|
list(REMOVE_ITEM files adapters/mpd.cpp)
|
|
endif()
|
|
if(NOT ENABLE_NETWORK)
|
|
list(REMOVE_ITEM files modules/network.cpp)
|
|
list(REMOVE_ITEM files adapters/net.cpp)
|
|
list(REMOVE_ITEM files adapters/net_iw.cpp)
|
|
list(REMOVE_ITEM files adapters/net_nl.cpp)
|
|
endif()
|
|
if(WITH_LIBNL)
|
|
list(REMOVE_ITEM files adapters/net_iw.cpp)
|
|
else()
|
|
list(REMOVE_ITEM files adapters/net_nl.cpp)
|
|
endif()
|
|
if(NOT ENABLE_I3)
|
|
list(REMOVE_ITEM files modules/i3.cpp)
|
|
list(REMOVE_ITEM files utils/i3.cpp)
|
|
endif()
|
|
if(NOT ENABLE_PULSEAUDIO)
|
|
list(REMOVE_ITEM files modules/pulseaudio.cpp)
|
|
list(REMOVE_ITEM files adapters/pulseaudio.cpp)
|
|
endif()
|
|
if(NOT WITH_XRANDR)
|
|
list(REMOVE_ITEM files x11/extensions/randr.cpp)
|
|
endif()
|
|
if(NOT WITH_XCOMPOSITE)
|
|
list(REMOVE_ITEM files x11/extensions/composite.cpp)
|
|
endif()
|
|
if(NOT WITH_XKB)
|
|
list(REMOVE_ITEM files x11/extensions/xkb.cpp)
|
|
list(REMOVE_ITEM files modules/xkeyboard.cpp)
|
|
endif()
|
|
if(NOT WITH_XRM)
|
|
list(REMOVE_ITEM files x11/xresources.cpp)
|
|
endif()
|
|
if(NOT WITH_XCURSOR)
|
|
list(REMOVE_ITEM files x11/cursor.cpp)
|
|
endif()
|
|
# }}}
|
|
|
|
# Target: polybar {{{
|
|
|
|
add_library(poly STATIC ${files})
|
|
target_include_directories(poly PUBLIC ${dirs})
|
|
target_link_libraries(poly ${libs} Threads::Threads)
|
|
target_compile_options(poly PUBLIC $<$<CXX_COMPILER_ID:GNU>:$<$<CONFIG:MinSizeRel>:-flto>>)
|
|
|
|
add_executable(polybar main.cpp)
|
|
target_link_libraries(polybar poly)
|
|
|
|
install(TARGETS polybar
|
|
DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
COMPONENT runtime)
|
|
|
|
# }}}
|
|
# Target: polybar-msg {{{
|
|
|
|
if(BUILD_IPC_MSG)
|
|
add_executable(polybar-msg
|
|
ipc.cpp
|
|
utils/env.cpp
|
|
utils/file.cpp
|
|
utils/string.cpp)
|
|
target_include_directories(polybar-msg PRIVATE ${dirs})
|
|
target_compile_options(polybar-msg PUBLIC $<$<CXX_COMPILER_ID:GNU>:$<$<CONFIG:MinSizeRel>:-flto>>)
|
|
|
|
install(TARGETS polybar-msg
|
|
DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
COMPONENT runtime)
|
|
|
|
endif()
|
|
|
|
# }}}
|
|
|
|
# Export source file list so that it can be used for test compilation
|
|
set(files ${files} PARENT_SCOPE)
|