Skip to content

Commit a50ab41

Browse files
committed
Changes needed to build full Cygwin package with Linux cross-toolchains
1 parent 72da3bc commit a50ab41

File tree

12 files changed

+247
-8
lines changed

12 files changed

+247
-8
lines changed
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: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,16 @@ 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: --enable-install-libbfd which installs BFD library
24+
# headers which is needed for Cygwin build.
2325
# CHANGED: --enable-shared to --disable-shared to allow easier transfer
2426
# the produced host binaries across different build environments.
2527
TARGET_OPTIONS="$TARGET_OPTIONS \
2628
--enable-static \
2729
--disable-shared \
2830
--enable-host-shared \
2931
--enable-install-libiberty \
32+
--enable-install-libbfd \
3033
--with-sysroot=$TOOLCHAIN_PATH \
3134
--with-build-sysroot=$TOOLCHAIN_PATH \
3235
--with-system-zlib \

.github/scripts/build.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,13 @@ $ROOT_PATH/.github/scripts/toolchain/build-gcc.sh
5454
if [[ "$PLATFORM" =~ mingw ]]; then
5555
$ROOT_PATH/.github/scripts/toolchain/build-mingw.sh
5656
fi
57+
if [[ "$PLATFORM" =~ cygwin ]]; then
58+
$ROOT_PATH/.github/scripts/toolchain/build-intl.sh
59+
$ROOT_PATH/.github/scripts/toolchain/build-iconv.sh
60+
fi
61+
if [[ "$PLATFORM" =~ (mingw|cygwin) ]]; then
62+
$ROOT_PATH/.github/scripts/toolchain/build-bfd.sh
63+
fi
5764
if [[ "$PLATFORM" =~ cygwin ]]; then
5865
$ROOT_PATH/.github/scripts/toolchain/build-cygwin.sh 2
5966
fi

.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: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@ echo "::group::Install Dependencies"
1717
dejagnu \
1818
docbook2x \
1919
flex \
20+
gettext \
2021
gdc \
22+
gperf \
23+
groff \
2124
jq \
2225
libc6-dev-arm64-cross \
2326
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)