diff options
author | Janez Zemva | 2017-09-20 11:32:47 +0200 |
---|---|---|
committer | Janez Zemva | 2017-09-20 11:32:47 +0200 |
commit | 4e74aa640756f976e31d2648742f7353ef9afc05 (patch) | |
tree | a30b2c85abe1a7bf4dde5febab39cdeafe9917ba | |
parent | 38c72524ea1b994249f306a6ef5cd2883780d443 (diff) | |
download | aur-4e74aa640756f976e31d2648742f7353ef9afc05.tar.gz |
some fixes
-rw-r--r-- | .SRCINFO | 7 | ||||
-rw-r--r-- | PKGBUILD | 136 | ||||
-rw-r--r-- | mkmake.bash | 83 | ||||
-rw-r--r-- | watt32.pc | 4 |
4 files changed, 214 insertions, 16 deletions
@@ -1,7 +1,7 @@ pkgbase = dosbox-gcc pkgdesc = djgpp cross-compiler for the dosbox environment pkgver = 7.2.0 - pkgrel = 2 + pkgrel = 3 url = http://gcc.gnu.org arch = i686 arch = x86_64 @@ -16,6 +16,7 @@ pkgbase = dosbox-gcc depends = dosbox-binutils optdepends = dosbox-djcrx: headers and utilities noextract = djcrx205.zip + noextract = watt32s-2.2-dev.10.zip options = !strip options = staticlibs options = !emptydirs @@ -23,11 +24,15 @@ pkgbase = dosbox-gcc source = http://isl.gforge.inria.fr/isl-0.18.tar.xz source = https://zlib.net/zlib-1.2.11.tar.gz" source = http://www.delorie.com/pub/djgpp/current/v2/djcrx205.zip + source = mkmake.bash + source = watt32.pc source = lto.patch sha256sums = SKIP sha256sums = SKIP sha256sums = SKIP sha256sums = SKIP + sha256sums = SKIP + sha256sums = SKIP sha256sums = c03dbd61274e1ce14f84366abf348d75779bbd6e0bc32b9f4fd74f1ce54a5ef0 pkgname = dosbox-gcc @@ -7,8 +7,10 @@ pkgver=7.2.0 _target="i586-pc-msdosdjgpp" _islver=0.18 _djver=2.05 +_pthver=3.14 _zlver=1.2.11 -pkgrel=1 +_wattver="2.2-dev.10" +pkgrel=3 pkgdesc="djgpp cross-compiler for the dosbox environment" arch=('i686' 'x86_64') url="http://gcc.gnu.org" @@ -22,16 +24,69 @@ source=("https://ftp.gnu.org/gnu/gcc/gcc-${pkgver}/gcc-$pkgver.tar.xz" "http://www.delorie.com/pub/djgpp/current/v2/djcrx${_djver//./}.zip" "http://isl.gforge.inria.fr/isl-${_islver}.tar.xz" "https://zlib.net/zlib-${_zlver}.tar.gz" + "http://www.watt-32.net/watt32s-${_wattver}.zip" + "mkmake.bash" + "watt32.pc" "lto.patch") sha256sums=('SKIP' 'SKIP' 'SKIP' 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' 'c03dbd61274e1ce14f84366abf348d75779bbd6e0bc32b9f4fd74f1ce54a5ef0') -noextract=("djcrx${_djver//./}.zip") +noextract=("djcrx${_djver//./}.zip" + "watt32s-${_wattver}.zip") prepare() { - cd gcc-$pkgver + # extract bootstrap wattcp + mkdir -p watt + cd watt + unzip -qo "../watt32s-${_wattver}.zip" + + # apply felix's patches + sed -i -e ' + s,#include "/dev/env/DJDIR/include/\(.*\)",#include_next <\1>, + ' inc/sys/cdefs.h + + cd src + ln -fs chksum0.s chksum0.S + ln -fs cpumodel.s cpumodel.S + + mkdir -p djgpp + + # use standard zlib + sed -i -e 's,"zlib/zlib\.h",<zlib.h>,' pcdbug.c + sed -i -e '/define Z_PREFIX/ d' config.h + + sed -i -e ' + s,\tar,\t$(AR), + s,\.\./util/nasm32,\t$(NASM), + s,\.\./util/bin2c,\t$(BIN2C), + s,-O2,-Ofast, + ' makefile.all zlib/makefile.all + sed -i -e " + /CFLAGS/ s,=,= -fno-strict-aliasing -fgnu89-inline -march=i586 -I${srcdir}/zlib-${_zlver}, + " makefile.all zlib/makefile.all + bash "$srcdir/mkmake.bash" DJGPP RELEASE <makefile.all >djgpp.mak + + cd ../util + sed -n -e ' + $ { + i #include "errnos0.i" + x + w errnos0.c + q + }; + /_ERRNO(/ H + /<io\.h>/ d + /\(VendorName\|VendorVersion\|process\|prologue\|epilogue\) (void)\r$/,/^\}\r$/ ! { p; b }; + H + ' errnos.c > errnos1.c + + # gcc hacks + cd $srcdir/gcc-$pkgver # link isl for in-tree build ln -fs "../isl-${_islver}" isl @@ -55,33 +110,69 @@ prepare() { build() { cd gcc-build-$_target - ../gcc-$pkgver/configure --prefix=/usr --libexecdir=/usr/lib \ + ../gcc-$pkgver/configure \ + --prefix=/usr \ + --libexecdir=/usr/$_target/libexec \ + --datarootdir=/usr/$_target/share \ --target="$_target" \ --enable-languages=c,c++ \ + --enable-gold \ + --disable-ld \ + --disable-nls \ --enable-shared --enable-static \ - --enable-threads=no \ + --enable-threads \ --enable-libstdcxx-threads \ - --with-system-zlib --with-isl \ + --with-system-zlib \ + --with-arch=i586 \ + --with-cpu=i586 \ --enable-lto --disable-dw2-exceptions --disable-libgomp \ --disable-multilib --enable-checking=release + make all-gcc - export PATH=../gcc-build-$_target/gcc:$PATH + OLD_PATH=$PATH + export PATH=$srcdir/gcc-build-$_target/gcc:$PATH # build zlib - cd ../zlib-${_zlver} - CC=../gcc-build-$_target/gcc/xgcc \ + echo ...building zlib + cd $srcdir/zlib-${_zlver} + CC=$srcdir/gcc-build-$_target/gcc/xgcc \ CHOST=${_target} \ - CFLAGS="-march=i586 -Ofast -I../gcc-build-${_target}/lib/gcc/$_target/$pkgver/include -pipe"\ + CFLAGS="-march=i586 -Ofast -I$srcdir/gcc-build-${_target}/lib/gcc/$_target/$pkgver/include -pipe"\ ../zlib-${_zlver}/configure --const --prefix=/usr/$_target --static sed -i 's/-DNO_STRERROR -DNO_vsnprintf//' Makefile make libz.a # build wattcp - # build pth + echo ...building wattcp + cd $srcdir/watt/util + $srcdir/gcc-build-$_target/gcc/xgcc -P -E errnos0.c \ + -include /usr/$_target/include/errno.h \ + -include /usr/$_target/include/sys/version.h \ + | sed -e '/^extern/ d' > errnos0.i + + # TCC would also do + export PATH=$OLD_PATH + gcc errnos1.c -o errnos1 + ./errnos1 -e > "../inc/sys/djgpp.err" + ./errnos1 -s > "../src/djgpp/syserr.c" + export PATH=$srcdir/gcc-build-$_target/gcc:$PATH + + cd $srcdir/watt/src + make -f djgpp.mak \ + CC=$srcdir/gcc-build-$_target/gcc/xgcc \ + AS=$_target-as \ + AR=$_target-ar \ + NASM=/usr/bin/nasm \ + BIN2C='hexdump -ve "1/1 \"0x%02X\,\" \"\n\""' \ + DJDIR=/usr/$_target ZLIB_OBJS= - cd ../gcc-build-$_target - make all + # start building gcc again, with pthreads + echo ...back to building gcc + export PATH=$OLD_PATH + + cd $srcdir/gcc-build-$_target + make } package_dosbox-gcc() { @@ -90,14 +181,29 @@ package_dosbox-gcc() { # strip manually, djgpp libs spew errors otherwise strip -s "$pkgdir"/usr/bin/$_target-* - strip -s "$pkgdir"/usr/lib/gcc/$_target/$pkgver/{cc1*,collect2,lto*} + strip -s "$pkgdir"/usr/$_target/libexec/gcc/$_target/$pkgver/{cc1*,collect2,lto*} # for compatibility - ln -s $_target-gcc "$pkgdir"/usr/bin/$_target-cc + ln -sf $_target-gcc "$pkgdir"/usr/bin/$_target-cc # remove unnecessary files rm -rf "$pkgdir"/usr/$_target/share/{man,info,locale} rm -rf "$pkgdir"/usr/share/{man,info,locale} rm -rf "$pkgdir"/usr/lib/gcc/$_target/$pkgver/include-fixed rm -f "$pkgdir"/usr/lib/libcc1.* + + # install wattcp + cd "$srcdir/watt/inc" + + install -dm0755 "$pkgdir/usr/$_target/include/watt32" + install -Dm0644 *.h "$pkgdir/usr/$_target/include/watt32" + for _d in netinet6 protocol netinet net rpc rpcsvc sys arpa; do + install -dm0755 "$pkgdir/usr/$_target/include/watt32/$_d" + install -Dm0644 "$_d"/*.h "$pkgdir/usr/$_target/include/watt32/$_d" + done + install -Dm0644 sys/djgpp.err "$pkgdir/usr/$_target/include/watt32/sys/djgpp.err" + + cd "$srcdir/watt/lib" + install -Dm0644 libwatt.a "$pkgdir/usr/$_target/lib/libwatt.a" + install -Dm0644 $srcdir/watt32.pc "$pkgdir/usr/$_target/lib/pkgconfig/watt32.pc" } diff --git a/mkmake.bash b/mkmake.bash new file mode 100644 index 000000000000..526878edb29f --- /dev/null +++ b/mkmake.bash @@ -0,0 +1,83 @@ +#!/bin/bash +stack=(t) + +ctest() { + [[ "${stack[0]}" = "$1" ]] + return "$?" +} + +cpush() { + stack=("$1" "${stack[@]}") +} + +cpop() { + stack=("${stack[@]:1}") +} + +cswap() { + stack[0]="$1" +} + +ceval() { + local test="$1" + shift + + local item + for item in "$@"; do + if [[ -n "${!item}" ]]; then + ! [[ "$test" = *ndef ]] + return "$?" + fi + done + + [[ "$test" = *ndef ]] + return "$?" +} + +for item in "$@"; do + eval "$item=1" +done + +while IFS=$'\r' read -r line; do + case "$line" in + @ifdef*|@ifndef*) + if ctest t; then + if ceval $line; then + cpush t + else + cpush w + fi + else + cpush e + fi + ;; + @elifdef*|@elifndef*) + if ctest w; then + if ceval $line; then + cswap t + else + cswap w + fi + else + cswap e + fi + ;; + @else*) + if ctest w; then + cswap t + else + cswap e + fi + ;; + @endif*) + cpop + ;; + *) + if ctest t; then + echo "$line" + fi + ;; + esac +done + +exit 0 diff --git a/watt32.pc b/watt32.pc new file mode 100644 index 000000000000..9d077adf6410 --- /dev/null +++ b/watt32.pc @@ -0,0 +1,4 @@ +Name: Watt-32 +Version: 2.2-dev.10 +Cflags: -I/usr/i686-pc-msdosdjgpp/include/watt32 +Libs: -lwatt -lz |