summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 79587f11c05a723ac1da09614299b3ba96b86050 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# Mantainer Jens Staal <staal1978@gmail.com>

pkgname=dev86-git
pkgver=0.16.20.r11.g4ed1997
pkgrel=1
pkgdesc="The 16-bit bcc compiler + elksemu, github source fork"
arch=('i686' 'x86_64')
url="https://github.com/jbruchon/dev86"
license=('GPL' 'LGPL' 'custom')

if [ "${CARCH}" == "x86_64" ]; then
  depends=('lib32-glibc')
  makedepends=('bin86' 'git' 'gcc-multilib')
else
  makedepends=('bin86' 'git')
fi

provides=('dev86' 'bin86' 'elksemu')
conflicts=('dev86' 'bin86')
replaces=('dev86' 'bin86')

source=('dev86::git://github.com/jbruchon/dev86.git' \
        'elks::git://github.com/jbruchon/elks.git'
)

sha256sums=('SKIP' 'SKIP')

options=('!libtool' '!strip' '!makeflags' '!buildflags' 'staticlibs')

pkgver() {
  cd "$srcdir"/dev86/

  if GITTAG="$(git describe --abbrev=0 --tags 2>/dev/null)"; then
    echo "$(sed -e "s/^${pkgname%%-git}//" -e 's/^[-_/a-zA-Z]\+//' -e 's/[-_+]/./g' <<< ${GITTAG}).r$(git rev-list --count ${GITTAG}..).g$(git log -1 --format="%h")"
  else
    echo "0.r$(git rev-list --count master).g$(git log -1 --format="%h")"
  fi
}

prepare() {
  cd "$srcdir"/elks
  rm -f dev86 # in case link already exists
  ln -s "$srcdir"/dev86 dev86
  cd dev86
  sed 's|%=|"%="|g' -i cpp/token1.tok
}

build() {
  cd "$srcdir"/elks/dev86
  #always build as 32-bit to get elksemu
  if [ "${CARCH}" == "x86_64" ]; then
  _GCC32="gcc -m32 -march=i686 -mtune=generic -O2 -pipe -fstack-protector-strong --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2" 
  _LD32="ld -m32 -Wl,-O1,--sort-common,--as-needed,-z,relro" 
  make ELKSSRC="$srcdir"/elks PREFIX=/usr MANDIR=/usr/share/man DIST="$pkgdir" CHOST="i686-pc-linux-gnu" CC="$_GCC32" LD="$_LD32" all
  else
  make ELKSSRC="$srcdir"/elks PREFIX=/usr MANDIR=/usr/share/man DIST="$pkgdir" all
  fi
  #build some elks userland programs for testing / proof-of-concept
  cd ../elks
  make defconfig
  make dep
  
  cd ../busyelks
  ./build
    
}


package() {
  cd "$srcdir"/elks/dev86
  mkdir -p "$pkgdir"/usr/share/man/man1
  mkdir -p "$pkgdir"/usr/man/man1 #hack...
  make install-all DIST="$pkgdir"
  cp -r "$pkgdir"/usr/man/* "$pkgdir"/usr/share/man/
  rm -rf "$pkgdir"/usr/man
  mkdir -p "$pkgdir"/usr/bin86
  cp "$srcdir"/elks/busyelks/_install/bin/* "$pkgdir"/usr/bin86/
}