From 550f0448d6127fce0c94b00fbcbeb17d43f0c3ad Mon Sep 17 00:00:00 2001 From: Michael Ow Date: Wed, 30 Apr 2014 21:08:54 +0000 Subject: [PATCH] ICU-10732 Enable Cygwin64 build X-SVN-Rev: 35672 --- icu4c/source/acinclude.m4 | 14 ++-- icu4c/source/config/mh-cygwin64 | 141 ++++++++++++++++++++++++++++++++ icu4c/source/configure | 30 ++----- 3 files changed, 154 insertions(+), 31 deletions(-) create mode 100644 icu4c/source/config/mh-cygwin64 diff --git a/icu4c/source/acinclude.m4 b/icu4c/source/acinclude.m4 index 5b2c8444b42..08bab5b01ec 100644 --- a/icu4c/source/acinclude.m4 +++ b/icu4c/source/acinclude.m4 @@ -1,4 +1,4 @@ -# Copyright (c) 1999-2013, International Business Machines Corporation and +# Copyright (c) 1999-2014, International Business Machines Corporation and # others. All Rights Reserved. # acinclude.m4 for ICU # Don't edit aclocal.m4, do edit acinclude.m4 @@ -32,15 +32,15 @@ powerpc*-*-linux*) icu_cv_host_frag=mh-linux-va fi ;; *-*-linux*|*-*-gnu|*-*-k*bsd*-gnu|*-*-kopensolaris*-gnu) icu_cv_host_frag=mh-linux ;; -*-*-cygwin|*-*-mingw32|*-*-mingw64) +i[[34567]]86-*-cygwin) icu_cv_host_frag=mh-cygwin ;; +x86_64-*-cygwin) icu_cv_host_frag=mh-cygwin64 ;; +*-*-mingw32|*-*-mingw64) if test "$GCC" = yes; then - AC_TRY_COMPILE([ -#ifndef __MINGW32__ -#error This is not MinGW -#endif], [], AC_TRY_COMPILE([ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #ifndef __MINGW64__ #error This is not MinGW64 -#endif], [], icu_cv_host_frag=mh-mingw64, icu_cv_host_frag=mh-mingw), icu_cv_host_frag=mh-cygwin) +#endif]])], [icu_cv_host_frag=mh-mingw64], + [icu_cv_host_frag=mh-mingw])]) else icu_cv_host_frag=mh-cygwin-msvc fi ;; diff --git a/icu4c/source/config/mh-cygwin64 b/icu4c/source/config/mh-cygwin64 new file mode 100644 index 00000000000..a30dd3c8f1b --- /dev/null +++ b/icu4c/source/config/mh-cygwin64 @@ -0,0 +1,141 @@ +## -*-makefile-*- +## Cygwin64-specific setup +## Copyright (c) 2014, International Business Machines Corporation and +## others. All Rights Reserved. + +## Commands to generate dependency files +GEN_DEPS.c= $(CC) -E -MM $(DEFS) $(CPPFLAGS) +GEN_DEPS.cc= $(CXX) -E -MM $(DEFS) $(CPPFLAGS) + +## Flags to create/use a static library +ifneq ($(ENABLE_SHARED),YES) +## Make sure that the static libraries can be built and used +CPPFLAGS += -DU_STATIC_IMPLEMENTATION +else +## Make sure that the static libraries can be built +STATICCPPFLAGS = -DU_STATIC_IMPLEMENTATION +endif + +## Flags for position independent code +SHAREDLIBCFLAGS = +SHAREDLIBCXXFLAGS = +SHAREDLIBCPPFLAGS = -DPIC + +## Additional flags when building libraries and with threads +THREADSCPPFLAGS = -D_REENTRANT +LIBCPPFLAGS = + +# Commands to link. Link with C++ in case static libraries are used. +LINK.c= $(CXX) $(CXXFLAGS) $(LDFLAGS) +#LINK.cc= $(CXX) $(CXXFLAGS) $(LDFLAGS) + +## Shared library options +LD_SOOPTIONS= -Wl,-Bsymbolic + +## Commands to make a shared library +# $(subst) won't work in shell script. #M# at the end omits these +# lines from the shell script (Make only) +SHLIB.c= $(CC) $(CFLAGS) $(LDFLAGS) -shared $(LD_SOOPTIONS) -Wl,--enable-auto-import -Wl,--out-implib=$(subst cyg,lib,$@).$(A)#M# +SHLIB.cc= $(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(LD_SOOPTIONS) -Wl,--enable-auto-import -Wl,--out-implib=$(subst cyg,lib,$@).$(A)#M# +# the #SH# lines don't go through further postprocessing. +# so, they must be valid shell script starting from column 4 +#SH#SHLIB_c="$(CC) $(CFLAGS) $(LDFLAGS) -shared " +#SH#SHLIB_cc="$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared " + + +## Compiler switch to embed a runtime search path +LD_RPATH= +LD_RPATH_PRE= -Wl,-rpath, + +## Compiler switch to embed a library name +LD_SONAME = + +## Shared object suffix +SO = dll +## Non-shared intermediate object suffix +STATIC_O = ao +LIBICU = cyg$(ICUPREFIX) +## To have an import library is better on Cygwin +IMPORT_LIB_EXT = .dll.a + +## Compilation rules +%.$(STATIC_O): $(srcdir)/%.c + $(COMPILE.c) $(STATICCPPFLAGS) $(STATICCFLAGS) -o $@ $< +%.o: $(srcdir)/%.c + $(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS) -o $@ $< + +%.$(STATIC_O): $(srcdir)/%.cpp + $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS) -o $@ $< +%.o: $(srcdir)/%.cpp + $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS) -o $@ $< + + +## Dependency rules +%.d: $(srcdir)/%.c + @echo "generating dependency information for $<" + @echo -n "$@ " > $@ + @$(GEN_DEPS.c) $< >> $@ || (rm -f $@ && FALSE) + +%.d: $(srcdir)/%.cpp + @echo "generating dependency information for $<" + @echo -n "$@ " > $@ + @$(GEN_DEPS.cc) $< >> $@ || (rm -f $@ && FALSE) + +## Versioned target for a shared library. +## Since symbolic links don't work the same way on Windows, +## we only use the version major number. +#FINAL_SO_TARGET=$(basename $(SO_TARGET))$(SO_TARGET_VERSION).$(SO) +FINAL_SO_TARGET=$(basename $(SO_TARGET))$(SO_TARGET_VERSION_MAJOR).$(SO) +MIDDLE_SO_TARGET=$(FINAL_SO_TARGET) + +IMPORT_LIB = $(subst cyg,lib,$(FINAL_SO_TARGET)).$(A)#M# +MIDDLE_IMPORT_LIB = $(subst cyg,lib,$(basename $(SO_TARGET)))$(SO_TARGET_VERSION_MAJOR).$(SO).$(A)#M# +FINAL_IMPORT_LIB = $(IMPORT_LIB)#M# + +# The following is for Makefile.inc's use. +ICULIBSUFFIX_VERSION = $(LIB_VERSION_MAJOR) + +## Versioned libraries rules +#%$(SO_TARGET_VERSION_MAJOR).$(SO): %$(SO_TARGET_VERSION).$(SO) +# $(RM) $@ && cp ${conftest.$ac_ext -/* end confdefs.h. */ - -#ifndef __MINGW32__ -#error This is not MinGW -#endif -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __MINGW64__ @@ -4910,10 +4897,9 @@ else icu_cv_host_frag=mh-mingw fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - icu_cv_host_frag=mh-cygwin fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $icu_cv_host_frag" >&5 +$as_echo "$icu_cv_host_frag" >&6; } else icu_cv_host_frag=mh-cygwin-msvc fi ;; @@ -4946,10 +4932,6 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext esac -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $icu_cv_host_frag" >&5 -$as_echo "$icu_cv_host_frag" >&6; } - # Checks for libraries and other host specific stuff # On HP/UX, don't link to -lm from a shared lib because it isn't -- 2.40.0