From bd0cf4893b267762cd35fb68f900b4be9de81138 Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Sat, 10 Aug 2019 02:25:24 +0200 Subject: Make cpufreq builds independent from kernel header version. Ported from gnome-applets, see git diff e48b2d73~..5882df7f cpufreq/ configure.ac on the gnome-applets repository. Fixes mate-desktop/mate-applets#238. --- configure.ac | 72 ++++++++++++++-------- cpufreq/src/cpufreq-monitor-libcpufreq.c | 15 +++-- .../cpufreq-selector/cpufreq-selector-libcpufreq.c | 10 ++- 3 files changed, 61 insertions(+), 36 deletions(-) diff --git a/configure.ac b/configure.ac index dbcfb66c..11178a38 100644 --- a/configure.ac +++ b/configure.ac @@ -357,33 +357,51 @@ if test "x$HAVE_POLKIT" = "xyes"; then enable_suid=no fi -AC_ARG_WITH([cpufreq-lib], - AS_HELP_STRING([--with-cpufreq-lib=lib], [library to use for cpufreq applet @<:@default=cpufreq@:>@]), - [with_cpufreq_lib=$withval], [with_cpufreq_lib="cpupower"]) - -AC_CHECK_HEADER(cpufreq.h, have_libcpufreq=yes, have_libcpufreq=no) -LIBCPUFREQ_LIBS= -if test "x$have_libcpufreq" = "xyes"; then - AC_DEFINE([HAVE_LIBCPUFREQ], [1], [Have libcpufreq.]) - LIBCPUFREQ_LIBS="-l$with_cpufreq_lib" -fi -AM_CONDITIONAL(HAVE_LIBCPUFREQ, test x$have_libcpufreq = xyes) -AC_SUBST(LIBCPUFREQ_LIBS) - -build_cpufreq_applet=no - -if test x$disable_cpufreq = xno; then - case "${host}" in - *linux*) - build_cpufreq_applet=yes - ;; - *) - AC_MSG_WARN([${host} is not supported by cpufreq applet, not building]) - build_cpufreq_applet=no - ;; - esac -fi - +build_cpufreq_applet=yes +AS_IF([test "x$disable_cpufreq" = "xno"], [ + case "${host}" in + *linux*) + AC_CHECK_HEADER([cpufreq.h], [ + AC_CHECK_LIB([cpupower], [cpupower_is_cpu_online], [ + AC_DEFINE([HAVE_IS_CPU_ONLINE], 1, + [Define to 1 if cpupower_is_cpu_online() is available]) + cpufreq_lib="cpupower" + + AC_CHECK_LIB([cpupower], [cpufreq_get_frequencies], [ + AC_DEFINE([HAVE_GET_FREQUENCIES], 1, + [Define to 1 if cpufreq_get_frequencies() is available]) + ]) + ], [ + AC_CHECK_LIB([cpupower], [cpufreq_cpu_exists], [ + cpufreq_lib="cpupower" + ], [ + AC_CHECK_LIB([cpufreq], [cpufreq_cpu_exists], [ + cpufreq_lib="cpufreq" + ], [cpufreq_lib=]) + ]) + ]) + + AS_IF([test "x$cpufreq_lib" != "x"], [ + LIBCPUFREQ_LIBS="-l$cpufreq_lib" + AC_DEFINE([HAVE_LIBCPUFREQ], [1], [Have libcpufreq.]) + AC_SUBST([LIBCPUFREQ_LIBS]) + ], [ + AC_MSG_WARN([*** cpufreq applet will not be built ***]) + build_cpufreq_applet=no + ]) + ], [ + AC_MSG_WARN([*** can't find cpufreq.h, cpufreq applet will not be built ***]) + build_cpufreq_applet=no + ]) + ;; + *) + AC_MSG_WARN([${host} is not supported by cpufreq applet, not building]) + build_cpufreq_applet=no + ;; + esac +], [build_cpufreq_applet=no]) + +AM_CONDITIONAL(HAVE_LIBCPUFREQ, test x$cpufreq_lib != x) AM_CONDITIONAL(BUILD_CPUFREQ_APPLET, test x$build_cpufreq_applet = xyes) AM_CONDITIONAL(BUILD_CPUFREQ_SELECTOR, test x$enable_selector = xyes) AM_CONDITIONAL(CPUFREQ_SELECTOR_SUID, test x$enable_suid = xyes) diff --git a/cpufreq/src/cpufreq-monitor-libcpufreq.c b/cpufreq/src/cpufreq-monitor-libcpufreq.c index 9821f2da..dd2722ba 100644 --- a/cpufreq/src/cpufreq-monitor-libcpufreq.c +++ b/cpufreq/src/cpufreq-monitor-libcpufreq.c @@ -19,11 +19,14 @@ * Authors : Carlos García Campos */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include -#include #include #include "cpufreq-monitor-libcpufreq.h" #include "cpufreq-utils.h" @@ -36,12 +39,12 @@ static GList *cpufreq_monitor_libcpufreq_get_available_governors (CPUFreqMon G_DEFINE_TYPE (CPUFreqMonitorLibcpufreq, cpufreq_monitor_libcpufreq, CPUFREQ_TYPE_MONITOR) -#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 1, 0) -typedef struct cpufreq_available_frequencies CPUFreqFrequencyList; -#else +#ifdef HAVE_GET_FREQUENCIES typedef struct cpufreq_frequencies CPUFreqFrequencyList; #define cpufreq_get_available_frequencies(cpu) cpufreq_get_frequencies ("available", cpu) #define cpufreq_put_available_frequencies(first) cpufreq_put_frequencies (first) +#else +typedef struct cpufreq_available_frequencies CPUFreqFrequencyList; #endif typedef struct cpufreq_policy CPUFreqPolicy; @@ -105,7 +108,7 @@ cpufreq_monitor_libcpufreq_new (guint cpu) return CPUFREQ_MONITOR (monitor); } -#if LINUX_VERSION_CODE > KERNEL_VERSION(4, 7, 0) +#ifdef HAVE_IS_CPU_ONLINE extern int cpupower_is_cpu_online (unsigned int cpu); #endif @@ -122,7 +125,7 @@ cpufreq_monitor_libcpufreq_run (CPUFreqMonitor *monitor) /* Check whether it failed because * cpu is not online. */ -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 7, 0) +#ifndef HAVE_IS_CPU_ONLINE if (!cpufreq_cpu_exists (cpu)) { #else if (cpupower_is_cpu_online (cpu)) { diff --git a/cpufreq/src/cpufreq-selector/cpufreq-selector-libcpufreq.c b/cpufreq/src/cpufreq-selector/cpufreq-selector-libcpufreq.c index f3d76e7e..d2fda2bf 100644 --- a/cpufreq/src/cpufreq-selector/cpufreq-selector-libcpufreq.c +++ b/cpufreq/src/cpufreq-selector/cpufreq-selector-libcpufreq.c @@ -19,6 +19,10 @@ * Authors : Carlos García Campos */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include @@ -39,12 +43,12 @@ static gboolean cpufreq_selector_libcpufreq_set_governor (CPUFreqSelector G_DEFINE_TYPE (CPUFreqSelectorLibcpufreq, cpufreq_selector_libcpufreq, CPUFREQ_TYPE_SELECTOR) -#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 1, 0) -typedef struct cpufreq_available_frequencies CPUFreqFrequencyList; -#else +#ifdef HAVE_GET_FREQUENCIES typedef struct cpufreq_frequencies CPUFreqFrequencyList; #define cpufreq_get_available_frequencies(cpu) cpufreq_get_frequencies ("available", cpu) #define cpufreq_put_available_frequencies(first) cpufreq_put_frequencies (first) +#else +typedef struct cpufreq_available_frequencies CPUFreqFrequencyList; #endif typedef struct cpufreq_policy CPUFreqPolicy; -- cgit v1.2.1