diff --git a/Makefile b/Makefile index 10a088db..2adae708 100644 --- a/Makefile +++ b/Makefile @@ -171,6 +171,23 @@ LIBCFLAGS := -fpic -D_REENTRANT $(ALL_CFLAGS) ALL_LDFLAGS := $(LDFLAGS) +# Determine iconv linking requirements +# glibc has built-in iconv, other libc implementations may need -liconv +ifndef LIBICONV + ICONV_TEST := $(shell printf '%s\n' \ + '#include ' \ + 'int main() { iconv_t cd = iconv_open("UTF-8", "ASCII"); return 0; }' \ + | $(CC) $(ALL_CPPFLAGS) -x c - -o /tmp/lm_sensors_iconv_test 2>/dev/null && echo "builtin" || echo "external") + + ifeq ($(ICONV_TEST),builtin) + LIBICONV := + else + LIBICONV := -liconv + endif + + $(shell rm -f /tmp/lm_sensors_iconv_test) +endif + EXLDFLAGS := -Wl,-rpath,$(LIBDIR) $(ALL_LDFLAGS) .PHONY: all user clean install user_install uninstall user_uninstall diff --git a/prog/sensors/Module.mk b/prog/sensors/Module.mk index 18710f69..3130668e 100644 --- a/prog/sensors/Module.mk +++ b/prog/sensors/Module.mk @@ -39,7 +39,10 @@ REMOVESENSORSBIN := $(patsubst $(MODULE_DIR)/%,$(DESTDIR)$(BINDIR)/%,$(PROGSENSO REMOVESENSORSMAN := $(patsubst $(MODULE_DIR)/%,$(DESTDIR)$(PROGSENSORSMAN1DIR)/%,$(PROGSENSORSMAN1FILES)) REMOVESENSORSZSH := $(patsubst $(MODULE_DIR)/%,$(DESTDIR)$(ZSHCOMPDIR)/%,$(PROGSENSORSZSHCOMPFILES)) -LIBICONV := $(shell if /sbin/ldconfig -p | grep -q '/libiconv\.so$$' ; then echo \-liconv; else echo; fi) +LIBICONV := $(shell printf '%s\n' \ + '#include ' \ + 'int main() { iconv_t cd = iconv_open("UTF-8", "ASCII"); return 0; }' \ + | $(CC) $(ALL_CPPFLAGS) -x c - 2>/dev/null && echo || echo \-liconv) $(PROGSENSORSTARGETS): $(PROGSENSORSSOURCES:.c=.ro) lib/$(LIBDEP_FOR_PROGS) $(CC) -o $@ $(PROGSENSORSSOURCES:.c=.ro) $(LIBICONV) $(EXLDFLAGS) -Llib -lsensors -lm