Makefile: make NO_ICONV really mean "no iconv"
authorEric Sunshine <sunshine@sunshineco.com>
Fri, 15 Jun 2018 02:25:03 +0000 (22:25 -0400)
committerJunio C Hamano <gitster@pobox.com>
Fri, 15 Jun 2018 19:50:45 +0000 (12:50 -0700)
commitfdb1fbbc7d313253ca9fac5b0be3d0573dcb5419
tree12805316fc3adbccc23b14515f4c97509b4782e3
parenta42a58d7b62cc1d6301440e81a83feed9d7c118c
Makefile: make NO_ICONV really mean "no iconv"

The Makefile tweak NO_ICONV is meant to allow Git to be built without
iconv in case iconv is not installed or is otherwise dysfunctional.
However, NO_ICONV's disabling of iconv is incomplete and can incorrectly
allow "-liconv" to slip into the linker flags when NEEDS_LIBICONV is
defined, which breaks the build when iconv is not installed.

On some platforms, iconv lives directly in libc, whereas, on others it
resides in libiconv. For the latter case, NEEDS_LIBICONV instructs the
Makefile to add "-liconv" to the linker flags. config.mak.uname
automatically defines NEEDS_LIBICONV for platforms which require it.
The adding of "-liconv" is done unconditionally, despite NO_ICONV.

Work around this problem by making NO_ICONV take precedence over
NEEDS_LIBICONV.

Reported by: Mahmoud Al-Qudsi <mqudsi@neosmart.net>
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Makefile