summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 6262bd0232f1ae4deeb4cd9af927f9b11a5aa1c5 (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
80
81
82
83
# Maintainer: Spencer Harmon

pkgname="ulam-git"
pkgver=4.0.1.r31.g7b346da2
pkgrel=1
epoch=
pkgdesc="Github version of ulam compiler and MFM simulator"
arch=('any')
url="https://github.com/elenasa/ULAM/wiki"
license=('(L)GPL3')
groups=()
depends=('make'
  'gcc'
  'gcc49'
  'binutils'
  'perl'
  'sdl'
  'sdl_image'
  'sdl_ttf'
  'perl-crypt-openssl-rsa'
  'perl-capture-tiny')
makedepends=('git')
optdepends=('perl-splat-git: Support for the SPLAT programming language')
checkdepends=()
optdepends=()
provides=()
conflicts=()
replaces=()
backup=()
options=('!buildflags' '!makeflags')
install=
changelog=
source=("git://github.com/daveackley/MFM"
  "git://github.com/daveackley/ULAM")
noextract=()
md5sums=('SKIP' 'SKIP')
pkgver(){
  cd $srcdir/ULAM
  git describe --long | sed 's/v//;s/\([^-]*-g\)/r\1/;s/-/./g'
}

prepare() {
#  ensure build directory is correct
  perl -0777 -i -pe 's/ifndef BUILDDIR\n\s(.+\n)endif\n/$1/' MFM/config/Makecommon.mk

#  remove some backslashes in StdElementsHeaders.inc
  perl -0777 -i -pe "s{ELEMENT_HEADER_INCLUDES\)' >}{ELEMENT_HEADER_INCLUDES)' | sed 's/\\\\\\\\\//' >}" MFM/src/elements/Makefile  
#  include element headers
  perl -0700 -i -pe 's{(DateTimeStamp.h"\n)}{$1#include "StdElementsHeaders.inc"\n}' MFM/src/drivers/mfmc/include/main.h

#  ensure path is correct in ulam.tmpl (note that latter ENV{PATH} uses bash expansion)
#  this is effectively a workaround for perlsec, so proceed with caution
  perl -0777 -i -pe 's/(delete.+\n)/$1\$ENV{PATH} = "$ENV{PATH}";\n/' ULAM/src/drivers/ulam/ulam.tmpl

#  change non-portable uname flag from -i to -m
  perl -0777 -i -pe 's/(uname -)i/$1m/' MFM/src/drivers/mfzrun/mfzrun.tmpl

#  don't raise error for unnecessary parenthesis
  perl -0777 -i -pe 's/(-Wno-error=unused-but-set-variable)/$1 -Wno-error=parentheses/g' ULAM/bin/ulam
  perl -0777 -i -pe 's/(-Wno-error=unused-but-set-variable)/$1 -Wno-error=parentheses/g' ULAM/src/drivers/ulam/ulam.tmpl

}

build() {
  make -C MFM NATIVE_GCC=gcc-4.9 NATIVE_GPP=g++-4.9

  make -C ULAM CXX=g++-4.9
  
  perl ULAM/share/perl/extractDistro.pl bin . "$srcdir/ulam" ulam
  perl ULAM/share/perl/extractDistro.pl src . "$srcdir/ulam" ulam
  make -C ulam CXX=g++-4.9 NATIVE_GCC=gcc-4.9 NATIVE_GPP=g++-4.9

}

package() {
  make -C "$srcdir/ulam" DESTDIR="$pkgdir/" CXX=g++-4.9 NATIVE_GCC=gcc-4.9 NATIVE_GPP=g++-4.9 install

  mkdir -p "$pkgdir/usr/bin"
  for f in `ls "$pkgdir/usr/lib/ulam/ULAM/bin"`; \
    do ln -sf "/usr/lib/ulam/ULAM/bin/$f" "$pkgdir/usr/bin/";done
  for f in `ls "$pkgdir/usr/lib/ulam/MFM/bin"`; \
    do ln -sf "/usr/lib/ulam/MFM/bin/$f" "$pkgdir/usr/bin/";done
}