7f16cabf00
This replaces the previous, broken Windows ARM64 solution with a general fix for Cygwin cross-building. The main problem is the PATH environment, because that is colon-seperated on Cygwin, like on Unix, so won't work with any absolute "Windows" path, which is needed for the --with-cross-build option. One general change is the adoption of icucross.inc. I don't know, why that should prefer the general CURR_FULL_DIR from icudefs.mk over the specific one in @platform_make_fragment@. That breaks here, because it returns a cygwin unix path, which is used as an option to compiled tools, which these won't be able to handle. Change-Id: Ic2cf15b48801ac57ea5a8a2876ce59f2a84edfb3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103759 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
131 lines
5.7 KiB
Groff
131 lines
5.7 KiB
Groff
diff -ur icu.org/source/acinclude.m4 icu/source/acinclude.m4
|
|
--- icu.org/source/acinclude.m4 2020-04-10 16:22:16.000000000 +0200
|
|
+++ icu/source/acinclude.m4 2020-04-21 22:14:09.940217733 +0200
|
|
@@ -52,6 +52,12 @@
|
|
else
|
|
icu_cv_host_frag=mh-cygwin-msvc
|
|
fi ;;
|
|
+aarch64-*-cygwin)
|
|
+ if test "$GCC" = yes; then
|
|
+ icu_cv_host_frag=mh-cygwin64
|
|
+ else
|
|
+ icu_cv_host_frag=mh-cygwin-msvc
|
|
+ fi ;;
|
|
*-*-mingw*)
|
|
if test "$GCC" = yes; then
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
--- icu/source/configure.ac.orig 2020-04-22 22:04:20.000000000 +0200
|
|
+++ icu/source/configure.ac 2020-10-01 09:39:05.570900400 +0200
|
|
@@ -213,23 +213,33 @@
|
|
[cross_buildroot="${withval}"],
|
|
[cross_buildroot=""])
|
|
|
|
+cross_mixed_buildroot="$cross_buildroot"
|
|
+cross_unix_buildroot="$cross_buildroot"
|
|
if test "X$cross_buildroot" = "X"; then
|
|
if test "$cross_compiling" = "yes"; then
|
|
AC_MSG_ERROR([Error! Cross compiling but no --with-cross-build option specified - please supply the path to an executable ICU's build root])
|
|
dnl '
|
|
fi
|
|
else
|
|
- if test -f "${cross_buildroot}/config/icucross.mk"; then
|
|
+ case "${host}" in
|
|
+ *-*-cygwin*)
|
|
+ #M# -m isn't used because it doesn't work on Win98
|
|
+ cross_mixed_buildroot=$(cygpath -ad "$cross_buildroot" | tr '\\' '/')
|
|
+ cross_unix_buildroot=$(cygpath -au "$cross_buildroot")
|
|
+ ;;
|
|
+ esac
|
|
+ if test -f "${cross_mixed_buildroot}/config/icucross.mk"; then
|
|
AC_MSG_RESULT([Using cross buildroot: $cross_buildroot])
|
|
else
|
|
- if test -d "${cross_buildroot}"; then
|
|
- AC_MSG_ERROR([${cross_buildroot}/config/icucross.mk not found. Please build ICU in ${cross_buildroot} first.])
|
|
+ if test -d "${cross_mixed_buildroot}"; then
|
|
+ AC_MSG_ERROR([${cross_mixed_buildroot}/config/icucross.mk not found. Please build ICU in ${cross_mixed_buildroot} first.])
|
|
else
|
|
- AC_MSG_ERROR([No such directory ${cross_buildroot} supplied as the argument to --with-cross-build. Use an absolute path.])
|
|
+ AC_MSG_ERROR([No such directory ${cross_mixed_buildroot} supplied as the argument to --with-cross-build. Use an absolute path.])
|
|
fi
|
|
fi
|
|
fi
|
|
-AC_SUBST(cross_buildroot)
|
|
+AC_SUBST(cross_mixed_buildroot)
|
|
+AC_SUBST(cross_unix_buildroot)
|
|
|
|
# Check for doxygen to generate documentation
|
|
AC_PATH_PROG(DOXYGEN,doxygen,,$PATH:/usr/local/bin:/usr/bin)
|
|
--- icu/source/test/testdata/Makefile.in.orig 2020-10-01 09:37:25.847888900 +0200
|
|
+++ icu/source/test/testdata/Makefile.in 2020-10-01 09:36:41.859996500 +0200
|
|
@@ -82,7 +82,7 @@
|
|
# relative lib links from pkgdata are the same as for tmp
|
|
GENRBOPTS=-k
|
|
# use the cross root, in case we are cross compiling. Otherwise it is equal to top_builddir
|
|
-TOOLDIR=$(cross_buildroot)/tools
|
|
+TOOLDIR=$(cross_mixed_buildroot)/tools
|
|
SRCDATADIR=$(top_srcdir)/data
|
|
UNICODEDATADIR=$(SRCDATADIR)/unidata
|
|
OUTDIR=$(top_builddir)/data/out
|
|
--- icu/source/Makefile.in.orig 2020-04-22 22:04:20.000000000 +0200
|
|
+++ icu/source/Makefile.in 2020-10-01 09:29:36.642364000 +0200
|
|
@@ -255,16 +255,16 @@
|
|
@(echo "CROSS_ICU_VERSION=$(VERSION)" ;\
|
|
echo "TOOLEXEEXT=$(EXEEXT)" \
|
|
) > $@
|
|
- @(echo 'TOOLBINDIR=$$(cross_buildroot)/bin' ;\
|
|
- echo 'TOOLLIBDIR=$$(cross_buildroot)/lib' ;\
|
|
- echo "INVOKE=$(LDLIBRARYPATH_ENVVAR)=$(LIBRARY_PATH_PREFIX)"'$$(TOOLLIBDIR):$$(cross_buildroot)/stubdata:$$(cross_buildroot)/tools/ctestfw:$$$$'"$(LDLIBRARYPATH_ENVVAR)" ;\
|
|
- echo "PKGDATA_INVOKE=$(LDLIBRARYPATH_ENVVAR)=$(LIBRARY_PATH_PREFIX)"'$$(cross_buildroot)/stubdata:$$(cross_buildroot)/tools/ctestfw:$$(TOOLLIBDIR):$$$$'"$(LDLIBRARYPATH_ENVVAR) " ;\
|
|
+ @(echo 'TOOLBINDIR=$$(cross_mixed_buildroot)/bin' ;\
|
|
+ echo 'TOOLLIBDIR=$$(cross_mixed_buildroot)/lib' ;\
|
|
+ echo "INVOKE=$(LDLIBRARYPATH_ENVVAR)=$(LIBRARY_PATH_PREFIX)"'$$(cross_unix_buildroot)/lib:$$(cross_unix_buildroot)/stubdata:$$(cross_unix_buildroot)/tools/ctestfw:$$$$'"$(LDLIBRARYPATH_ENVVAR)" ;\
|
|
+ echo "PKGDATA_INVOKE=$(LDLIBRARYPATH_ENVVAR)=$(LIBRARY_PATH_PREFIX)"'$$(cross_unix_buildroot)/stubdata:$$(cross_unix_buildroot)/tools/ctestfw:$$(cross_unix_buildroot)/lib:$$$$'"$(LDLIBRARYPATH_ENVVAR) " ;\
|
|
echo ) >> $@
|
|
|
|
config/icucross.inc: $(top_builddir)/icudefs.mk $(top_builddir)/Makefile @platform_make_fragment@
|
|
@echo rebuilding $@
|
|
- @(grep '^CURR_FULL_DIR' $(top_builddir)/icudefs.mk ; \
|
|
- grep '^CURR_FULL_DIR' @platform_make_fragment@ || echo ""; \
|
|
+ @(grep '^CURR_FULL_DIR' @platform_make_fragment@ || echo ""; \
|
|
+ grep '^CURR_FULL_DIR' $(top_builddir)/icudefs.mk ; \
|
|
) > $@
|
|
|
|
config/icu.pc: $(srcdir)/config/icu.pc.in
|
|
--- icu/source/icudefs.mk.in.orig 2020-04-22 22:04:20.000000000 +0200
|
|
+++ icu/source/icudefs.mk.in 2020-10-01 09:35:54.418128800 +0200
|
|
@@ -35,7 +35,8 @@
|
|
sysconfdir = @sysconfdir@
|
|
# controls the include of $(top_builddir)/icucross.mk at bottom of file
|
|
cross_compiling = @cross_compiling@
|
|
-cross_buildroot = @cross_buildroot@
|
|
+cross_mixed_buildroot = @cross_mixed_buildroot@
|
|
+cross_unix_buildroot = @cross_unix_buildroot@
|
|
|
|
# Package information
|
|
|
|
@@ -303,8 +304,8 @@
|
|
INSTALLED_INVOKE = $(LDLIBRARYPATH_ENVVAR)=$(libdir):$$$(LDLIBRARYPATH_ENVVAR)
|
|
|
|
# Current full path directory for cross compilation
|
|
-ifneq ($(strip $(cross_buildroot)),)
|
|
-include $(cross_buildroot)/config/icucross.inc
|
|
+ifneq ($(strip $(cross_mixed_buildroot)),)
|
|
+include $(cross_mixed_buildroot)/config/icucross.inc
|
|
endif
|
|
|
|
# Platform-specific setup
|
|
@@ -323,10 +324,11 @@
|
|
|
|
# some imported things from the cross env
|
|
TOOLEXEEXT = $(EXEEXT)
|
|
-ifneq ($(strip $(cross_buildroot)),)
|
|
-include $(cross_buildroot)/config/icucross.mk
|
|
+ifneq ($(strip $(cross_mixed_buildroot)),)
|
|
+include $(cross_mixed_buildroot)/config/icucross.mk
|
|
else
|
|
-cross_buildroot = $(top_builddir)
|
|
+cross_mixed_buildroot = $(top_builddir)
|
|
+cross_unix_buildroot = $(top_builddir)
|
|
endif
|
|
|
|
# for tests
|