Skip to content

Commit 906d868

Browse files
committed
Changes needed to build full Cygwin package with Linux cross-toolchains
1 parent 6103a96 commit 906d868

15 files changed

Lines changed: 270 additions & 11 deletions
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
set(CMAKE_SYSTEM_NAME Windows)
2+
set(CMAKE_SYSTEM_PROCESSOR ARM64)
3+
set(CMAKE_C_COMPILER aarch64-pc-cygwin-gcc)
4+
set(CMAKE_CXX_COMPILER aarch64-pc-cygwin-g++)
5+
set(CMAKE_RC_COMPILER aarch64-pc-cygwin-windres)
6+
set(CMAKE_RANLIB aarch64-pc-cygwin-ranlib)
7+
set(CMAKE_AR aarch64-pc-cygwin-ar)
8+
set(CMAKE_C_FLAGS_INIT "-D_WIN64")
9+
set(CMAKE_CXX_FLAGS_INIT "-D_WIN64")
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
set(CMAKE_SYSTEM_NAME Windows)
2+
set(CMAKE_SYSTEM_PROCESSOR x86_64)
3+
set(CMAKE_C_COMPILER x86_64-pc-cygwin-gcc)
4+
set(CMAKE_CXX_COMPILER x86_64-pc-cygwin-g++)
5+
set(CMAKE_RC_COMPILER x86_64-pc-cygwin-windres)
6+
set(CMAKE_RANLIB x86_64-pc-cygwin-ranlib)
7+
set(CMAKE_AR x86_64-pc-cygwin-ar)

.github/scripts/binutils/build.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,15 @@ if [[ "$RUN_CONFIG" = 1 ]] || [[ ! -f "$BINUTILS_BUILD_PATH/Makefile" ]]; then
2020
*cygwin*)
2121
# Compared to the upstream recipe:
2222
# ADDED: --with-sysroot to avoid using the host sysroot.
23+
# ADDED: --disable-nls to avoid dependency on gettext.
2324
# CHANGED: --enable-shared to --disable-shared to allow easier transfer
2425
# the produced host binaries across different build environments.
2526
TARGET_OPTIONS="$TARGET_OPTIONS \
2627
--enable-static \
2728
--disable-shared \
2829
--enable-host-shared \
2930
--enable-install-libiberty \
31+
--disable-nls \
3032
--with-sysroot=$TOOLCHAIN_PATH \
3133
--with-build-sysroot=$TOOLCHAIN_PATH \
3234
--with-system-zlib \

.github/scripts/build.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,12 @@ $ROOT_PATH/.github/scripts/toolchain/build-gcc.sh
5353

5454
if [[ "$PLATFORM" =~ mingw ]]; then
5555
$ROOT_PATH/.github/scripts/toolchain/build-mingw.sh
56+
$ROOT_PATH/.github/scripts/toolchain/build-zlib.sh
5657
fi
5758
if [[ "$PLATFORM" =~ cygwin ]]; then
59+
$ROOT_PATH/.github/scripts/toolchain/build-intl.sh
60+
$ROOT_PATH/.github/scripts/toolchain/build-iconv.sh
61+
$ROOT_PATH/.github/scripts/toolchain/build-bfd.sh
5862
$ROOT_PATH/.github/scripts/toolchain/build-cygwin.sh 2
5963
fi
6064

.github/scripts/config.sh

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,14 @@ BASH_REPO=${BASH_REPO:-Windows-on-ARM-Experiments/bash}
9797
BASH_BRANCH=${BASH_BRANCH:-woarm64}
9898
BASH_PATH=${BASH_PATH:-~/$TARGET/bash}
9999

100+
GETTEXT_REPO=${GETTEXT_REPO:-Windows-on-ARM-Experiments/gettext}
101+
GETTEXT_BRANCH=${GETTEXT_BRANCH:-woarm64}
102+
GETTEXT_PATH=${GETTEXT_PATH:-~/gettext}
103+
104+
ICONV_REPO=${ICONV_REPO:-Windows-on-ARM-Experiments/libiconv}
105+
ICONV_BRANCH=${ICONV_BRANCH:-woarm64}
106+
ICONV_PATH=${ICONV_PATH:-~/libiconv}
107+
100108
TESTS_PATH=${TESTS_PATH:-$ROOT_PATH/tests/build/bin/}
101109
TESTS_PACKAGE_NAME=${TESTS_PACKAGE_NAME:-$TOOLCHAIN_NAME-tests.tar.gz}
102110

