diff --git a/meson.build b/meson.build index 867aa34d..e87bff97 100644 --- a/meson.build +++ b/meson.build @@ -117,6 +117,7 @@ dep_pthread = dependency('threads') add_project_arguments( cc.get_supported_arguments([ '-Werror=implicit-function-declaration', + '-Werror=missing-declarations', '-Werror=missing-prototypes', '-Werror=return-type', '-Werror=incompatible-pointer-types', @@ -130,6 +131,7 @@ add_project_arguments( add_project_arguments( cpp.get_supported_arguments([ + '-Werror=missing-declarations', '-Werror=return-type', '-Wno-unused-parameter', '-Qunused-arguments', diff --git a/src/cpu.cpp b/src/cpu.cpp index f48c6663..671de558 100644 --- a/src/cpu.cpp +++ b/src/cpu.cpp @@ -27,7 +27,7 @@ #include "file_utils.h" -void calculateCPUData(CPUData& cpuData, +static void calculateCPUData(CPUData& cpuData, unsigned long long int usertime, unsigned long long int nicetime, unsigned long long int systemtime, @@ -480,7 +480,7 @@ static bool find_input(const std::string& path, const char* input_prefix, std::s return false; } -CPUPowerData_k10temp* init_cpu_power_data_k10temp(const std::string path) { +static CPUPowerData_k10temp* init_cpu_power_data_k10temp(const std::string path) { auto powerData = std::make_unique(); std::string coreVoltageInput, coreCurrentInput; @@ -504,7 +504,7 @@ CPUPowerData_k10temp* init_cpu_power_data_k10temp(const std::string path) { return powerData.release(); } -CPUPowerData_zenpower* init_cpu_power_data_zenpower(const std::string path) { +static CPUPowerData_zenpower* init_cpu_power_data_zenpower(const std::string path) { auto powerData = std::make_unique(); std::string corePowerInput, socPowerInput; @@ -521,7 +521,7 @@ CPUPowerData_zenpower* init_cpu_power_data_zenpower(const std::string path) { return powerData.release(); } -CPUPowerData_rapl* init_cpu_power_data_rapl(const std::string path) { +static CPUPowerData_rapl* init_cpu_power_data_rapl(const std::string path) { auto powerData = std::make_unique(); std::string energyCounterPath = path + "/energy_uj"; diff --git a/src/dbus.cpp b/src/dbus.cpp index 3b3cccb3..7379af1f 100644 --- a/src/dbus.cpp +++ b/src/dbus.cpp @@ -45,14 +45,14 @@ static void assign_metadata_value(metadata& meta, const std::string& key, } } -std::string format_signal(const dbusmgr::DBusSignal& s) { +static std::string format_signal(const dbusmgr::DBusSignal& s) { std::stringstream ss; ss << "type='signal',interface='" << s.intf << "'"; ss << ",member='" << s.signal << "'"; return ss.str(); } -void parse_song_data(DBusMessageIter_wrap iter, metadata& meta){ +static void parse_song_data(DBusMessageIter_wrap iter, metadata& meta){ iter.string_map_for_each([&meta](const std::string& key, DBusMessageIter_wrap it) { std::string val; @@ -100,7 +100,7 @@ static void parse_mpris_properties(libdbus_loader& dbus, DBusMessage* msg, meta.valid = (meta.artists.size() || !meta.title.empty()); } -bool dbus_get_name_owner(dbusmgr::dbus_manager& dbus_mgr, +static bool dbus_get_name_owner(dbusmgr::dbus_manager& dbus_mgr, std::string& name_owner, const char* name) { auto reply = DBusMessage_wrap::new_method_call( @@ -116,7 +116,7 @@ bool dbus_get_name_owner(dbusmgr::dbus_manager& dbus_mgr, return true; } -bool dbus_get_player_property(dbusmgr::dbus_manager& dbus_mgr, metadata& meta, +static bool dbus_get_player_property(dbusmgr::dbus_manager& dbus_mgr, metadata& meta, const char* dest, const char* prop) { auto reply = DBusMessage_wrap::new_method_call(dest, "/org/mpris/MediaPlayer2", diff --git a/src/elfhacks.cpp b/src/elfhacks.cpp index eaf3342a..7cfc310e 100644 --- a/src/elfhacks.cpp +++ b/src/elfhacks.cpp @@ -44,6 +44,7 @@ int eh_set_rel_plt(eh_obj_t *obj, int p, const char *sym, void *val); int eh_iterate_rela_plt(eh_obj_t *obj, int p, eh_iterate_rel_callback_func callback, void *arg); int eh_iterate_rel_plt(eh_obj_t *obj, int p, eh_iterate_rel_callback_func callback, void *arg); +int eh_iterate_callback(struct dl_phdr_info *info, size_t size, void *argptr); int eh_find_sym_hash(eh_obj_t *obj, const char *name, eh_sym_t *sym); int eh_find_sym_gnu_hash(eh_obj_t *obj, const char *name, eh_sym_t *sym); diff --git a/src/gamepad.cpp b/src/gamepad.cpp index e2ac6695..c2ae49c5 100644 --- a/src/gamepad.cpp +++ b/src/gamepad.cpp @@ -17,7 +17,7 @@ int switch_count = 0; int bitdo_count = 0; std::string xbox_paths [2]{"gip","xpadneo"}; -bool operator<(const gamepad& a, const gamepad& b) +static bool operator<(const gamepad& a, const gamepad& b) { return a.name < b.name; } diff --git a/src/gl/inject_egl.cpp b/src/gl/inject_egl.cpp index 4e28cbff..1ad24d5b 100644 --- a/src/gl/inject_egl.cpp +++ b/src/gl/inject_egl.cpp @@ -15,7 +15,7 @@ using namespace MangoHud::GL; EXPORT_C_(void *) eglGetProcAddress(const char* procName); -void* get_egl_proc_address(const char* name) { +static void* get_egl_proc_address(const char* name) { void *func = nullptr; static void *(*pfn_eglGetProcAddress)(const char*) = nullptr; @@ -41,6 +41,7 @@ void* get_egl_proc_address(const char* name) { return func; } +EXPORT_C_(unsigned int) eglSwapBuffers( void* dpy, void* surf); EXPORT_C_(unsigned int) eglSwapBuffers( void* dpy, void* surf) { static int (*pfn_eglSwapBuffers)(void*, void*) = nullptr; @@ -82,6 +83,7 @@ static std::array name_to_funcptr_map = {{ #undef ADD_HOOK }}; +EXPORT_C_(void *) mangohud_find_egl_ptr(const char *name); EXPORT_C_(void *) mangohud_find_egl_ptr(const char *name) { if (is_blacklisted()) diff --git a/src/gl/inject_glx.cpp b/src/gl/inject_glx.cpp index abab6b12..507d56b1 100644 --- a/src/gl/inject_glx.cpp +++ b/src/gl/inject_glx.cpp @@ -31,7 +31,7 @@ static glx_loader glx; static std::atomic refcnt (0); -void* get_glx_proc_address(const char* name) { +static void* get_glx_proc_address(const char* name) { glx.Load(); void *func = nullptr; @@ -61,6 +61,7 @@ EXPORT_C_(void *) glXCreateContext(void *dpy, void *vis, void *shareList, int di return ctx; } +EXPORT_C_(void *) glXCreateContextAttribs(void *dpy, void *config,void *share_context, int direct, const int *attrib_list); EXPORT_C_(void *) glXCreateContextAttribs(void *dpy, void *config,void *share_context, int direct, const int *attrib_list) { glx.Load(); @@ -263,6 +264,7 @@ static std::array name_to_funcptr_map = {{ #undef ADD_HOOK }}; +EXPORT_C_(void *) mangohud_find_glx_ptr(const char *name); EXPORT_C_(void *) mangohud_find_glx_ptr(const char *name) { if (is_blacklisted()) diff --git a/src/hud_elements.cpp b/src/hud_elements.cpp index faedde7d..add994fe 100644 --- a/src/hud_elements.cpp +++ b/src/hud_elements.cpp @@ -27,7 +27,7 @@ using namespace std; // Cut from https://github.com/ocornut/imgui/pull/2943 // Probably move to ImGui -float SRGBToLinear(float in) +static float SRGBToLinear(float in) { if (in <= 0.04045f) return in / 12.92f; @@ -35,7 +35,7 @@ float SRGBToLinear(float in) return powf((in + 0.055f) / 1.055f, 2.4f); } -ImVec4 SRGBToLinear(ImVec4 col) +static ImVec4 SRGBToLinear(ImVec4 col) { col.x = SRGBToLinear(col.x); col.y = SRGBToLinear(col.y); @@ -109,7 +109,7 @@ void HudElements::convert_colors(bool do_conv, const struct overlay_params& para /** * Go to next column or second column on new row */ -void ImguiNextColumnOrNewRow(int column = -1) +static void ImguiNextColumnOrNewRow(int column = -1) { if (column > -1 && column < ImGui::TableGetColumnCount()) ImGui::TableSetColumnIndex(column); @@ -121,7 +121,7 @@ void ImguiNextColumnOrNewRow(int column = -1) } } -void ImGuiTableSetColumnIndex(int column) +static void ImGuiTableSetColumnIndex(int column) { ImGui::TableSetColumnIndex(std::max(0, std::min(column, ImGui::TableGetColumnCount() - 1))); } @@ -767,13 +767,13 @@ void HudElements::battery(){ ImGuiTableSetColumnIndex(2); right_aligned_text(HUDElements.colors.text, HUDElements.ralign_width, "%02.0f:%02.0f", hours, minutes); } - } else { + } else { ImguiNextColumnOrNewRow(); right_aligned_text(HUDElements.colors.text, HUDElements.ralign_width, "%s", ICON_FK_PLUG); } } } - + } #endif } diff --git a/src/intel.cpp b/src/intel.cpp index 8ae1de3d..e484a1b2 100644 --- a/src/intel.cpp +++ b/src/intel.cpp @@ -8,7 +8,7 @@ using json = nlohmann::json; static bool init_intel = false; struct gpuInfo gpu_info_intel {}; -void intelGpuThread(){ +static void intelGpuThread(){ init_intel = true; static char stdout_buffer[1024]; FILE* intel_gpu_top = popen("intel_gpu_top -J -s 500", "r"); @@ -56,7 +56,7 @@ void intelGpuThread(){ if (exitcode == 1) SPDLOG_INFO("Missing permissions for '{}'", "intel_gpu_top"); - + SPDLOG_INFO("Disabling gpu_stats"); _params->enabled[OVERLAY_PARAM_ENABLED_gpu_stats] = false; } @@ -67,4 +67,4 @@ void getIntelGpuInfo(){ std::thread(intelGpuThread).detach(); gpu_info = gpu_info_intel; -} \ No newline at end of file +} diff --git a/src/keybinds.h b/src/keybinds.h index 83dff612..45b2c9ec 100644 --- a/src/keybinds.h +++ b/src/keybinds.h @@ -14,7 +14,7 @@ typedef unsigned long KeySym; Clock::time_point last_f2_press, toggle_fps_limit_press , last_f12_press, reload_cfg_press, last_upload_press; #if defined(HAVE_X11) -bool keys_are_pressed(const std::vector& keys) { +static inline bool keys_are_pressed(const std::vector& keys) { if (!init_x11()) return false; @@ -41,7 +41,7 @@ bool keys_are_pressed(const std::vector& keys) { } #elif defined(_WIN32) #include -bool keys_are_pressed(const std::vector& keys) { +static inline bool keys_are_pressed(const std::vector& keys) { size_t pressed = 0; for (KeySym ks : keys) { @@ -56,7 +56,7 @@ bool keys_are_pressed(const std::vector& keys) { return false; } #else // XXX: Add wayland support -bool keys_are_pressed(const std::vector& keys) { +static inline bool keys_are_pressed(const std::vector& keys) { return false; } #endif diff --git a/src/logging.cpp b/src/logging.cpp index 5d49f03c..08c974b4 100644 --- a/src/logging.cpp +++ b/src/logging.cpp @@ -36,7 +36,7 @@ string exec(string command) { return result; } -void upload_file(std::string logFile){ +static void upload_file(std::string logFile){ std::string command = "curl --include --request POST https://flightlessmango.com/logs -F 'log[game_id]=26506' -F 'log[user_id]=176' -F 'attachment=true' -A 'mangohud' "; command += " -F 'log[uploads][]=@" + logFile + "'"; @@ -45,7 +45,7 @@ void upload_file(std::string logFile){ exec("xdg-open " + url); } -void upload_files(const std::vector& logFiles){ +static void upload_files(const std::vector& logFiles){ std::string command = "curl --include --request POST https://flightlessmango.com/logs -F 'log[game_id]=26506' -F 'log[user_id]=176' -F 'attachment=true' -A 'mangohud' "; for (auto& file : logFiles) command += " -F 'log[uploads][]=@" + file + "'"; @@ -55,12 +55,12 @@ void upload_files(const std::vector& logFiles){ exec("xdg-open " + url); } -bool compareByFps(const logData &a, const logData &b) +static bool compareByFps(const logData &a, const logData &b) { return a.fps < b.fps; } -void writeSummary(string filename){ +static void writeSummary(string filename){ auto& logArray = logger->get_log_data(); filename = filename.substr(0, filename.size() - 4); filename += "_summary.csv"; @@ -109,7 +109,7 @@ void writeSummary(string filename){ out.close(); } -void writeFileHeaders(ofstream& out){ +static void writeFileHeaders(ofstream& out){ if (HUDElements.params->enabled[OVERLAY_PARAM_ENABLED_log_versioning]){ printf("log versioning"); out << "v1" << endl; @@ -152,7 +152,7 @@ void Logger::writeToFile(){ } } -string get_log_suffix(){ +static string get_log_suffix(){ time_t now_log = time(0); tm *log_time = localtime(&now_log); std::ostringstream buffer; diff --git a/src/nvctrl.cpp b/src/nvctrl.cpp index daedd80d..5d3da7b7 100644 --- a/src/nvctrl.cpp +++ b/src/nvctrl.cpp @@ -89,7 +89,7 @@ static void parse_token(std::string token, string_map& options) { options[param] = value; } -char* get_attr_target_string(libnvctrl_loader& nvctrl, int attr, int target_type, int target_id) { +static char* get_attr_target_string(libnvctrl_loader& nvctrl, int attr, int target_type, int target_id) { char* c = nullptr; if (!nvctrl.XNVCTRLQueryTargetStringAttribute(display.get(), target_type, target_id, 0, attr, &c)) { SPDLOG_ERROR("Failed to query attribute '{}'", attr); diff --git a/src/nvctrl.h b/src/nvctrl.h index 10be0ff4..f11c481f 100644 --- a/src/nvctrl.h +++ b/src/nvctrl.h @@ -15,6 +15,5 @@ extern struct nvctrlInfo nvctrl_info; extern bool nvctrlSuccess; bool checkXNVCtrl(void); void getNvctrlInfo(void); -char *get_attr_target_string(int attr, int target_type, int target_id); #endif //MANGOHUD_NVCTRL_H diff --git a/src/overlay.cpp b/src/overlay.cpp index 4571b84d..3fca18e7 100644 --- a/src/overlay.cpp +++ b/src/overlay.cpp @@ -385,7 +385,7 @@ void center_text(const std::string& text) ImGui::SetCursorPosX((ImGui::GetWindowSize().x / 2 )- (ImGui::CalcTextSize(text.c_str()).x / 2)); } -float get_ticker_limited_pos(float pos, float tw, float& left_limit, float& right_limit) +static float get_ticker_limited_pos(float pos, float tw, float& left_limit, float& right_limit) { //float cw = ImGui::GetContentRegionAvailWidth() * 3; // only table cell worth of width float cw = ImGui::GetWindowContentRegionMax().x - ImGui::GetStyle().WindowPadding.x; diff --git a/src/pci_ids.cpp b/src/pci_ids.cpp index feec222f..002a8439 100644 --- a/src/pci_ids.cpp +++ b/src/pci_ids.cpp @@ -9,7 +9,7 @@ std::map>> pci_ids; -std::istream& get_uncommented_line(std::istream& is, std::string &line) +static std::istream& get_uncommented_line(std::istream& is, std::string &line) { while (std::getline(is, line)) { auto c = line.find("#"); diff --git a/src/real_dlsym.cpp b/src/real_dlsym.cpp index 9867a784..173dc1be 100644 --- a/src/real_dlsym.cpp +++ b/src/real_dlsym.cpp @@ -15,7 +15,7 @@ void *(*__dlsym)(void *, const char *) = nullptr; static bool print_dlopen = getenv("MANGOHUD_DEBUG_DLOPEN") != nullptr; static bool print_dlsym = getenv("MANGOHUD_DEBUG_DLSYM") != nullptr; -void get_real_functions() +static void get_real_functions() { eh_obj_t libdl; int ret; diff --git a/src/vulkan.cpp b/src/vulkan.cpp index d967a1e9..5822bebd 100644 --- a/src/vulkan.cpp +++ b/src/vulkan.cpp @@ -401,7 +401,7 @@ static void destroy_swapchain_data(struct swapchain_data *data) delete data; } -struct overlay_draw *get_overlay_draw(struct swapchain_data *data) +static struct overlay_draw *get_overlay_draw(struct swapchain_data *data) { struct device_data *device_data = data->device; struct overlay_draw *draw = data->draws.empty() ?