--- configure.in +++ configure.in @@ -96,13 +96,64 @@ AC_SUBST(CONFIG_DYNAMIC_LINKING) #-------------------------------------------------------------------- -# Checks for system headers +# Check for iconv #-------------------------------------------------------------------- -AC_CHECK_HEADER([iconv.h],[ - CONFIG_USE_ICONV="#define USE_ICONV" -], []) +AC_ARG_WITH(iconv, +changequote(<<, >>)dnl +<< --with-iconv[=DIR] where to find iconv [system]>>dnl +changequote([, ])dnl +) + +AC_LANG_SAVE +AC_LANG_C # compile C to avoid the 'const char**' problem + +# Check for iconv +# Modified from GNOME's libxml2 configure.in +CONFIG_USE_ICONV="" +if test "$with_iconv" = "no" ; then + AC_MSG_RESULT([disabling iconv support]) +else + if test "$with_iconv" != "yes" -a "$with_iconv" != "" ; then + CPPFLAGS="-I$with_iconv/include" # for AC_TRY_LINK + ICONV_CFLAGS="-I$with_iconv/include" + ICONV_LDFLAGS="-L$with_iconv/lib" + fi + + AC_CHECK_HEADER(iconv.h, + AC_MSG_CHECKING(for iconv) + AC_TRY_LINK([#include +#include ],[ +iconv_t cd = iconv_open ("",""); +iconv (cd, NULL, NULL, NULL, NULL);],[ + AC_MSG_RESULT(yes) + CONFIG_USE_ICONV="#define USE_ICONV"],[ + AC_MSG_RESULT(no) + AC_MSG_CHECKING(for iconv in -liconv) + LDFLAGS="${ICONV_LDFLAGS}" # for AC_TRY_LINK + LIBS="-liconv" # for AC_TRY_LINK + AC_TRY_LINK([#include +#include ],[ +iconv_t cd = iconv_open ("",""); +iconv (cd, NULL, NULL, NULL, NULL);],[ + AC_MSG_RESULT(yes) + CONFIG_USE_ICONV="#define USE_ICONV" + ICONV_LDFLAGS="${ICONV_LDFLAGS} -liconv"],[ + AC_MSG_RESULT(no)])])) +fi + +if test "$CONFIG_USE_ICONV" = "" ; then + AC_MSG_WARN([iconv was not found, HTML and XML import may crash]) +fi +CPPFLAGS="" +LDFLAGS="" +LIBS="" +AC_LANG_RESTORE # restore C++ language + AC_SUBST(CONFIG_USE_ICONV) +AC_SUBST(ICONV_CFLAGS) +AC_SUBST(ICONV_LDFLAGS) + #-------------------------------------------------------------------- # Checks for library functions --- src/Resource/Converters/converter.cpp +++ src/Resource/Converters/converter.cpp @@ -211,7 +211,7 @@ iconv_adaptor(size_t(*iconv_func)(iconv_t, T, size_t *, char**, size_t*), iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) { - return iconv_func (cd, static_cast(inbuf), inbytesleft, + return iconv_func (cd, (T)inbuf, inbytesleft, outbuf, outbytesleft); } --- src/common.makefile.in +++ src/common.makefile.in @@ -41,6 +41,7 @@ CPPFLAGS = DASH_I_DASH = @CONFIG_DASH_I_DASH@ CXXXWINDOW address@hidden@ +CXXICONV = @ICONV_CFLAGS@ CXXGUILE = @GUILE_CFLAGS@ LD = @CXX@ LDFLAGS = @CONFIG_LFLAGS@ @@ -49,6 +50,7 @@ LDPATH = @CONFIG_LPATH@ LDXWINDOW address@hidden@ LDDL = @CONFIG_LDL@ +LDICONV = @ICONV_LDFLAGS@ LDGUILE = @GUILE_LDFLAGS@ LDB = @CXX@ LDBFLAGS = @CONFIG_BFLAGS@ @@ -57,6 +59,7 @@ LDBPATH = @CONFIG_BPATH@ LDBXWINDOW address@hidden@ LDBDL = @CONFIG_BDL@ +LDBICONV = @ICONV_LDFLAGS@ LDBGUILE = @GUILE_LDFLAGS@ AR = ar ARFLAGS = -r @@ -135,8 +138,8 @@ deps_incl = $(call tm_incl_flags,System System/Boot System/Classes System/Files System/Link System/Misc Classes/Abstract Classes/Atomic Classes/Compound Data/Drd Data/String Data/Tree Data/Convert Resource Plugins Window Typeset Edit Texmacs Guile) -deps_flags = $(deps_incl)\ - $(CPPFLAGS) $(CXXGUILE) -I$(tmsrc)/include $(CXXXWINDOW) +deps_flags = $(deps_incl) $(CPPFLAGS) $(CXXICONV) $(CXXGUILE) \ + -I$(tmsrc)/include $(CXXXWINDOW) # we should use -I- to separate local includes from system includes, but # headers of guile 1.6.0 use includes in quotes with names relative to the # current directory, and that feature is disable by -I-. @@ -216,8 +219,10 @@ %.o: %.cpp # Disable implicit compilation rule cxx_flags = $(strip $(CXX) $(1) -c $< -o $@) -cxx_incl = $(call cxx_flags,$(1) $(CXXGUILE) $(CPPFLAGS) $(CXXFLAGS)) -cxx_incl_sys = $(call cxx_flags,$(1) $(CXXGUILE) $(CPPFLAGS) $(DASH_I_DASH) $(2) $(CXXFLAGS)) +cxx_incl = $(call cxx_flags,$(1) $(CXXICONV) $(CXXGUILE) \ + $(CPPFLAGS) $(CXXFLAGS)) +cxx_incl_sys = $(call cxx_flags,$(1) $(CXXICONV) $(CXXGUILE) \ + $(CPPFLAGS) $(DASH_I_DASH) $(2) $(CXXFLAGS)) $(system_obj): Objects/%.o: %.cpp $(call cxx_incl_sys,$(system_incl),-I$(tmsrc)/include) --- src/makefile +++ src/makefile @@ -32,7 +32,8 @@ TEXMACS_objects := $(strip $(call uses,system classes data resource plugins\ window typeset edit glue) $(texmacs_obj) $(instanciations_obj)) -link_options:=-L$(tmsrc)/lib -lm $(LDBPATH) $(LDBXWINDOW) $(LDBGUILE) $(LDBDL) +link_options:=-L$(tmsrc)/lib -lm $(LDBPATH) $(LDBXWINDOW) \ + $(LDBGUILE) $(LDBDL) $(LDBICONV) $(tmsrc)/bin/texmacs.bin: Objects/texmacs-$(link).bin $(CP) $^ $@