summaryrefslogtreecommitdiffstats
path: root/development/cc65/cc65.SlackBuild
blob: 81ad4ccd29ea7c88b45f64a9666a6b0c2c5108bf (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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#!/bin/bash

# Slackware build script for cc65

# Written by B. Watson (yalhcru@gmail.com)

# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.

# 20210317 bkw:
# - Update for 2.19 release. Script also tested with 2.18 and
#   2.17_20180906, in case someone needs one of those versions.
# - Use 'make html' to build the docs instead of pregenerating (tested
#   on -current too).
# - Add optional info docs to package.
# - Use USER_CFLAGS instead of sed to support SLKCFLAGS.
# - TODO: look at making good man pages for at least the executables.

# 20180907 bkw:
# - Update for 2.17_20180906, git commit b6ccd4d.
# - Rename git2targz.sh => git2tarxz.sh.
# - Add option to git2tarxz.sh to use a specific tag/commit.
# - Add README_SBo.txt documenting the use of git2tarxz.sh.

# 20180103 bkw:
# - Update for 2.16_20180102, git commit 040134e7.
# - "prefix" renamed to "PREFIX" in src/Makefile. For now, set both in
#   the make command, so this script can still build the previous version
#   if someone needs it.

# 20170703 bkw:
# - Update for 2.16_20170630. Upstream still hasn't done a release, but
#   again there's lots of development.
# - My self-hosted source tarball now includes the HTML documentation. This
#   script used to build it, but -current's linuxdoc-tools chokes on it,
#   and fixing it would require me a week or two probably. So, for now
#   anyway, the tarball includes docs that were built on 14.2.

# 20170129 bkw:
# - Update for v2.15_20170126, aka git 6878ede. Upstream hasn't done
#   a release since 2013 or so, but there's been lots of development.
#   Script modified enough that it can no longer build v2.13.3; use
#   the one from SBo's 14.1 repo if you need the old version for some
#   reason. Source is created from a git checkout, see git2targz.sh.

cd $(dirname $0) ; CWD=$(pwd)

PRGNAM=cc65
VERSION=${VERSION:-2.19}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}

if [ -z "$ARCH" ]; then
  case "$( uname -m )" in
    i?86) ARCH=i586 ;;
    arm*) ARCH=arm ;;
       *) ARCH=$( uname -m ) ;;
  esac
fi

if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
  echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
  exit 0
fi

TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}

if [ "$ARCH" = "i586" ]; then
  SLKCFLAGS="-O2 -march=i586 -mtune=i686"
elif [ "$ARCH" = "i686" ]; then
  SLKCFLAGS="-O2 -march=i686 -mtune=i686"
elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2 -fPIC"
else
  SLKCFLAGS="-O2"
fi

set -e

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT $PKG/usr/doc/$PRGNAM-$VERSION
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.?z
cd $PRGNAM-$VERSION
chown -R root:root .
find . -type f -print0 | xargs -0 chmod 644
find . -type d -print0 | xargs -0 chmod 755

# v2.19 binaries report themselves as v2.18. upstream fixed this in
# git commit cffcbce60, I'll just sed it.
[ "$VERSION" = "2.19" ] && sed -i '/#define VER_MINOR/s,18U,19U,' src/common/version.c

# HTML docs are always created and installed. If the user really
# wants to, the same docs can be installed as .info files. They're not
# enabled by default because they include .info files with names like
# "index", "coding", "using-make" and even "lynx". It's not obvious
# they belong to cc65, when they're sitting in the same /usr/info
# dir as all the other .info files. Plus, the internal links between
# the documents don't work when converted to .info, whereas the HTML
# ones do.
INFO="${INFO:-no}"

PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
make all PREFIX=/usr prefix=/usr LDFLAGS=-Wl,-s USER_CFLAGS="$SLKCFLAGS"
make -C doc html
[ "$INFO" = "yes" ] && make -C doc html info
make install \
  PREFIX=$PKG/usr prefix=$PKG/usr \
  infodir=$PKG/usr/info htmldir=$PKGDOC \
  samplesdir=$PKGDOC/samples

# Binaries already stripped, no man pages, but there might be info
# pages that needs to be gzipped. Note that the the info files can be
# read with e.g. "info cc65", but won't show up in the info directory:
# the generated docs lack sections and descriptions, so using
# install-info in doinst.sh doesn't do anything. I also tried using
# "linuxdoc -B txt --manpage" on the SGML doc sources, but the results
# are ugly and have screwed-up formatting. If I want man pages, I'll
# probably have to make them manually (pun intended).
[ "$INFO" = "yes" ] && gzip $PKG/usr/info/*

mkdir -p $PKGDOC
cp -a README* LICENSE $PKGDOC

mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc

cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE