annotate buildsys/mk/pcc.mk @ 357:d982a00c2177

- PPC64 asm syntax fix, specifying explicitly comparison mode for cmpi (newer toolchains complain, older ones took optional field of instruction which happened to be same value)
author Tassilo Philipp
date Tue, 25 Feb 2020 18:16:13 +0100
parents 3e629dc19168
children 08b0c420ddff
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
1 #//////////////////////////////////////////////////////////////////////////////
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
2 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
3 # Copyright (c) 2010 Daniel Adler <dadler@uni-goettingen.de>,
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
4 # Tassilo Philipp <tphilipp@potion-studios.com>
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
5 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
6 # Permission to use, copy, modify, and distribute this software for any
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
7 # purpose with or without fee is hereby granted, provided that the above
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
8 # copyright notice and this permission notice appear in all copies.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
9 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
10 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
11 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
12 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
13 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
14 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
15 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
16 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
17 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
18 #//////////////////////////////////////////////////////////////////////////////
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
19
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
20
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
21 #@@@ add stuff for crosscompiling here.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
22
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
23 CC = pcc
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
24 LD = pcc
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
25
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
26 #@@@.if $(BUILD_CONFIG) == "debug"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
27 #@@@ add -g option or similar
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
28 #@@@.endif
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
29 CPPFLAGS = -D__Plan9__ -D__${objtype}__
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
30 CFLAGS = -D__Plan9__ -D__${objtype}__ -I$TOP/dyncall -I$TOP/dyncallback -c
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
31 #CXXFLAGS = $CXXFLAGS -D__Plan9__
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
32 #ASFLAGS = -D__Plan9__
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
33
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
34 # JUST TEMPORARY AS LONG AS I'M WORKING ON IT - Plan9's sed doesn't support sed comments
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
35 # /^$/d # Remove empty lines.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
36 # /^#.*/d # Remove comments.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
37 # s/^\.(globl|intel_syntax|file|section).*// # Remove some GAS directives.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
38 # s/(.*):/TEXT \1(SB), $0/g # Reformat function names.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
39 # s/%//g # Remove % register prefixes.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
40 # /^[ ]+/y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/ # Convert everything to uppercase.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
41 # s/([A-Z]+)[ ]*E(..)[, ]*E(..)/\1L \3, \2/ # Convert 32bit instructions with 2 register operands.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
42 # s/([A-Z]+)[ ]*E(..)[, ]*([0-9]+)/\1L $\3, \2/ # Convert 32bit instructions with register and constant as
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
43 # s/([A-Z]+)[ ]*E(..)[, ]*\[E(..)\+([0-9]+)\]/\1L \4(\3), \2/ # Convert 32bit instructions with register and address as
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
44 # s/([A-Z]+)[ ]*E(..)[, ]*\[E(..)\]/\1L 0(\3), \2/ # Convert 32bit instructions with register and address as
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
45 # s/(CALL)[ ]*E(..)[ ]*$/\1 \2/ # Convert CALL instructions.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
46 # s/(CALL)[ ]*\[E(..)\+([0-9]+)\]/\1 \3(\2)/ # Convert CALL instructions with addressing mode.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
47 # s/([A-Z]+)[ ]*E(..)[ ]*$/\1L \2/ # Convert 32bit instructions with register operand.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
48 # s/([A-Z]+)[ ]*\[E(..)\+([0-9]+)\]/\1L \3(\2)/ # Convert 32bit instructions with address operand.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
49 # s/([A-Z]+)[ ]*\[E(..)\]/\1L 0(\2)/ # Convert 32bit instructions with address operand.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
50 # s/(REP)[ ]*(MOV)SB[ ]*$/\1; \2B SI, DI/ # Convert repeater prefix stuff.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
51 # s/(REP)[ ]*(MOV)SD[ ]*$/\1; \2L SI, DI/ # Convert repeater prefix stuff.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
52
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
53 # Step to transform .S into object files.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
54 %.$O: %.S
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
55 cp $prereq $prereq.c
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
56 pcc -E $CPPFLAGS $prereq.c > $stem.s # replace with cpp? pcc requires .c suffix
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
57 rm $prereq.c
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
58 $AS $AFLAGS $stem.s
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
59 rm $stem.s
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
60