summaryrefslogtreecommitdiff
path: root/makefiledir
diff options
context:
space:
mode:
authorbjarni <bjarni@openttd.org>2006-03-23 23:54:43 +0000
committerbjarni <bjarni@openttd.org>2006-03-23 23:54:43 +0000
commit41f4c473dafd4cd1982d76cfb7b702426bb6067f (patch)
tree6ffab345b4e5937c329ed5663a3b4bd2a268b369 /makefiledir
parent747fe64b31ba236df5caf32b6871a5bce10665b8 (diff)
downloadopenttd-41f4c473dafd4cd1982d76cfb7b702426bb6067f.tar.xz
(svn r4074) -Feature: [Makefile] the makefile can now detect if iconv is present in the system
if detected, WITH_ICONV will be defined in the C code WITH_ICONV is also added to Makefile.config OSX do not use this flag setting in Makefile.config, as it is set at compile time based on target OS version the actual C code is not changed as the current iconv code is hardcoded for OSX and would break if any other OS got iconv This detection system is by request of Darkvater
Diffstat (limited to 'makefiledir')
-rw-r--r--makefiledir/Makefile.config_writer2
-rw-r--r--makefiledir/Makefile.libdetection9
-rw-r--r--makefiledir/iconv_detector.c18
3 files changed, 29 insertions, 0 deletions
diff --git a/makefiledir/Makefile.config_writer b/makefiledir/Makefile.config_writer
index 581411c54..60c6727ba 100644
--- a/makefiledir/Makefile.config_writer
+++ b/makefiledir/Makefile.config_writer
@@ -64,9 +64,11 @@ $(MAKE_CONFIG):
$(call CONFIG_LINE,)
$(call CONFIG_LINE,\# Libs)
+ $(call CONFIG_LINE,\# WITH_ICONV is not used on OSX since the flag is overwritten. It is always used unless the target OS is 10.2.8)
$(call CONFIG_LINE,WITH_ZLIB:=$(WITH_ZLIB))
$(call CONFIG_LINE,WITH_SDL:=$(WITH_SDL))
$(call CONFIG_LINE,WITH_PNG:=$(WITH_PNG))
+ $(call CONFIG_LINE,WITH_ICONV:=$(WITH_ICONV))
$(call CONFIG_LINE,STATIC_ZLIB_PATH:=$(STATIC_ZLIB_PATH))
$(call CONFIG_LINE,WITH_COCOA:=$(WITH_COCOA))
$(call CONFIG_LINE,)
diff --git a/makefiledir/Makefile.libdetection b/makefiledir/Makefile.libdetection
index 237c02f98..47d8edee1 100644
--- a/makefiledir/Makefile.libdetection
+++ b/makefiledir/Makefile.libdetection
@@ -121,3 +121,12 @@ WITH_PNG:=
endif
endif
+
+ifeq ($(shell expr $(CONFIG_VERSION) \< 10), 1)
+# we need to test if iconv is present on the current system
+# even though we test on OSX, the read data is actually not used since it relies on target OS and this flag will be overwritten later
+
+$(shell $(CC) -liconv -o makefiledir/iconv_detector makefiledir/iconv_detector.c 2>/dev/null)
+WITH_ICONV:=$(shell makefiledir/iconv_detector 2>/dev/null)
+$(shell rm makefiledir/iconv_detector 2>/dev/null)
+endif
diff --git a/makefiledir/iconv_detector.c b/makefiledir/iconv_detector.c
new file mode 100644
index 000000000..709656cb9
--- /dev/null
+++ b/makefiledir/iconv_detector.c
@@ -0,0 +1,18 @@
+/* $Id$ */
+
+#include <stdlib.h>
+#include <iconv.h>
+#include <stdio.h>
+
+/* this is a pretty simple app, that will return 1 if it manages to compile and execute
+ * This means that it can be used by the makefile to detect if iconv is present on the current system
+ * no iconv means this file fails and will return nothing */
+
+int main ()
+{
+ iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);
+ printf("1\n");
+ return 0;
+}