build: Move non-macro variables into settings.cpp

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
This commit is contained in:
patrick96 2019-10-28 01:35:18 +01:00 committed by Patrick Ziegler
parent c6194c06eb
commit 6f882ba3b2
4 changed files with 79 additions and 51 deletions

View File

@ -4,8 +4,8 @@
#include <string>
#include <vector>
#define APP_NAME "@PROJECT_NAME@"
#cmakedefine APP_VERSION "@APP_VERSION@"
extern const char* const APP_NAME;
extern const char* const APP_VERSION;
#cmakedefine01 ENABLE_ALSA
#cmakedefine01 ENABLE_MPD
@ -59,54 +59,20 @@ static const int SINK_PRIORITY_SCREEN{2};
static const int SINK_PRIORITY_TRAY{3};
static const int SINK_PRIORITY_MODULE{4};
static constexpr const char* ALSA_SOUNDCARD{"@SETTING_ALSA_SOUNDCARD@"};
static constexpr const char* BSPWM_SOCKET_PATH{"@SETTING_BSPWM_SOCKET_PATH@"};
static constexpr const char* BSPWM_STATUS_PREFIX{"@SETTING_BSPWM_STATUS_PREFIX@"};
static constexpr const char* CONNECTION_TEST_IP{"@SETTING_CONNECTION_TEST_IP@"};
static constexpr const char* PATH_ADAPTER{"@SETTING_PATH_ADAPTER@"};
static constexpr const char* PATH_BACKLIGHT{"@SETTING_PATH_BACKLIGHT@"};
static constexpr const char* PATH_BATTERY{"@SETTING_PATH_BATTERY@"};
static constexpr const char* PATH_CPU_INFO{"@SETTING_PATH_CPU_INFO@"};
static constexpr const char* PATH_MEMORY_INFO{"@SETTING_PATH_MEMORY_INFO@"};
static constexpr const char* PATH_MESSAGING_FIFO{"@SETTING_PATH_MESSAGING_FIFO@"};
static constexpr const char* PATH_TEMPERATURE_INFO{"@SETTING_PATH_TEMPERATURE_INFO@"};
extern const char* const ALSA_SOUNDCARD;
extern const char* const BSPWM_SOCKET_PATH;
extern const char* const BSPWM_STATUS_PREFIX;
extern const char* const CONNECTION_TEST_IP;
extern const char* const PATH_ADAPTER;
extern const char* const PATH_BACKLIGHT;
extern const char* const PATH_BATTERY;
extern const char* const PATH_CPU_INFO;
extern const char* const PATH_MEMORY_INFO;
extern const char* const PATH_MESSAGING_FIFO;
extern const char* const PATH_TEMPERATURE_INFO;
const auto version_details = [](const std::vector<std::string>& args) {
for (auto&& arg : args) {
if (arg.compare(0, 3, "-vv") == 0)
return true;
}
return false;
};
extern bool version_details(const std::vector<std::string>& args);
// clang-format off
const auto print_build_info = [](bool extended = false) {
printf("%s %s\n\n", APP_NAME, APP_VERSION);
printf("Features: %calsa %ccurl %ci3 %cmpd %cnetwork(%s) %cpulseaudio %cxkeyboard\n",
(ENABLE_ALSA ? '+' : '-'),
(ENABLE_CURL ? '+' : '-'),
(ENABLE_I3 ? '+' : '-'),
(ENABLE_MPD ? '+' : '-'),
(ENABLE_NETWORK ? '+' : '-'),
WIRELESS_LIB,
(ENABLE_PULSEAUDIO ? '+' : '-'),
(ENABLE_XKEYBOARD ? '+' : '-'));
if (extended) {
printf("\n");
printf("X extensions: %crandr (%cmonitors) %ccomposite %cxkb %cxrm %cxcursor\n",
(WITH_XRANDR ? '+' : '-'),
(WITH_XRANDR_MONITORS ? '+' : '-'),
(WITH_XCOMPOSITE ? '+' : '-'),
(WITH_XKB ? '+' : '-'),
(WITH_XRM ? '+' : '-'),
(WITH_XCURSOR ? '+' : '-'));
printf("\n");
printf("Build type: @CMAKE_BUILD_TYPE@\n");
printf("Compiler: @CMAKE_CXX_COMPILER@\n");
printf("Compiler flags: @CMAKE_CXX_FLAGS@ ${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE_UPPER}}\n");
printf("Linker flags: @CMAKE_EXE_LINKER_FLAGS@ ${CMAKE_EXE_LINKER_FLAGS_${CMAKE_BUILD_TYPE_UPPER}}\n");
}
};
// clang-format on
extern void print_build_info(bool extended = false);
// vim:ft=cpp

