Skip to content

Commit 26240c3

Browse files
committed
Changes needed to build Cygwin toolchain inside Cygwin shell
1 parent d4d4a72 commit 26240c3

File tree

16 files changed

+915
-72
lines changed

16 files changed

+915
-72
lines changed

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
*.sh text eol=lf
2+
apt-cyg text eol=lf

.github/scripts/binutils/build.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,9 @@ if [[ "$RUN_CONFIG" = 1 ]] || [[ ! -f "$BINUTILS_BUILD_PATH/Makefile" ]]; then
5454
fi
5555

5656
echo "::group::Build binutils"
57-
make $BUILD_MAKE_OPTIONS
57+
which make
58+
make --version
59+
make
5860
echo "::endgroup::"
5961

6062
if [[ "$RUN_INSTALL" = 1 ]]; then

.github/scripts/build.sh

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,11 @@ fi
4444
if [[ "$PLATFORM" =~ mingw ]]; then
4545
$ROOT_PATH/.github/scripts/toolchain/build-mingw-winpthreads.sh
4646
fi
47+
4748
if [[ "$PLATFORM" =~ cygwin ]]; then
48-
$ROOT_PATH/.github/scripts/toolchain/build-cocom.sh
49+
if [[ "$CYGWIN" = 0 ]]; then
50+
$ROOT_PATH/.github/scripts/toolchain/build-cocom.sh
51+
fi
4952
$ROOT_PATH/.github/scripts/toolchain/build-cygwin.sh 1
5053
fi
5154

.github/scripts/config.sh

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ MINGW_REPO=${MINGW_REPO:-Windows-on-ARM-Experiments/mingw-woarm64}
1515
MINGW_BRANCH=${MINGW_BRANCH:-woarm64}
1616

1717
CYGWIN_REPO=${CYGWIN_REPO:-Windows-on-ARM-Experiments/newlib-cygwin}
18-
CYGWIN_BRANCH=${CYGWIN_BRANCH:-woarm64}
18+
CYGWIN_BRANCH=${CYGWIN_BRANCH:-native-cygwin}
1919

2020
CYGWIN_PACKAGES_REPO=${CYGWIN_PACKAGES_REPO:-Windows-on-ARM-Experiments/cygwin-packages}
2121
CYGWIN_PACKAGES_BRANCH=${CYGWIN_PACKAGES_BRANCH:-main}
@@ -32,17 +32,18 @@ CYGWIN_PACKAGES_BASE_BRANCH=main
3232
COCOM_BASE_BRANCH=master
3333

3434
ARCH=${ARCH:-aarch64}
35-
PLATFORM=${PLATFORM:-w64-mingw32}
35+
PLATFORM=${PLATFORM:-pc-cygwin}
3636
if [[ "$PLATFORM" =~ (mingw|cygwin) ]]; then
3737
CRT=${CRT:-msvcrt}
3838
else
3939
CRT=${CRT:-libc}
4040
fi
4141

42-
PROCESSOR=$(uname --processor)
43-
BUILD=${BUILD:-$PROCESSOR-pc-linux-gnu}
44-
HOST=${HOST:-$PROCESSOR-pc-linux-gnu}
42+
PROCESSOR=x86_64
43+
BUILD=${BUILD:-$PROCESSOR-pc-cygwin}
44+
HOST=${HOST:-$PROCESSOR-pc-cygwin}
4545
TARGET=$ARCH-$PLATFORM
46+
CYGWIN=`if uname | grep -qi cygwin; then echo 1; else echo 0; fi`
4647
TOOLCHAIN_NAME=${TOOLCHAIN_NAME:-$ARCH-$PLATFORM-$CRT}
4748