.github/scripts/install-dependencies.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,14 @@ echo "::group::Install Dependencies"
1414
build-essential \
1515
busybox \
1616
ccache \
17+
cmake \
1718
dejagnu \
1819
docbook2x \
1920
flex \
21+
gettext \
2022
gdc \
23+
gperf \
24+
groff \
2125
jq \
2226
libc6-dev-arm64-cross \
2327
libc6-dev-amd64-cross \
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
#!/bin/bash
2+
3+
source `dirname ${BASH_SOURCE[0]}`/../config.sh
4+
5+
BINUTILS_SOURCE_PATH=$SOURCE_PATH/binutils
6+
BFD_BUILD_PATH=$BUILD_PATH/bfd
7+
8+
mkdir -p $BFD_BUILD_PATH/zlib
9+
mkdir -p $BFD_BUILD_PATH/libsframe
10+
mkdir -p $BFD_BUILD_PATH/bfd
11+
12+
if [[ "$RUN_CONFIG" = 1 ]] || [[ ! -f "$BFD_BUILD_PATH/Makefile" ]]; then
13+
echo "::group::Configure bfd"
14+
rm -rf $BFD_BUILD_PATH/zlib/*
15+
rm -rf $BFD_BUILD_PATH/libsframe/*
16+
rm -rf $BFD_BUILD_PATH/bfd/*
17+
18+
if [[ "$DEBUG" = 1 ]]; then
19+
HOST_OPTIONS="$HOST_OPTIONS \
20+
--enable-debug"
21+
fi
22+
23+
(cd $BFD_BUILD_PATH/zlib && \
24+
$BINUTILS_SOURCE_PATH/zlib/configure \
25+
--prefix=$TOOLCHAIN_PATH \
26+
--build=$BUILD \
27+
--host=$TARGET \
28+
--target=$TARGET \
29+
$HOST_OPTIONS \
30+
$TARGET_OPTIONS)
31+
32+
33+
(cd $BFD_BUILD_PATH/libsframe && \
34+
$BINUTILS_SOURCE_PATH/libsframe/configure \
35+
--prefix=$TOOLCHAIN_PATH \
36+
--build=$BUILD \
37+
--host=$TARGET \
38+
--target=$TARGET \
39+
$HOST_OPTIONS \
40+
$TARGET_OPTIONS)
41+
42+
(cd $BFD_BUILD_PATH/bfd && \
43+
$BINUTILS_SOURCE_PATH/bfd/configure \
44+
--prefix=$TOOLCHAIN_PATH \
45+
--build=$BUILD \
46+
--host=$TARGET \
47+
--target=$TARGET \
48+
$HOST_OPTIONS \
49+
$TARGET_OPTIONS)
50+
echo "::endgroup::"
51+
fi
52+
53+
echo "::group::Build bfd"
54+
(cd $BFD_BUILD_PATH/libsframe && make $BUILD_MAKE_OPTIONS)
55+
(cd $BFD_BUILD_PATH/bfd && make $BUILD_MAKE_OPTIONS)
56+
echo "::endgroup::"
57+
58+
if [[ "$RUN_INSTALL" = 1 ]]; then
59+
echo "::group::Install bfd"
60+
(cd $BFD_BUILD_PATH/zlib && make install)
61+
(cd $BFD_BUILD_PATH/libsframe && make install)
62+
(cd $BFD_BUILD_PATH/bfd && make install)
63+
if [[ "$DELETE_BUILD" = 1 ]]; then
64+
rm -rf $BFD_BUILD_PATH
65+
fi
66+
echo "::endgroup::"
67+
fi
68+
69+
echo 'Success!'
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#!/bin/bash
2+
3+
source `dirname ${BASH_SOURCE[0]}`/../config.sh
4+
5+
ICONV_SOURCE_PATH=$SOURCE_PATH/iconv
6+
ICONV_BUILD_PATH=$BUILD_PATH/iconv
7+
8+
mkdir -p $ICONV_BUILD_PATH
9+
cd $ICONV_BUILD_PATH
10+
11+
if [[ "$RUN_CONFIG" = 1 ]] || [[ ! -f "$ICONV_BUILD_PATH/Makefile" ]]; then
12+
echo "::group::Configure iconv"
13+
rm -rf $ICONV_BUILD_PATH/*
14+
15+
(cd $ICONV_SOURCE_PATH && ./autopull.sh && ./autogen.sh)
16+
17+
if [[ "$DEBUG" = 1 ]]; then
18+
HOST_OPTIONS="$HOST_OPTIONS \
19+
--enable-debug"
20+
fi
21+
22+
$ICONV_SOURCE_PATH/configure \
23+
--prefix=$TOOLCHAIN_PATH \
24+
--build=$BUILD \
25+
--host=$HOST \
26+
--enable-static \
27+
$HOST_OPTIONS \
28+
$TARGET_OPTIONS
29+
echo "::endgroup::"
30+
fi
31+
32+
echo "::group::Build iconv"
33+
(cd $ICONV_BUILD_PATH && make $BUILD_MAKE_OPTIONS)
34+
echo "::endgroup::"
35+
36+
if [[ "$RUN_INSTALL" = 1 ]]; then
37+
echo "::group::Install iconv"
38+
(cd $ICONV_BUILD_PATH && make install)
39+
if [[ "$DELETE_BUILD" = 1 ]]; then
40+
rm -rf $ICONV_BUILD_PATH
41+
fi
42+
echo "::endgroup::"
43+
fi
44+
45+
echo 'Success!'
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#!/bin/bash
2+
3+
source `dirname ${BASH_SOURCE[0]}`/../config.sh
4+
5+
GETTEXT_SOURCE_PATH=$SOURCE_PATH/gettext
6+
INTL_BUILD_PATH=$BUILD_PATH/intl
7+
8+
mkdir -p $INTL_BUILD_PATH
9+
cd $INTL_BUILD_PATH
10+
11+
if [[ "$RUN_CONFIG" = 1 ]] || [[ ! -f "$INTL_BUILD_PATH/Makefile" ]]; then
12+
echo "::group::Configure gettext"
13+
rm -rf $INTL_BUILD_PATH/*
14+
15+
(cd $GETTEXT_SOURCE_PATH && ./autopull.sh && ./autogen.sh)
16+
17+
if [[ "$DEBUG" = 1 ]]; then
18+
HOST_OPTIONS="$HOST_OPTIONS \
19+
--enable-debug"
20+
fi
21+
22+
$GETTEXT_SOURCE_PATH/configure \
23+
--prefix=$TOOLCHAIN_PATH \
24+
--build=$BUILD \
25+
--host=$HOST \
26+
--with-included-gettext \
27+
$HOST_OPTIONS \
28+
$TARGET_OPTIONS
29+
echo "::endgroup::"
30+
fi
31+
32+
echo "::group::Build intl"
33+
(cd $INTL_BUILD_PATH/gettext-runtime/intl && make $BUILD_MAKE_OPTIONS)
34+
echo "::endgroup::"
35+
36+
if [[ "$RUN_INSTALL" = 1 ]]; then
37+
echo "::group::Install intl"
38+
(cd $INTL_BUILD_PATH/gettext-runtime/intl && make install)
39+
if [[ "$DELETE_BUILD" = 1 ]]; then
40+
rm -rf $INTL_BUILD_PATH
41+
fi
42+
echo "::endgroup::"
43+
fi
44+
45+
echo 'Success!'

.github/scripts/toolchain/build-mingw-crt.sh

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -77,21 +77,25 @@ if [[ "$RUN_INSTALL" = 1 ]]; then
7777
case "$PLATFORM" in
7878
*cygwin*)
7979
pushd $TOOLCHAIN_PATH/$TARGET/lib
80-
ln -fs w32api/libkernel32.a .
81-
ln -fs w32api/libuser32.a .
8280
ln -fs w32api/libadvapi32.a .
83-
ln -fs w32api/libshell32.a .
84-
ln -fs w32api/libgdi32.a .
8581
ln -fs w32api/libcomdlg32.a .
86-
ln -fs w32api/libntdll.a .
82+
ln -fs w32api/libdbghelp.a .
83+
ln -fs w32api/libgdi32.a .
84+
ln -fs w32api/libkernel32.a .
8785
ln -fs w32api/libnetapi32.a .
88-
ln -fs w32api/libpsapi.a .
89-
ln -fs w32api/libuserenv.a .
9086
ln -fs w32api/libnetapi32.a .
91-
ln -fs w32api/libdbghelp.a .
87+
ln -fs w32api/libntdll.a .
88+
ln -fs w32api/libole32.a .
89+
ln -fs w32api/liboleaut32.a .
9290
ln -fs w32api/libonecore.a .
9391
ln -fs w32api/libpdh.a .
92+
ln -fs w32api/libpsapi.a .
93+
ln -fs w32api/libshell32.a .
94+
ln -fs w32api/libuser32.a .
95+
ln -fs w32api/libuserenv.a .
96+
ln -fs w32api/libuuid.a .
9497
ln -fs w32api/libwinmm.a .
98+
ln -fs w32api/libwinspool.a .
9599
popd
96100
;;
97101
esac

0 commit comments

Comments
 (0)