-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathgp3asm
executable file
·111 lines (100 loc) · 2.73 KB
/
gp3asm
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
#!/bin/bash
#/**********************************************************************
# GP3ASM version
#axasm Copyright 2006, 2007, 2008, 2009
#by Al Williams ([email protected]).
#
#
#This file is part of axasm.
#
#axasm is free software: you can redistribute it and/or modify it
#under the terms of the GNU General Public Licenses as published
#by the Free Software Foundation, either version 3 of the License, or
#(at your option) any later version.
#
#axasm is distributed in the hope that it will be useful, but
#WITHOUT ANY WARRANTY: without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#GNU General Public License for more details.
#
#You should have received a copy of the GNU General Public License
#along with axasm (see LICENSE.TXT).
#If not, see http://www.gnu.org/licenses/.
#
#If a non-GPL license is desired, contact the author.
#
#This is the assembler driver script
#
#***********************************************************************/
PROC=soloasm
LIB=`dirname $0`
function usage {
cat >&2 <<EOF
Usage: gp3asm [-D define] [-o file] [-z zipfile] [-n name] inputfile
-D = Set C-style preprocessor define (multiple allowed)
-n = Set output name
-o = Set output file (required)
-z = Write zip file
gp3asm, axasm and soloasm by Al Williams [email protected]
EOF
exit 1
}
POSTOP="" # output arguments sent to compiled program
DEFOP="" # -D options to compiler
ZIPFILE=0
while getopts "hD:o:z:n:" flag
do
case $flag in
D ) DEFOP="$DEFOP -D $OPTARG" ;;
n ) PNAME=$OPTARG ;;
o ) OUTFILE=$OPTARG ;;
z ) ZIPFILE=1 ; ZFILE=$OPTARG ;;
h ) usage ;;
? ) usage ;;
esac
done
if [ -z "$OUTFILE" ]
then
usage
fi
PROC="gp3"
POSTOP="$POSTOP -v"
shift `expr $OPTIND - 1`
# test for $# >= 1
if [ $# -lt 1 ]
then usage
fi
LFILE=`mktemp`
CFILE=`mktemp`
XFILE=`mktemp`
rm -f $CFILE
awk -f $LIB/soloinc.awk $1 | awk -f $LIB/solopre.awk -v PROC=$PROC -v LFILE=$LFILE >$CFILE
if gcc -I$LIB -x c -std=c99 $DEFOP -o $XFILE $LIB/soloasm.c $CFILE
then
if [ "$ZIPFILE" == "1" ]
then
ZMNT=`mktemp -d`
fuse-zip $ZFILE $ZMNT
OUTFILE="$ZMNT/$OUTFILE"
cp $1 $ZMNT/$PNAME.gpa
fi
$XFILE $POSTOP | awk -f $LIB/gp3loader.awk >$OUTFILE
if [ "$ZIPFILE" == "1" ]
then
THEDATE=`date`
cat >$ZMNT/readme.txt <<EOF
File $PNAME compiled with GP3ASM on $THEDATE
GP3ASM is a free service provided by AWC
User assumes all risk of using code generated by GP3ASM.
AWC provides the program and this output 'as is' without
warranty of any kind, expressed or implied, including,
but not limited to, the implied warranties of
merchantability and fitness for a particular purpose.
EOF
fusermount -u $ZMNT
rm -r $ZMNT
fi
fi
rm $LFILE
rm $CFILE
rm $XFILE