4849
if [[ ("$PLATFORM" =~ (mingw|cygwin) && ! ("$CRT" =~ (msvcrt|ucrt))) ||

.github/scripts/enable-ccache.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
source `dirname ${BASH_SOURCE[0]}`/config.sh
44

5+
mkdir -p $CCACHE_LIB_DIR
56
mkdir -p $TOOLCHAIN_CCACHE_LIB_DIR
67

78
echo "::group::Add $TARGET toolchain to ccache"

.github/scripts/install-dependencies.sh

Lines changed: 52 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,58 @@
33
source `dirname ${BASH_SOURCE[0]}`/config.sh
44

55
echo "::group::Install Dependencies"
6-
sudo apt update
7-
sudo apt install -y \
8-
autoconf \
9-
autogen \
10-
automake \
11-
autotools-dev \
12-
binutils-for-build \
13-
bison \
14-
build-essential \
15-
busybox \
16-
ccache \
17-
dejagnu \
18-
docbook2x \
19-
flex \
20-
gdc \
21-
jq \
22-
libc6-dev-arm64-cross \
23-
libc6-dev-amd64-cross \
24-
texinfo \
25-
xmlto \
26-
zlib1g-dev \
27-
zstd
6+
if [[ "$CYGWIN" = 1 ]]; then
7+
# wget needs to be already installed
8+
$ROOT_PATH/tools/apt-cyg update
9+
$ROOT_PATH/tools/apt-cyg install \
10+
autoconf \
11+
autogen \
12+
automake \
13+
binutils \
14+
bison \
15+
busybox \
16+
ccache \
17+
cygutils-extra \
18+
dejagnu \
19+
docbook2X \
20+
flex \
21+
gcc-core \
22+
gcc-g++ \
23+
gcc-gdc \
24+
jq \
25+
make \
26+
mingw64-x86_64-gcc-core \
27+
mingw64-x86_64-gcc-g++ \
28+
mingw64-x86_64-zlib \
29+
patch \
30+
texinfo \
31+
xmlto \
32+
zlib-devel \
33+
zstd
34+
else
35+
sudo apt update
36+
sudo apt install -y \
37+
autoconf \
38+
autogen \
39+
automake \
40+
autotools-dev \
41+
binutils-for-build \
42+
bison \
43+
build-essential \
44+
busybox \
45+
ccache \
46+
dejagnu \
47+
docbook2x \
48+
flex \
49+
gdc \
50+
jq \
51+
libc6-dev-arm64-cross \
52+
libc6-dev-amd64-cross \
53+
texinfo \
54+
xmlto \
55+
zlib1g-dev \
56+
zstd
57+
fi
2858
echo "::endgroup::"
2959

3060
echo 'Success!'

.github/scripts/strip-host-binaries.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ echo "::group::Strip host binaries"
66
find "$TOOLCHAIN_PATH" \
77
-type f -exec sh -c 'file -b "$1" | grep -q "ELF"' _ {} \; \
88
-printf 'Stripping %p\n' \
9-
-exec strip --strip-unneeded {} \;
9+
-exec $HOST-strip --strip-unneeded {} \;
1010
echo "::endgroup::"
1111

1212
echo 'Success!'
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/bin/bash
2+
3+
source `dirname ${BASH_SOURCE[0]}`/config.sh
4+
5+
echo "::group::Strip target binaries"
6+
find "$TOOLCHAIN_PATH" \
7+
-type f -exec sh -c 'file -b "$1" | grep -q "PE32+"' _ {} \; \
8+
-printf 'Stripping %p\n' \
9+
-exec $TARGET-strip --strip-unneeded {} \;
10+
echo "::endgroup::"
11+
12+
echo 'Success!'

.github/scripts/toolchain/build-cygwin.sh

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@ if [[ "$RUN_CONFIG" = 1 ]] || [[ ! -f "$CYGWIN_BUILD_PATH/Makefile" ]]; then
1313
echo "::group::Configure Cygwin"
1414
rm -rf $CYGWIN_BUILD_PATH/*
1515

16+
if [[ "$BUILD" != "$TARGET" ]] && [[ "$CYGWIN" = 0 ]]; then
17+
BUILD_OPTIONS="$BUILD_OPTIONS \
18+
--with-cross-bootstrap"
19+
fi
20+
1621
if [ "$DEBUG" = 1 ] ; then
1722
HOST_OPTIONS="$HOST_OPTIONS \
1823
--enable-debug \
@@ -23,7 +28,8 @@ if [[ "$RUN_CONFIG" = 1 ]] || [[ ! -f "$CYGWIN_BUILD_PATH/Makefile" ]]; then
2328
if [[ "$STAGE" = "1" ]]; then
2429
(cd $CYGWIN_SOURCE_PATH && patch -p1 -i $PATCHES_PATH/cygwin/0001-fix-autogen.patch)
2530
HOST_OPTIONS="$HOST_OPTIONS \
26-
--disable-cygserver"
31+
--disable-cygserver \
32+
--disable-utils"
2733
else
2834
HOST_OPTIONS="$HOST_OPTIONS \
2935
--enable-cygserver"
@@ -43,7 +49,7 @@ if [[ "$RUN_CONFIG" = 1 ]] || [[ ! -f "$CYGWIN_BUILD_PATH/Makefile" ]]; then
4349
--disable-dumper \
4450
--with-sysroot=$TOOLCHAIN_PATH \
4551
--with-build-sysroot=$TOOLCHAIN_PATH \
46-
--with-cross-bootstrap \
52+
$BUILD_OPTIONS \
4753
$HOST_OPTIONS \
4854
$TARGET_OPTIONS
4955
echo "::endgroup::"

.github/scripts/toolchain/build-gcc.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ if [[ "$RUN_CONFIG" = 1 ]] || [[ ! -f "$GCC_BUILD_PATH/Makefile" ]]; then
109109
--host=$HOST \
110110
--target=$TARGET \
111111
--enable-static \
112-
--enable-languages=c,c++,d,fortran,lto,m2,objc,obj-c++ \
112+
--enable-languages=c,c++,fortran,lto,m2,objc,obj-c++ \
113113
--disable-bootstrap \
114114
--disable-multilib \
115115
--with-gnu-as \

0 commit comments

Comments
 (0)