-
-
Notifications
You must be signed in to change notification settings - Fork 14.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
cygwin: init as a compilation target
Currently can cross-compile stage1 GCC and Cygwin library. Removes old w32api package which should be replaced by mingw-w64, now that it compiles with the w32api flag.
- Loading branch information
1 parent
4dfb382
commit 4b6d0c9
Showing
14 changed files
with
392 additions
and
25 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
{ | ||
lib, | ||
stdenv, | ||
fetchgit, | ||
bison, | ||
}: | ||
stdenv.mkDerivation { | ||
pname = "cocom"; | ||
version = "0.996"; | ||
|
||
src = fetchgit { | ||
url = "https://git.code.sf.net/p/cocom/git"; | ||
sha256 = "sha256-utLafkznMC4LrZgF6vKehtIGMwNMwLP9M9Nwu/RyWio="; | ||
rev = "64ee80224aa13f9944d439f3f90862ca76158705"; | ||
}; | ||
|
||
nativeBuildInputs = [ bison ]; | ||
|
||
patches = [ ./remove-lto.patch ]; | ||
|
||
meta = { | ||
description = "Tool set oriented towards the creation of compilers"; | ||
homepage = "https://cocom.sourceforge.net/"; | ||
license = lib.licenses.gpl2Plus; | ||
maintainers = with lib.maintainers; [ puffnfresh ]; | ||
platforms = lib.platforms.linux; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
diff --git a/configure b/configure | ||
index 574cbe9..0dc2aa0 100755 | ||
--- a/configure | ||
+++ b/configure | ||
@@ -5858,37 +5858,6 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext | ||
CXXFLAGS="`echo $CXXFLAGS|sed s/-O2//` -O3" | ||
fi | ||
|
||
- my_save_cflags="$CFLAGS" | ||
- CFLAGS=-flto | ||
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC supports -flto" >&5 | ||
-$as_echo_n "checking whether CC supports -flto... " >&6; } | ||
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext | ||
-/* end confdefs.h. */ | ||
- | ||
-int | ||
-main () | ||
-{ | ||
- | ||
- ; | ||
- return 0; | ||
-} | ||
-_ACEOF | ||
-if ac_fn_c_try_compile "$LINENO"; then : | ||
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 | ||
-$as_echo "yes" >&6; } | ||
- lto=yes | ||
-else | ||
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 | ||
-$as_echo "no" >&6; } | ||
- | ||
-fi | ||
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext | ||
- CFLAGS="$my_save_cflags" | ||
- if test "$lto" = yes; then | ||
- CFLAGS="`echo $CFLAGS` -flto" | ||
- CXXFLAGS="`echo $CXXFLAGS` -flto" | ||
- fi | ||
- | ||
system=`uname -m` | ||
case $system in | ||
i386*|i486*|i586*|i686*) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,158 @@ | ||
--- winsup/configure.old 2024-11-01 22:38:21.005768397 +1100 | ||
+++ winsup/configure 2024-11-01 22:39:33.247435255 +1100 | ||
@@ -3970,155 +3970,6 @@ | ||
_ACEOF | ||
ac_clean_files_save=$ac_clean_files | ||
ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" | ||
-# Try to create an executable without -o first, disregard a.out. | ||
-# It will help us diagnose broken compilers, and finding out an intuition | ||
-# of exeext. | ||
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 | ||
-printf %s "checking whether the C compiler works... " >&6; } | ||
-ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` | ||
- | ||
-# The possible output files: | ||
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" | ||
- | ||
-ac_rmfiles= | ||
-for ac_file in $ac_files | ||
-do | ||
- case $ac_file in | ||
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; | ||
- * ) ac_rmfiles="$ac_rmfiles $ac_file";; | ||
- esac | ||
-done | ||
-rm -f $ac_rmfiles | ||
- | ||
-if { { ac_try="$ac_link_default" | ||
-case "(($ac_try" in | ||
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; | ||
- *) ac_try_echo=$ac_try;; | ||
-esac | ||
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" | ||
-printf "%s\n" "$ac_try_echo"; } >&5 | ||
- (eval "$ac_link_default") 2>&5 | ||
- ac_status=$? | ||
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 | ||
- test $ac_status = 0; } | ||
-then : | ||
- # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. | ||
-# So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no' | ||
-# in a Makefile. We should not override ac_cv_exeext if it was cached, | ||
-# so that the user can short-circuit this test for compilers unknown to | ||
-# Autoconf. | ||
-for ac_file in $ac_files '' | ||
-do | ||
- test -f "$ac_file" || continue | ||
- case $ac_file in | ||
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) | ||
- ;; | ||
- [ab].out ) | ||
- # We found the default executable, but exeext='' is most | ||
- # certainly right. | ||
- break;; | ||
- *.* ) | ||
- if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; | ||
- then :; else | ||
- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` | ||
- fi | ||
- # We set ac_cv_exeext here because the later test for it is not | ||
- # safe: cross compilers may not add the suffix if given an '-o' | ||
- # argument, so we may need to know it at that point already. | ||
- # Even if this section looks crufty: it has the advantage of | ||
- # actually working. | ||
- break;; | ||
- * ) | ||
- break;; | ||
- esac | ||
-done | ||
-test "$ac_cv_exeext" = no && ac_cv_exeext= | ||
- | ||
-else case e in #( | ||
- e) ac_file='' ;; | ||
-esac | ||
-fi | ||
-if test -z "$ac_file" | ||
-then : | ||
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 | ||
-printf "%s\n" "no" >&6; } | ||
-printf "%s\n" "$as_me: failed program was:" >&5 | ||
-sed 's/^/| /' conftest.$ac_ext >&5 | ||
- | ||
-{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 | ||
-printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} | ||
-as_fn_error 77 "C compiler cannot create executables | ||
-See 'config.log' for more details" "$LINENO" 5; } | ||
-else case e in #( | ||
- e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 | ||
-printf "%s\n" "yes" >&6; } ;; | ||
-esac | ||
-fi | ||
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 | ||
-printf %s "checking for C compiler default output file name... " >&6; } | ||
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 | ||
-printf "%s\n" "$ac_file" >&6; } | ||
-ac_exeext=$ac_cv_exeext | ||
- | ||
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out | ||
-ac_clean_files=$ac_clean_files_save | ||
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 | ||
-printf %s "checking for suffix of executables... " >&6; } | ||
-if { { ac_try="$ac_link" | ||
-case "(($ac_try" in | ||
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; | ||
- *) ac_try_echo=$ac_try;; | ||
-esac | ||
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" | ||
-printf "%s\n" "$ac_try_echo"; } >&5 | ||
- (eval "$ac_link") 2>&5 | ||
- ac_status=$? | ||
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 | ||
- test $ac_status = 0; } | ||
-then : | ||
- # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) | ||
-# catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will | ||
-# work properly (i.e., refer to 'conftest.exe'), while it won't with | ||
-# 'rm'. | ||
-for ac_file in conftest.exe conftest conftest.*; do | ||
- test -f "$ac_file" || continue | ||
- case $ac_file in | ||
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; | ||
- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` | ||
- break;; | ||
- * ) break;; | ||
- esac | ||
-done | ||
-else case e in #( | ||
- e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 | ||
-printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} | ||
-as_fn_error $? "cannot compute suffix of executables: cannot compile and link | ||
-See 'config.log' for more details" "$LINENO" 5; } ;; | ||
-esac | ||
-fi | ||
-rm -f conftest conftest$ac_cv_exeext | ||
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 | ||
-printf "%s\n" "$ac_cv_exeext" >&6; } | ||
- | ||
-rm -f conftest.$ac_ext | ||
-EXEEXT=$ac_cv_exeext | ||
-ac_exeext=$EXEEXT | ||
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext | ||
-/* end confdefs.h. */ | ||
-#include <stdio.h> | ||
-int | ||
-main (void) | ||
-{ | ||
-FILE *f = fopen ("conftest.out", "w"); | ||
- if (!f) | ||
- return 1; | ||
- return ferror (f) || fclose (f) != 0; | ||
- | ||
- ; | ||
- return 0; | ||
-} | ||
-_ACEOF | ||
-ac_clean_files="$ac_clean_files conftest.out" | ||
# Check that the compiler produces executables we can run. If not, either | ||
# the compiler is broken, or we cross compile. | ||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
{ | ||
lib, | ||
stdenv, | ||
cygwin_headers, | ||
buildPackages, | ||
automake, | ||
autoconf, | ||
bison, | ||
cocom-tool-set, | ||
flex, | ||
perl, | ||
mingw_w64, | ||
}: | ||
|
||
stdenv.mkDerivation { | ||
pname = "cygwin"; | ||
|
||
inherit (cygwin_headers) | ||
version | ||
src | ||
meta | ||
patches | ||
; | ||
|
||
preConfigure = '' | ||
pushd winsup | ||
aclocal --force | ||
autoconf -f | ||
automake -ac | ||
rm -rf autom4te.cache | ||
popd | ||
patch -p0 -i ${./after-autogen.patch} | ||
''; | ||
|
||
postPatch = '' | ||
patchShebangs --build winsup/cygwin/scripts | ||
''; | ||
|
||
env.CXXFLAGS_FOR_TARGET = "-Wno-error"; | ||
|
||
depsBuildBuild = [ buildPackages.stdenv.cc ]; | ||
nativeBuildInputs = [ | ||
autoconf | ||
automake | ||
bison | ||
cocom-tool-set | ||
flex | ||
perl | ||
]; | ||
buildInputs = [ mingw_w64 ]; | ||
|
||
hardeningDisable = [ "fortify" ]; | ||
configurePlatforms = [ | ||
"build" | ||
"target" | ||
]; | ||
configureFlags = [ | ||
"--disable-shared" | ||
"--disable-doc" | ||
"--enable-static" | ||
"--disable-dumper" | ||
"--with-cross-bootstrap" | ||
"ac_cv_prog_CC=gcc" | ||
]; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
{ | ||
lib, | ||
stdenvNoCC, | ||
fetchzip, | ||
fetchFromGitHub, | ||
fetchpatch, | ||
mingw_w64_headers, | ||
}: | ||
|
||
stdenvNoCC.mkDerivation (finalAttrs: { | ||
pname = "cygwin-headers"; | ||
version = "3.5.4"; | ||
|
||
src = fetchFromGitHub { | ||
owner = "mirror"; | ||
repo = "newlib-cygwin"; | ||
rev = "cygwin-${finalAttrs.version}"; | ||
hash = "sha256-ZfT6JhOXLCJOY0vSVz6aKShmtuTN9/0NZ1k1RMSZX4Q="; | ||
}; | ||
|
||
patches = [ | ||
(fetchpatch { | ||
url = "https://raw.githubusercontent.com/Windows-on-ARM-Experiments/mingw-woarm64-build/371102dfa23b3e56b6759e1a44026d0640d55223/patches/cygwin/0001-before-autogen.patch"; | ||
sha256 = "sha256-1JsbfYAPpsQSjknZcKfJOHA0RcdmgzkzAI4RcHG1kpA="; | ||
}) | ||
]; | ||
|
||
dontConfigure = true; | ||
dontBuild = true; | ||
|
||
installPhase = '' | ||
mkdir -p $out/include/ | ||
ln -s ${mingw_w64_headers}/include/w32api $out/include/ | ||
cp -r newlib/libc/include/* $out/include/ | ||
cp -r winsup/cygwin/include/* $out/include/ | ||
''; | ||
|
||
meta = { | ||
platforms = lib.platforms.windows; | ||
}; | ||
}) |
Oops, something went wrong.