View File

@ -7,6 +7,13 @@
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)
@ -55,7 +62,6 @@ endif()
if(NOT WITH_XCURSOR)
list(REMOVE_ITEM files x11/cursor.cpp)
endif()
# }}}
# Target: polybar {{{

56
src/settings.cpp.cmake Normal file
View File

@ -0,0 +1,56 @@
#include "settings.hpp"
const char* const APP_NAME{"@PROJECT_NAME@"};
const char* const APP_VERSION{"@APP_VERSION@"};
const char* const ALSA_SOUNDCARD{"@SETTING_ALSA_SOUNDCARD@"};
const char* const BSPWM_SOCKET_PATH{"@SETTING_BSPWM_SOCKET_PATH@"};
const char* const BSPWM_STATUS_PREFIX{"@SETTING_BSPWM_STATUS_PREFIX@"};
const char* const CONNECTION_TEST_IP{"@SETTING_CONNECTION_TEST_IP@"};
const char* const PATH_ADAPTER{"@SETTING_PATH_ADAPTER@"};
const char* const PATH_BACKLIGHT{"@SETTING_PATH_BACKLIGHT@"};
const char* const PATH_BATTERY{"@SETTING_PATH_BATTERY@"};
const char* const PATH_CPU_INFO{"@SETTING_PATH_CPU_INFO@"};
const char* const PATH_MEMORY_INFO{"@SETTING_PATH_MEMORY_INFO@"};
const char* const PATH_MESSAGING_FIFO{"@SETTING_PATH_MESSAGING_FIFO@"};
const char* const PATH_TEMPERATURE_INFO{"@SETTING_PATH_TEMPERATURE_INFO@"};
bool version_details(const std::vector<std::string>& args) {
for (auto&& arg : args) {
if (arg.compare(0, 3, "-vv") == 0)
return true;
}
return false;
}
// clang-format off
void print_build_info(bool extended) {
printf("%s %s\n\n", APP_NAME, APP_VERSION);
printf("Features: %calsa %ccurl %ci3 %cmpd %cnetwork(%s) %cpulseaudio %cxkeyboard\n",
(ENABLE_ALSA ? '+' : '-'),
(ENABLE_CURL ? '+' : '-'),
(ENABLE_I3 ? '+' : '-'),
(ENABLE_MPD ? '+' : '-'),
(ENABLE_NETWORK ? '+' : '-'),
WIRELESS_LIB,
(ENABLE_PULSEAUDIO ? '+' : '-'),
(ENABLE_XKEYBOARD ? '+' : '-'));
if (extended) {
printf("\n");
printf("X extensions: %crandr (%cmonitors) %ccomposite %cxkb %cxrm %cxcursor\n",
(WITH_XRANDR ? '+' : '-'),
(WITH_XRANDR_MONITORS ? '+' : '-'),
(WITH_XCOMPOSITE ? '+' : '-'),
(WITH_XKB ? '+' : '-'),
(WITH_XRM ? '+' : '-'),
(WITH_XCURSOR ? '+' : '-'));
printf("\n");
printf("Build type: @CMAKE_BUILD_TYPE@\n");
printf("Compiler: @CMAKE_CXX_COMPILER@\n");
printf("Compiler flags: @CMAKE_CXX_FLAGS@ ${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE_UPPER}}\n");
printf("Linker flags: @CMAKE_EXE_LINKER_FLAGS@ ${CMAKE_EXE_LINKER_FLAGS_${CMAKE_BUILD_TYPE_UPPER}}\n");
}
}
// clang-format on
// vim:ft=cpp

View File

@ -14,7 +14,7 @@ http_downloader::http_downloader(int connection_timeout) {
curl_easy_setopt(m_curl, CURLOPT_CONNECTTIMEOUT, connection_timeout);
curl_easy_setopt(m_curl, CURLOPT_FOLLOWLOCATION, true);
curl_easy_setopt(m_curl, CURLOPT_NOSIGNAL, true);
curl_easy_setopt(m_curl, CURLOPT_USERAGENT, "polybar/" APP_VERSION);
curl_easy_setopt(m_curl, CURLOPT_USERAGENT, "polybar/" + string{APP_VERSION});
curl_easy_setopt(m_curl, CURLOPT_WRITEFUNCTION, http_downloader::write);
curl_easy_setopt(m_curl, CURLOPT_FORBID_REUSE, true);
}