builder: support gentoo crossdev + misc fixes
Support the gentoo crossdev mingw environment for the mingw cross builder: - For the cmake toolchains, add /usr/<arch>/usr to root paths, as this is the mingw root for crossdev. - -Wno-error=all no longer works with gcc 8.2, instead remove all -Werror flags in dist_post_configure(). - Also remove all -I/usr/include flags in dist_post_configure(). - Don't prepend ROOT/host/bin to the PATH globally, only in set_host_env(). This way the target config scripts are correctly found in PATH. - Bump openssl 1.0.2o -> 1.0.2p, cmake 3.10.3 -> 3.13.0-rc1, gd 2.2.4 -> 2.2.5 and glib 2.57.2 -> 2.58.1. - Add libicu unicode handling library, needed by some deps. Put into the list of dists that must be built for both the host and the target. Use a whole bunch of patches from MSys2 for it. - Make openssl build in parallel by using a sed script to prepend a + to the appropriate make rules. - Replace fontconfig EXTRA_LIBS with MAKE_ARGS: LIBS="-lintl -liconv" because these libs were being stripped out from LIBS and LDFLAGS. - Add V=1 VERBOSE=1 to all make invocations for extra verbosity (to see compile/link invocations.) - As a consequence, use dist_ninja_args() for ninja, it will still take options in DIST_MAKE_ARGS. - Add CONFIGURE_TYPE "cmakeninja" which is like the "cmake" type except with -G Ninja to use the ninja generator and built with ninja. Nothing uses this yet. - Fix dist_patch() output for already applied patches. - Add -L/usr/<arch>/usr/lib64 to CFLAGS/CXXFLAGS/OBJCXXFLAGS/LDFLAGS, because crossdev libpthreads.a is in that directory and it's not in gcc search paths. It cannot go into CPPFLAGS because those are used for windres invocations, and windres errors out with non-cpp flags. - Add -DMINGW_HAS_SECURE_API to all flags to fix a problem with the mingw headers in crossdev. - Add -lpthread to a default LIBS env var so that it's often linked last against any libraries that may need it, at least for autoconf. - Set the PKG_CONFIG env var to the path of the built pkg-config binary, not exactly sure why this was necessary. - Overhaul environment variable saving/restoring for set_host_env() so that more variables are covered and have good host defaults. - Add the dlfcn-win32 for mingw for dependencies that need -ldl. - Add some MSys2 patches for fontconfig. - Use a sed script to fix the native tools compilation when cross compiling openal. - Replace the fedora glib patches for mingw with MSys2 ones for the newer glib. - Add --with-threads=posix --disable-libelf to glib DIST_ARGS.
This commit is contained in:
parent
b60cd3326f
commit
ed8c928adb
|
@ -13,7 +13,7 @@ find_program(CMAKE_RC_COMPILER NAMES ${COMPILER_PREFIX}-windres)
|
|||
find_program(CMAKE_C_COMPILER NAMES ${COMPILER_PREFIX}-gcc)
|
||||
find_program(CMAKE_CXX_COMPILER NAMES ${COMPILER_PREFIX}-g++)
|
||||
|
||||
SET(CMAKE_FIND_ROOT_PATH /usr/${COMPILER_PREFIX} /usr/${COMPILER_PREFIX}/sys-root/mingw /usr/local/opt/mingw-w64/toolchain-${CROSS_ARCH}/${COMPILER_PREFIX})
|
||||
SET(CMAKE_FIND_ROOT_PATH /usr/${COMPILER_PREFIX} /usr/${COMPILER_PREFIX}/usr /usr/${COMPILER_PREFIX}/sys-root/mingw /usr/local/opt/mingw-w64/toolchain-${CROSS_ARCH}/${COMPILER_PREFIX})
|
||||
|
||||
if(CMAKE_PREFIX_PATH)
|
||||
set(CMAKE_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH} ${CMAKE_PREFIX_PATH})
|
||||
|
|
|
@ -13,7 +13,7 @@ find_program(CMAKE_RC_COMPILER NAMES ${COMPILER_PREFIX}-windres)
|
|||
find_program(CMAKE_C_COMPILER NAMES ${COMPILER_PREFIX}-gcc)
|
||||
find_program(CMAKE_CXX_COMPILER NAMES ${COMPILER_PREFIX}-g++)
|
||||
|
||||
SET(CMAKE_FIND_ROOT_PATH /usr/${COMPILER_PREFIX} /usr/${COMPILER_PREFIX}/sys-root/mingw /usr/local/opt/mingw-w64/toolchain-${CROSS_ARCH}/${COMPILER_PREFIX})
|
||||
SET(CMAKE_FIND_ROOT_PATH /usr/${COMPILER_PREFIX} /usr/${COMPILER_PREFIX}/usr /usr/${COMPILER_PREFIX}/sys-root/mingw /usr/local/opt/mingw-w64/toolchain-${CROSS_ARCH}/${COMPILER_PREFIX})
|
||||
|
||||
if(CMAKE_PREFIX_PATH)
|
||||
set(CMAKE_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH} ${CMAKE_PREFIX_PATH})
|
||||
|
|
|
@ -44,10 +44,10 @@ export CC_ORIG="\${CC_ORIG:-\$CC}"
|
|||
export CXX_ORIG="\${CXX_ORIG:-\$CXX}"
|
||||
|
||||
export CPPFLAGS="$CPPFLAGS -I$BUILD_ROOT/root/include"
|
||||
export CFLAGS="$CFLAGS -fPIC -I$BUILD_ROOT/root/include -L$BUILD_ROOT/root/lib -Wno-error=all"
|
||||
export CXXFLAGS="$CXXFLAGS -fPIC -I$BUILD_ROOT/root/include -L$BUILD_ROOT/root/lib -std=gnu++11 -Wno-error=all -fpermissive"
|
||||
export OBJCXXFLAGS="$OBJCXXFLAGS -fPIC -I$BUILD_ROOT/root/include -L$BUILD_ROOT/root/lib -std=gnu++11 -Wno-error=all -fpermissive"
|
||||
export LDFLAGS="$LDFLAGS -fPIC -L$BUILD_ROOT/root/lib -Wno-error=all"
|
||||
export CFLAGS="$CFLAGS -fPIC -I$BUILD_ROOT/root/include -L$BUILD_ROOT/root/lib -pthread"
|
||||
export CXXFLAGS="$CXXFLAGS -fPIC -I$BUILD_ROOT/root/include -L$BUILD_ROOT/root/lib -std=gnu++11 -fpermissive -pthread"
|
||||
export OBJCXXFLAGS="$OBJCXXFLAGS -fPIC -I$BUILD_ROOT/root/include -L$BUILD_ROOT/root/lib -std=gnu++11 -fpermissive -pthread"
|
||||
export LDFLAGS="$LDFLAGS -fPIC -L$BUILD_ROOT/root/lib -pthread"
|
||||
export STRIP="${STRIP:-strip}"
|
||||
|
||||
if [ -z "\$OPENMP" ] && echo "\$CC" | grep -Eq gcc; then
|
||||
|
@ -77,7 +77,7 @@ case "\$PATH" in
|
|||
*"$BUILD_ROOT"*)
|
||||
;;
|
||||
*)
|
||||
export PATH="$BUILD_ROOT/host/bin:$BUILD_ROOT/root/bin:$BUILD_ROOT/root/perl5/bin:\$PATH"
|
||||
export PATH="$BUILD_ROOT/root/bin:$BUILD_ROOT/root/perl5/bin:\$PATH"
|
||||
;;
|
||||
esac
|
||||
|
||||
|
@ -117,8 +117,8 @@ DISTS=$DISTS'
|
|||
zlib https://zlib.net/zlib-1.2.11.tar.gz lib/libz.a
|
||||
ccache https://www.samba.org/ftp/ccache/ccache-3.4.3.tar.xz bin/ccache
|
||||
zip https://downloads.sourceforge.net/project/infozip/Zip%203.x%20%28latest%29/3.0/zip30.tar.gz bin/zip
|
||||
openssl https://www.openssl.org/source/openssl-1.0.2o.tar.gz lib/libssl.a
|
||||
cmake https://cmake.org/files/v3.10/cmake-3.10.3.tar.gz bin/cmake
|
||||
openssl https://www.openssl.org/source/openssl-1.0.2p.tar.gz lib/libssl.a
|
||||
cmake https://cmake.org/files/v3.13/cmake-3.13.0-rc1.tar.gz bin/cmake
|
||||
m4 http://ftp.gnu.org/gnu/m4/m4-1.4.18.tar.xz bin/m4
|
||||
autoconf https://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.xz bin/autoconf
|
||||
autoconf-archive http://mirror.team-cymru.org/gnu/autoconf-archive/autoconf-archive-2017.09.28.tar.xz share/aclocal/ax_check_gl.m4
|
||||
|
@ -136,6 +136,7 @@ DISTS=$DISTS'
|
|||
flex https://github.com/westes/flex/archive/e7d45afc6aeb49745f17d21ddba4848e0c0118fc.tar.gz bin/flex
|
||||
xmlto https://releases.pagure.org/xmlto/xmlto-0.0.28.tar.bz2 bin/xmlto
|
||||
gperf http://ftp.gnu.org/pub/gnu/gperf/gperf-3.1.tar.gz bin/gperf
|
||||
libicu https://github.com/unicode-org/icu/releases/download/release-63-rc/icu4c-63rc-src.tgz lib/libicud*t*.a
|
||||
pkgconfig https://pkgconfig.freedesktop.org/releases/pkg-config-0.29.2.tar.gz bin/pkg-config
|
||||
nasm http://repo.or.cz/nasm.git/snapshot/53371ddd17b685f8880c22b8b698e494e0f1059b.tar.gz bin/nasm
|
||||
yasm http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz bin/yasm
|
||||
|
@ -156,7 +157,7 @@ DISTS=$DISTS'
|
|||
libuuid https://downloads.sourceforge.net/project/libuuid/libuuid-1.0.3.tar.gz lib/libuuid.a
|
||||
freetype http://download.savannah.gnu.org/releases/freetype/freetype-2.9.1.tar.bz2 lib/libfreetype.a
|
||||
fontconfig https://freedesktop.org/software/fontconfig/release/fontconfig-2.13.0.tar.bz2 lib/libfontconfig.a
|
||||
libgd https://github.com/libgd/libgd/releases/download/gd-2.2.4/libgd-2.2.4.tar.xz lib/libgd.a
|
||||
libgd https://github.com/libgd/libgd/releases/download/gd-2.2.5/libgd-2.2.5.tar.xz lib/libgd.a
|
||||
dejavu https://downloads.sourceforge.net/project/dejavu/dejavu/2.37/dejavu-fonts-ttf-2.37.tar.bz2 share/fonts/dejavu/DejaVuSansMono.ttf
|
||||
liberation https://releases.pagure.org/liberation-fonts/liberation-fonts-ttf-2.00.1.tar.gz share/fonts/liberation/LiberationMono-Regular.ttf
|
||||
urw http://git.ghostscript.com/?p=urw-core35-fonts.git;a=snapshot;h=91edd6ece36e84a1c6d63a1cf63a1a6d84bd443a;sf=tgz share/fonts/urw/URWBookman-Light.ttf
|
||||
|
@ -179,7 +180,7 @@ DISTS=$DISTS'
|
|||
intltool https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz bin/intltoolize
|
||||
ninja https://github.com/ninja-build/ninja/archive/v1.8.2.tar.gz bin/ninja
|
||||
meson https://github.com/mesonbuild/meson/releases/download/0.44.0/meson-0.44.0.tar.gz bin/meson
|
||||
glib https://github.com/GNOME/glib/archive/2.57.2.tar.gz lib/libglib-2.0.a
|
||||
glib https://github.com/GNOME/glib/archive/2.58.1.tar.gz lib/libglib-2.0.a
|
||||
libgpg-error https://www.gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.27.tar.bz2 lib/libgpg-error.a
|
||||
libgcrypt https://www.gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.8.2.tar.bz2 lib/libgcrypt.a
|
||||
libsecret http://ftp.gnome.org/pub/gnome/sources/libsecret/0.18/libsecret-0.18.5.tar.xz lib/libsecret-1.a
|
||||
|
@ -257,6 +258,7 @@ DIST_TAR_ARGS="$DIST_TAR_ARGS
|
|||
DIST_CONFIGURE_TYPES="$DIST_CONFIGURE_TYPES
|
||||
unzip make
|
||||
zip make
|
||||
libgd autoreconf
|
||||
harfbuzz autoconf
|
||||
python2 autoreconf
|
||||
python3 autoreconf
|
||||
|
@ -273,6 +275,7 @@ DIST_RELOCATION_TYPES="$DIST_RELOCATION_TYPES
|
|||
DIST_PRE_BUILD="$DIST_PRE_BUILD
|
||||
# xz mkdir -p build-aux; touch build-aux/config.rpath; mkdir -p po; touch po/Makefile.in.in; sed -i.bak 's/ po / /g' Makefile.am;
|
||||
getopt sed -i.bak 's/\\\$(LDFLAGS)\\(.*\\)\$/\\1 \$(LDFLAGS)/' Makefile;
|
||||
libicu cd source;
|
||||
# flex-2.6.3 sed -i.bak '/^'\"\$TAB\"'tests \\\\\$/d' Makefile.am;
|
||||
flex mkdir -p build-aux; touch build-aux/config.rpath; mkdir -p po; touch po/Makefile.in.in; sed -i.bak '/po \\\\$/d' Makefile.am;
|
||||
python3 sed -i.bak '/-Wl,-stack_size,/d' configure.ac;
|
||||
|
@ -319,6 +322,9 @@ DIST_POST_BUILD="$DIST_POST_BUILD
|
|||
"
|
||||
|
||||
DIST_POST_CONFIGURE="$DIST_POST_CONFIGURE
|
||||
openssl sed -E -i.bak ' \
|
||||
s/([^\\t]+\\\$\\((BUILD_ONE_CMD|RECURSIVE_BUILD_CMD|RECURSIVE_MAKE)\\))/+ \1/ \
|
||||
' \$(find . -name Makefile);
|
||||
"
|
||||
|
||||
DIST_CONFIGURE_OVERRIDES="$DIST_CONFIGURE_OVERRIDES
|
||||
|
@ -395,6 +401,8 @@ DIST_ARGS="$DIST_ARGS
|
|||
|
||||
DIST_BARE_MAKE_ARGS='CC="$CC"'
|
||||
|
||||
ALL_MAKE_ARGS='V=1 VERBOSE=1'
|
||||
|
||||
# have to disable ccache for openssl
|
||||
DIST_MAKE_ARGS="$DIST_MAKE_ARGS
|
||||
openssl CC=\"\$CC_ORIG -fPIC\" CXX=\"\$CXX_ORIG -fPIC\"
|
||||
|
@ -404,6 +412,7 @@ DIST_MAKE_ARGS="$DIST_MAKE_ARGS
|
|||
zip generic
|
||||
expat DOCBOOK_TO_MAN=docbook2man
|
||||
shared-mime-info -j1
|
||||
fontconfig LIBS=\"-lintl -liconv\"
|
||||
"
|
||||
|
||||
DIST_MAKE_INSTALL_ARGS="$DIST_MAKE_INSTALL_ARGS
|
||||
|
@ -419,7 +428,6 @@ DIST_EXTRA_LDFLAGS="$DIST_EXTRA_LDFLAGS
|
|||
|
||||
DIST_EXTRA_LIBS="$DIST_EXTRA_LIBS
|
||||
gettext -liconv
|
||||
fontconfig -lintl -liconv
|
||||
shared-mime-info \$LD_START_GROUP -lxml2 -lgio-2.0 -lgmodule-2.0 -lgobject-2.0 -lglib-2.0 -lpcre -llzma -lz -lm -lffi -lpthread -liconv -lresolv -ldl \$LD_END_GROUP
|
||||
python3 -lintl
|
||||
harfbuzz -lz
|
||||
|
@ -1361,7 +1369,7 @@ build_dist() {
|
|||
echo_run meson .. "$@"
|
||||
fi
|
||||
dist_post_configure "$current_dist"
|
||||
eval "set -- $(dist_make_args "$current_dist")"
|
||||
eval "set -- $(dist_ninja_args "$current_dist")"
|
||||
echo_run ninja -j $NUM_CPUS "$@"
|
||||
|
||||
if [ -z "$install_override" ]; then
|
||||
|
@ -1454,6 +1462,39 @@ build_dist() {
|
|||
echo_eval_run "$install_override $(dist_make_install_args "$current_dist")"
|
||||
fi
|
||||
|
||||
path_exists "$(install_artifact $current_dist)"
|
||||
elif [ "$config_type" = cmakeninja ]; then
|
||||
if ! command -v ninja >/dev/null; then
|
||||
error "configure type 'cmakeninja' requested but ninja is not available yet";
|
||||
fi
|
||||
|
||||
mkdir -p build
|
||||
cd build
|
||||
|
||||
if [ -n "$configure_override" ]; then
|
||||
eval "set -- $extra_dist_args"
|
||||
echo_eval_run "$configure_override $@"
|
||||
else
|
||||
eval "set -- $REQUIRED_CMAKE_ARGS $(dist_args "$current_dist" cmake) $extra_dist_args -G Ninja"
|
||||
echo_run cmake .. "$@"
|
||||
fi
|
||||
dist_post_configure "$current_dist"
|
||||
eval "set -- $(dist_ninja_args "$current_dist")"
|
||||
echo_run ninja -j$NUM_CPUS "$@"
|
||||
|
||||
if [ -z "$install_override" ]; then
|
||||
rm -rf destdir
|
||||
mkdir destdir
|
||||
|
||||
eval "set -- $(dist_make_install_args "$current_dist")"
|
||||
|
||||
echo_run make "$@" install DESTDIR="$PWD/destdir" || :
|
||||
|
||||
install_dist "$current_dist"
|
||||
else
|
||||
echo_eval_run "$install_override $(dist_make_install_args "$current_dist")"
|
||||
fi
|
||||
|
||||
path_exists "$(install_artifact $current_dist)"
|
||||
elif [ "$config_type" = cmake ] || [ -z "$config_type" -a -f CMakeLists.txt ]; then
|
||||
mkdir -p build
|
||||
|
@ -2136,7 +2177,14 @@ dist_make_args() {
|
|||
current_dist=$1
|
||||
[ -n "$current_dist" ] || die 'dist_make_args: dist name required'
|
||||
|
||||
puts "$(table_line DIST_MAKE_ARGS $current_dist)" || :
|
||||
puts "$ALL_MAKE_ARGS $(table_line DIST_MAKE_ARGS $current_dist)" || :
|
||||
}
|
||||
|
||||
dist_ninja_args() {
|
||||
current_dist=$1
|
||||
[ -n "$current_dist" ] || die 'dist_ninja_args: dist name required'
|
||||
|
||||
puts "-v $(table_line DIST_MAKE_ARGS $current_dist)" || :
|
||||
}
|
||||
|
||||
dist_make_install_args() {
|
||||
|
@ -2185,9 +2233,11 @@ dist_patch() {
|
|||
|
||||
# reset patch level to 1 which is default
|
||||
_patch_level=-p1
|
||||
fi
|
||||
|
||||
done_msg
|
||||
done_msg
|
||||
else
|
||||
puts "${NL}[32mPatch [1;34m$_patch_url[0m to [1;35m$current_dist[0m is already appplied...${NL}${NL}"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
|
@ -2222,6 +2272,18 @@ dist_post_configure() {
|
|||
|
||||
eval "$_cmd"
|
||||
fi
|
||||
|
||||
# sometimes PREFIX/include gets added to header search
|
||||
# definitely don't want this
|
||||
# also definitely don't want any kind of -Werror
|
||||
find . -name Makefile | while IFS=$NL read -r make_file; do
|
||||
sed -i.bak '
|
||||
s,-I/usr/include , ,g
|
||||
s,-I/usr/include$,,g
|
||||
s,-Werror[^ ]* , ,g
|
||||
s,-Werror[^ ]*$,,g
|
||||
' "$make_file"
|
||||
done
|
||||
}
|
||||
|
||||
dist_post_build() {
|
||||
|
|
|
@ -4,6 +4,7 @@ set -e
|
|||
|
||||
target_bits=64
|
||||
target_cpu=x86_64
|
||||
lib_suffix=64
|
||||
|
||||
case "$1" in
|
||||
-64)
|
||||
|
@ -12,6 +13,7 @@ case "$1" in
|
|||
-32)
|
||||
target_bits=32
|
||||
target_cpu=i686
|
||||
lib_suffix=
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
|
@ -44,6 +46,12 @@ export CC='${target_arch}-gcc'
|
|||
export CXX='${target_arch}-g++'
|
||||
export STRIP='${target_arch}-strip'
|
||||
|
||||
export CFLAGS="\$CFLAGS -L/usr/${target_arch}/usr/lib${lib_suffix}"
|
||||
export CPPFLAGS="\$CPPFLAGS"
|
||||
export CXXFLAGS="\$CXXFLAGS -L/usr/${target_arch}/usr/lib${lib_suffix}"
|
||||
export OBJCXXFLAGS="\$OBJCXXFLAGS -L/usr/${target_arch}/usr/lib${lib_suffix}"
|
||||
export LDFLAGS="-L/usr/${target_arch}/usr/lib${lib_suffix} \$LDFLAGS"
|
||||
|
||||
EOF
|
||||
)
|
||||
|
||||
|
@ -66,10 +74,6 @@ table_line_replace DIST_POST_BUILD glib "$(table_line DIST_POST_BUILD glib
|
|||
|
||||
table_line_append DIST_ARGS libsoxr '-DHAVE_WORDS_BIGENDIAN_EXITCODE=0'
|
||||
|
||||
# don't want mingw libuuid for host fontconfig
|
||||
table_line_append DIST_PRE_BUILD fontconfig ':; unset UUID_LIBS;'
|
||||
table_line_append DIST_POST_BUILD fontconfig ':; eval "$BUILD_ENV";'
|
||||
|
||||
vpx_target=x86-win32-gcc
|
||||
[ "$target_bits" -eq 64 ] && vpx_target=x86_64-win64-gcc
|
||||
|
||||
|
|
|
@ -8,13 +8,17 @@ CROSS_OS=windows
|
|||
|
||||
BUILD_ENV=$BUILD_ENV$(cat <<EOF
|
||||
|
||||
export CFLAGS="$CFLAGS -static-libgcc -static-libstdc++ -static -lpthread"
|
||||
export CXXFLAGS="$CXXFLAGS -static-libgcc -static-libstdc++ -static -lpthread"
|
||||
export OBJCXXFLAGS="$OBJCXXFLAGS -static-libgcc -static-libstdc++ -static -lpthread"
|
||||
export LDFLAGS="$LDFLAGS -static-libgcc -static-libstdc++ -static -lpthread"
|
||||
export CPPFLAGS="$CPPFLAGS -DMINGW_HAS_SECURE_API"
|
||||
export CFLAGS="$CFLAGS -static-libgcc -static-libstdc++ -static -lpthread -DMINGW_HAS_SECURE_API"
|
||||
export CXXFLAGS="$CXXFLAGS -static-libgcc -static-libstdc++ -static -lpthread -DMINGW_HAS_SECURE_API"
|
||||
export OBJCXXFLAGS="$OBJCXXFLAGS -static-libgcc -static-libstdc++ -static -lpthread -DMINGW_HAS_SECURE_API"
|
||||
export LDFLAGS="$LDFLAGS -static-libgcc -static-libstdc++ -static -lpthread -DMINGW_HAS_SECURE_API"
|
||||
export LIBS="-lpthread"
|
||||
|
||||
export UUID_LIBS="-luuid_mingw -luuid"
|
||||
|
||||
export PKG_CONFIG="$BUILD_ROOT/root/bin/pkg-config"
|
||||
|
||||
EOF
|
||||
)
|
||||
|
||||
|
@ -22,6 +26,13 @@ EOF
|
|||
: ${HOST_CXX:=ccache g++}
|
||||
: ${HOST_CC_ORIG:=gcc}
|
||||
: ${HOST_CXX_ORIG:=g++}
|
||||
: ${HOST_CPPFLAGS:="-I$BUILD_ROOT/root/include"}
|
||||
: ${HOST_CFLAGS:="-fPIC -I$BUILD_ROOT/root/include -L$BUILD_ROOT/root/lib -pthread"}
|
||||
: ${HOST_CXXFLAGS:="-fPIC -I$BUILD_ROOT/root/include -L$BUILD_ROOT/root/lib -std=gnu++11 -fpermissive -pthread"}
|
||||
: ${HOST_OBJCXXFLAGS:="-fPIC -I$BUILD_ROOT/root/include -L$BUILD_ROOT/root/lib -std=gnu++11 -fpermissive -pthread"}
|
||||
: ${HOST_LDFLAGS:="-fPIC -L$BUILD_ROOT/root/lib -pthread"}
|
||||
: ${HOST_LIBS:=}
|
||||
: ${HOST_UUID_LIBS:=}
|
||||
: ${HOST_STRIP:=strip}
|
||||
|
||||
. "$(dirname "$0")/../builder/core.sh"
|
||||
|
@ -52,7 +63,7 @@ host_dists="$host_dists autoconf autoconf-archive automake m4 gsed bison \
|
|||
flex-2.6.3 flex c2man docbook2x ccache"
|
||||
host_dists=$(list_remove_duplicates $host_dists)
|
||||
|
||||
both_dists="$both_dists openssl zlib bzip2 libiconv"
|
||||
both_dists="$both_dists openssl zlib bzip2 libiconv libicu"
|
||||
|
||||
if [ "$os" != windows ]; then
|
||||
both_dists="$both_dists libuuid"
|
||||
|
@ -68,20 +79,29 @@ set_host_env() {
|
|||
OCXX=$CXX
|
||||
OCC_ORIG=$CC_ORIG
|
||||
OCXX_ORIG=$CXX_ORIG
|
||||
OCPPFLAGS=$CPPFLAGS
|
||||
OCFLAGS=$CFLAGS
|
||||
OCXXFLAGS=$CXXFLAGS
|
||||
OOBJCXXFLAGS=$OBJCXXFLAGS
|
||||
OLDFLAGS=$LDFLAGS
|
||||
OLIBS=$LIBS
|
||||
OUUID_LIBS=$UUID_LIBS
|
||||
OSTRIP=$STRIP
|
||||
OPATH=$PATH
|
||||
|
||||
export CC="$HOST_CC"
|
||||
export CXX="$HOST_CXX"
|
||||
export CC_ORIG="$HOST_CC_ORIG"
|
||||
export CXX_ORIG="$HOST_CXX_ORIG"
|
||||
export CPPFLAGS="$HOST_CPPFLAGS"
|
||||
export CFLAGS="$HOST_CFLAGS"
|
||||
export CXXFLAGS="$HOST_CXXFLAGS"
|
||||
export OBJCXXFLAGS="$HOST_OBJCXXFLAGS"
|
||||
export LDFLAGS="$HOST_LDFLAGS"
|
||||
export LIBS="$HOST_LIBS"
|
||||
export UUID_LIBS="$HOST_UUID_LIBS"
|
||||
export STRIP="$HOST_STRIP"
|
||||
|
||||
OCFLAGS=$CFLAGS OCPPFLAGS=$CPPFLAGS OCXXFLAGS=$CXXFLAGS OOBJCXXFLAGS=$OBJCXXFLAGS OLDFLAGS=$LDFLAGS
|
||||
|
||||
CFLAGS=$( puts "$CFLAGS" | sed 's/ -static-libgcc -static-libstdc++ -static -lpthread//g')
|
||||
CXXFLAGS=$( puts "$CXXFLAGS" | sed 's/ -static-libgcc -static-libstdc++ -static -lpthread//g')
|
||||
OBJCXXFLAGS=$(puts "$OBJCXXFLAGS" | sed 's/ -static-libgcc -static-libstdc++ -static -lpthread//g')
|
||||
LDFLAGS=$( puts "$LDFLAGS" | sed 's/ -static-libgcc -static-libstdc++ -static -lpthread//g')
|
||||
export PATH="$BUILD_ROOT/host/bin:$PATH"
|
||||
|
||||
OREQUIRED_CONFIGURE_ARGS=$REQUIRED_CONFIGURE_ARGS
|
||||
OREQUIRED_CMAKE_ARGS=$REQUIRED_CMAKE_ARGS
|
||||
|
@ -102,20 +122,20 @@ unset_host_env() {
|
|||
export CXX="$OCXX"
|
||||
export CC_ORIG="$OCC_ORIG"
|
||||
export CXX_ORIG="$OCXX_ORIG"
|
||||
export STRIP="$OSTRIP"
|
||||
OCC= OCXX= OCC_ORIG= OCXX_ORIG= OSTRIP=
|
||||
|
||||
export CFLAGS="$OCFLAGS"
|
||||
export CPPFLAGS="$OCPPFLAGS"
|
||||
export CFLAGS="$OCFLAGS"
|
||||
export CXXFLAGS="$OCXXFLAGS"
|
||||
export OBJCXXFLAGS="$OOBJCXXFLAGS"
|
||||
export LDFLAGS="$OLDFLAGS"
|
||||
OCFLAGS= OCPPFLAGS= OCXXFLAGS= OOBJCXXFLAGS= OLDFLAGS=
|
||||
export LIBS="$OLIBS"
|
||||
export UUID_LIBS="$OUUID_LIBS"
|
||||
export STRIP="$OSTRIP"
|
||||
export PATH="$OPATH"
|
||||
OCC= OCXX= OCC_ORIG= OCXX_ORIG= OCPPFLAGS= OCFLAGS= OCXXFLAGS= OOBJCXXFLAGS= OLDFLAGS= OLIBS= OUUID_LIBS= OSTRIP= OPATH=
|
||||
|
||||
REQUIRED_CONFIGURE_ARGS=$OREQUIRED_CONFIGURE_ARGS
|
||||
REQUIRED_CMAKE_ARGS=$OREQUIRED_CMAKE_ARGS
|
||||
OREQUIRED_CONFIGURE_ARGS=
|
||||
OREQUIRED_CMAKE_ARGS=
|
||||
OREQUIRED_CONFIGURE_ARGS= OREQUIRED_CMAKE_ARGS=
|
||||
fi
|
||||
|
||||
# make links to executables in the target as well
|
||||
|
@ -201,6 +221,37 @@ fi
|
|||
|
||||
# done with libuuid
|
||||
|
||||
table_line_append DIST_PRE_BUILD zlib ":; \
|
||||
sed -i.bak ' \
|
||||
s/defined(_WIN32) *|| *defined(__CYGWIN__)/defined(_WIN32)/ \
|
||||
' gzguts.h; \
|
||||
"
|
||||
|
||||
table_line_append DIST_POST_BUILD zlib-target ":; \
|
||||
rm -f \$BUILD_ROOT/root/lib/libz.dll.a \$BUILD_ROOT/root/bin/libz.dll; \
|
||||
"
|
||||
|
||||
# mingw -ldl equivalent, needed by some things
|
||||
table_insert_after DISTS zlib "dlfcn https://github.com/dlfcn-win32/dlfcn-win32/archive/v1.1.2.tar.gz lib/libdl.a"
|
||||
|
||||
table_line_replace DIST_CONFIGURE_TYPES dlfcn cmake
|
||||
|
||||
table_line_append DIST_ARGS libicu-target "--with-cross-build=$BUILD_ROOT/dists/libicu/source"
|
||||
|
||||
table_line_append DIST_PATCHES libicu-target " \
|
||||
https://raw.githubusercontent.com/Alexpux/MINGW-packages/master/mingw-w64-icu/0004-move-to-bin.mingw.patch \
|
||||
https://raw.githubusercontent.com/Alexpux/MINGW-packages/master/mingw-w64-icu/0007-actually-move-to-bin.mingw.patch \
|
||||
https://raw.githubusercontent.com/Alexpux/MINGW-packages/master/mingw-w64-icu/0008-data-install-dir.mingw.patch \
|
||||
https://raw.githubusercontent.com/Alexpux/MINGW-packages/master/mingw-w64-icu/0009-fix-bindir-in-config.mingw.patch \
|
||||
https://raw.githubusercontent.com/Alexpux/MINGW-packages/master/mingw-w64-icu/0010-msys-rules-for-makefiles.mingw.patch \
|
||||
https://raw.githubusercontent.com/Alexpux/MINGW-packages/master/mingw-w64-icu/0011-sbin-dir.mingw.patch \
|
||||
https://raw.githubusercontent.com/Alexpux/MINGW-packages/master/mingw-w64-icu/0012-libprefix.mingw.patch \
|
||||
https://raw.githubusercontent.com/Alexpux/MINGW-packages/master/mingw-w64-icu/0015-debug.mingw.patch \
|
||||
https://raw.githubusercontent.com/Alexpux/MINGW-packages/master/mingw-w64-icu/0016-icu-pkgconfig.patch \
|
||||
https://raw.githubusercontent.com/Alexpux/MINGW-packages/master/mingw-w64-icu/0017-icu-config-versioning.patch \
|
||||
https://raw.githubusercontent.com/Alexpux/MINGW-packages/master/mingw-w64-icu/0021-mingw-static-libraries-without-s.patch \
|
||||
"
|
||||
|
||||
table_insert_after DISTS libiconv-target '
|
||||
catgets https://downloads.sourceforge.net/project/mingw/MinGW/Extension/catgets/mingw-catgets-1.0.1/mingw-catgets-1.0.1-src.tar.gz include/langinfo.h
|
||||
'
|
||||
|
@ -213,6 +264,16 @@ table_line_append DIST_POST_BUILD catgets ":; \
|
|||
rm -f \$BUILD_ROOT/root/lib/libcatgets.dll.a \$BUILD_ROOT/root/bin/libcatgets.dll; \
|
||||
"
|
||||
|
||||
table_line_append DIST_PATCHES fontconfig-target " \
|
||||
https://raw.githubusercontent.com/Alexpux/MINGW-packages/master/mingw-w64-fontconfig/0001-fix-config-linking.all.patch \
|
||||
https://raw.githubusercontent.com/Alexpux/MINGW-packages/master/mingw-w64-fontconfig/0002-fix-mkdir.mingw.patch \
|
||||
https://raw.githubusercontent.com/Alexpux/MINGW-packages/master/mingw-w64-fontconfig/0004-fix-mkdtemp.mingw.patch \
|
||||
https://raw.githubusercontent.com/Alexpux/MINGW-packages/master/mingw-w64-fontconfig/0005-fix-setenv.mingw.patch \
|
||||
https://raw.githubusercontent.com/Alexpux/MINGW-packages/master/mingw-w64-fontconfig/0007-pkgconfig.mingw.patch \
|
||||
"
|
||||
|
||||
table_line_replace DIST_CONFIGURE_TYPES fontconfig-target autoreconf
|
||||
|
||||
table_line_append DIST_PATCHES libgd 'https://gist.githubusercontent.com/rkitover/c64ea5b83ddea94ace58c40c7de42879/raw/fbaf4885fbefb302116b56626c0e191df514e8c6/libgd-2.2.4-mingw-static.patch'
|
||||
|
||||
table_insert_before DISTS sfml '
|
||||
|
@ -221,18 +282,11 @@ table_insert_before DISTS sfml '
|
|||
|
||||
table_line_append DIST_ARGS openal '-DLIBTYPE=STATIC -DALSOFT_UTILS=OFF -DALSOFT_EXAMPLES=OFF -DALSOFT_TESTS=OFF'
|
||||
|
||||
# this is necessary so the native tools openal uses to build compile when cross-compiling
|
||||
table_line_append DIST_PRE_BUILD openal ":; sed -i.bak 's/\\(-G \"\\\${CMAKE_GENERATOR}\"\\)/\\1 -DCMAKE_C_COMPILER=cc -DCMAKE_CXX_COMPILER=c++ -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache/' CMakeLists.txt;"
|
||||
|
||||
table_line_replace DIST_ARGS mp3lame "LDFLAGS='$LDFLAGS $BUILD_ROOT/root/lib/libcatgets.a'"
|
||||
|
||||
table_line_append DIST_PRE_BUILD zlib ":; \
|
||||
sed -i.bak ' \
|
||||
s/defined(_WIN32) *|| *defined(__CYGWIN__)/defined(_WIN32)/ \
|
||||
' gzguts.h; \
|
||||
"
|
||||
|
||||
table_line_append DIST_POST_BUILD zlib-target ":; \
|
||||
rm -f \$BUILD_ROOT/root/lib/libz.dll.a \$BUILD_ROOT/root/bin/libz.dll; \
|
||||
"
|
||||
|
||||
table_line_replace DIST_CONFIGURE_TYPES zlib-target cmake
|
||||
table_line_append DIST_ARGS zlib-target -DUNIX=1
|
||||
table_line_remove DIST_CONFIGURE_OVERRIDES zlib-target
|
||||
|
@ -260,12 +314,11 @@ table_line_append DIST_ARGS ffmpeg "--extra-ldflags='-Wl,-allow-multiple-definit
|
|||
|
||||
table_line_append DIST_ARGS gettext "--enable-threads=windows"
|
||||
|
||||
table_line_append DIST_ARGS glib "--with-threads=posix --disable-libelf"
|
||||
|
||||
table_line_append DIST_PATCHES glib "\
|
||||
https://src.fedoraproject.org/rpms/mingw-glib2/raw/master/f/0001-Use-CreateFile-on-Win32-to-make-sure-g_unlink-always.patch \
|
||||
https://src.fedoraproject.org/rpms/mingw-glib2/raw/master/f/glib-formaterror.patch \
|
||||
https://src.fedoraproject.org/rpms/mingw-glib2/raw/master/f/glib-include-time-h-for-localtime_r.patch \
|
||||
https://src.fedoraproject.org/rpms/mingw-glib2/raw/master/f/glib-ipmreqsource.patch \
|
||||
https://src.fedoraproject.org/rpms/mingw-glib2/raw/master/f/glib-prefer-constructors-over-DllMain.patch \
|
||||
https://raw.githubusercontent.com/Alexpux/MINGW-packages/master/mingw-w64-glib2/0001-Use-CreateFile-on-Win32-to-make-sure-g_unlink-always.patch \
|
||||
https://raw.githubusercontent.com/Alexpux/MINGW-packages/master/mingw-w64-glib2/0001-win32-Make-the-static-build-work-with-MinGW-when-pos.patch \
|
||||
https://gist.githubusercontent.com/rkitover/2edaf9583fb3068bb14016571e6f7d01/raw/ece80116d5618f372464f02392a9bcab670ce6c1/glib-mingw-no-strerror_s.patch \
|
||||
"
|
||||
|
||||
|
|
|
@ -13,10 +13,10 @@ set_host_env_hook() {
|
|||
export CC_ORIG=clang
|
||||
export CXX_ORIG=clang++
|
||||
export CPPFLAGS="-I$BUILD_ROOT/root/include -DICONV_CONST="
|
||||
export CFLAGS="-fPIC -I$BUILD_ROOT/root/include -L$BUILD_ROOT/root/lib -Wno-error=all -framework Carbon -framework Foundation -framework CoreServices -Wno-unused-command-line-argument -DICONV_CONST= -Wl,-no_compact_unwind"
|
||||
export CXXFLAGS="-fPIC -I$BUILD_ROOT/root/include -L$BUILD_ROOT/root/lib -std=gnu++11 -Wno-error=all -fpermissive -stdlib=libc++ -framework Carbon -framework Foundation -framework CoreServices -Wno-unused-command-line-argument -DICONV_CONST= -Wl,-no_compact_unwind"
|
||||
export OBJCXXFLAGS="-fPIC -I$BUILD_ROOT/root/include -L$BUILD_ROOT/root/lib -std=gnu++11 -Wno-error=all -fpermissive -stdlib=libc++ -framework Carbon -framework Foundation -framework CoreServices -Wno-unused-command-line-argument -DICONV_CONST= -Wl,-no_compact_unwind"
|
||||
export LDFLAGS="-fPIC -L$BUILD_ROOT/root/lib -Wno-error=all -framework Carbon -framework Foundation -framework CoreServices -Wno-unused-command-line-argument -Wl,-no_compact_unwind"
|
||||
export CFLAGS="-fPIC -I$BUILD_ROOT/root/include -L$BUILD_ROOT/root/lib -framework Carbon -framework Foundation -framework CoreServices -Wno-unused-command-line-argument -DICONV_CONST= -Wl,-no_compact_unwind"
|
||||
export CXXFLAGS="-fPIC -I$BUILD_ROOT/root/include -L$BUILD_ROOT/root/lib -std=gnu++11 -fpermissive -stdlib=libc++ -framework Carbon -framework Foundation -framework CoreServices -Wno-unused-command-line-argument -DICONV_CONST= -Wl,-no_compact_unwind"
|
||||
export OBJCXXFLAGS="-fPIC -I$BUILD_ROOT/root/include -L$BUILD_ROOT/root/lib -std=gnu++11 -fpermissive -stdlib=libc++ -framework Carbon -framework Foundation -framework CoreServices -Wno-unused-command-line-argument -DICONV_CONST= -Wl,-no_compact_unwind"
|
||||
export LDFLAGS="-fPIC -L$BUILD_ROOT/root/lib -framework Carbon -framework Foundation -framework CoreServices -Wno-unused-command-line-argument -Wl,-no_compact_unwind"
|
||||
}
|
||||
|
||||
unset_host_env_hook() {
|
||||
|
|
Loading…
Reference in New Issue