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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
|
# Rewrite default rules from .c.o: to .c.o: .c
/^\./s/^\(\.[a-z]*\)\(\.[a-z]*\)\( *: *\)$/\1\2\3 \1/
# Change dependency char.
/::/s/::/ \\Option-f\\Option-f /g
/:/s/:/ \\Option-f /g
/^[SU]=/s/ \\Option-f /:/g
# Change syntax of Makefile vars.
/\$/s/\${\([a-zA-Z0-9_]*\)}/{\1}/g
/\$/s/\$(\([a-zA-Z0-9_]*\))/{\1}/g
# Change $@ to {targ}
/\$@/s/\$@/{targ}/g
# Change pathname syntax.
#
# If line ends with .. then assume it sets a variable that will
# be used to prefix something else -- eliminate one colon, assuming
# that a slash after the ${name} will turn into the missing colon.
# Mac pathname conventions are IRREGULAR and UGLY!
/\./s,\.\./\.\.$,::,
/\./s,\.\.$,:,
# Same if it ends with . (a single dot); turn it into nothing.
/\./s,\.$,,g
# Rules for .. and . elsewhere in the line
# Convert ../: to ::, recur to get whole paths.
/\./s,\.\./:,::,g
# Convert ../../ to :::
/\./s,\.\./\.\./,:::,g
/\./s,\.\./,::,g
/\.\//s,\./,:,g
/\//s,/,:,g
/=/s/ = \.$/ = :/
# Comment out any explicit srcdir setting.
# /srcdir/s/^srcdir/# srcdir/
/version/s/^version=/# version=/
/BASEDIR/s/^BASEDIR =.*$/BASEDIR = "{srcroot}"/
/{BASEDIR}:/s/{BASEDIR}:/{BASEDIR}/g
# The original lines screw up -I$(srcdir)/../des by eliminating a colon.
# Proposed fix: Eliminate srcdir prefixes totally.
#/{srcdir}:/s/{srcdir}:/"{srcdir}"/g
/{srcdir}:/s/{srcdir}://g
#/"{srcdir}":/s/"{srcdir}":/"{srcdir}"/g
# Comment out settings of anything set by mpw host config.
##/CC/s/^CC *=/#CC =/
##/CFLAGS/s/^CFLAGS *=/#CFLAGS =/
##/LDFLAGS/s/^LDFLAGS *=/#LDFLAGS =/
# Change -I usage.
/-I/s/-I\./-i :/g
/-I/s/-I::bfd/-i ::bfd:/g
/-I/s/-I::include/-i ::include:/g
/-I/s/-I/-i /g
# Change -D usage.
/-D/s/\([ =]\)-D\([^ ]*\)/\1-d \2/g
# Change continuation char.
/\\$/s/\\$/\\Option-d/
# Change wildcard char.
/^[^#]/s/\*/\\Option-x/g
# Change path of various types of source files.
#/\.[chly]/s/\([ ><=]\)\([-a-zA-Z0-9_$:"]*\)\.\([chly]\)/\1"{s}"\2.\3/g
#/\.[chly]/s/^\([-a-zA-Z0-9_${}:"]*\)\.\([chly]\)/"{s}"\1.\2/g
# Skip the {s} and {o} business for now...
# Fix some overenthusiasms.
#/{s}/s/"{s}""{srcdir}"/"{srcdir}"/g
#/{s}/s/"{s}"{\([a-zA-Z0-9_]*\)dir}/"{\1dir}"/g
#/{s}/s/"{s}"{\([a-zA-Z0-9_]*\)DIR}/"{\1DIR}"/g
#/{s}/s/"{s}""{\([a-zA-Z0-9_]*\)dir}"/"{\1dir}"/g
#/{s}/s/"{s}""{\([a-zA-Z0-9_]*\)DIR}"/"{\1DIR}"/g
#/{s}/s/"{s}":/:/g
#/{s}/s/^"{s}"//g
#/^\./s/"{s}"\././g
# Change extension and path of objects, except in the OBJEXT line.
#/^OBJEXT/!s/\([ =]\)\([-a-zA-Z0-9_${}:"]*\)\.o/\1"{o}"\2.c.o/g
#/\.o/s/^\([-a-zA-Z0-9_${}:"]*\)\.o/"{o}"\1.c.o/g
# Skip the {o} stuff for now...
/^OBJEXT/!s/\([ =]\)\([-a-zA-Z0-9_${}:"]*\)\.o/\1\2.c.o/g
/\.o/s/^\([-a-zA-Z0-9_${}:"]*\)\.o/\1.c.o/g
# Clean up.
#/\.o/s/"{o}""{o}"/"{o}"/g
#/{o}/s/^"{o}"\([a-zA-Z0-9_]*\)=/\1=/g
# Change extension of libs.
# /\.a/s/lib\([a-z]*\)\.a/lib\1.o/g
# Remove non-echo option.
/^ -/s/^ -/ /
# Change cp to duplicate.
# /cp/s/^\([ ]*\)cp /\1Duplicate -d -y /
# Change mv to rename.
# /mv/s/^\([ ]*\)mv /\1Rename -y /
# /Rename/s/^\([ ]*\)Rename -y -f/\1Rename -y/
# Change rm to delete.
/^RM=/s/rm -f/Delete -i -y/
# /rm/s/^\([ ]*\)rm /\1Delete -y /
# /Delete/s/^\([ ]*\)Delete -y -f/\1Delete -y/
# Comment out symlinking.
# /ln/s/^\([ ]*\)ln /\1# ln /
# Remove -c from explicit compiler calls.
# /-c/s/{CC}\(.*\) -c \(.*\)\([-a-z]*\)\.c/{CC}\1 \2\3.c -o "{o}"\3.c.o/g
# Don't ask... prev subst seems to omit the second filename.
# /-o/s/\([-a-z]*\)\.c -o "{o}".c.o/\1\.c -o "{o}"\1.c.o/
# Change linking cc to link.
/LDFLAGS/ s/{CC} \(.*\){CFLAGS}\(.*\){LDFLAGS}/Link \1 \2 {LDFLAGS}/
/CFLAGS_LINK/s/{CC} \(.*\){CFLAGS_LINK}\(.*\){LDFLAGS}/Link \1 \2 {LDFLAGS}/
# Comment out .PHONY rules.
/\.PHONY/s/^\.PHONY/# \.PHONY/
# Comment out .SUFFIXES rules.
/\.SUFFIXES/s/^\.SUFFIXES/# \.SUFFIXES/
# Comment out .PRECIOUS rules.
/\.PRECIOUS/s/^\.PRECIOUS/# \.PRECIOUS/
## Comment out default rules.
##/^\./s/^\(\.[a-z]*\.[a-z]* \)/# \1/
#
# End of original hack-mf.sed
#
# Begin original hack-mf2.sed
#
# Transform expressions.
# Set the install program appropriate.
# /INSTALL/s/^INSTALL *= *`.*`:install.sh -c/INSTALL = Duplicate -y/
# Include from the extra-include dir.
# /^INCLUDES = /s/^INCLUDES = /INCLUDES = -i "{srcroot}"extra-include /
# Yuck - remove unconverted autoconf things.
# /@/s/@[^ ]*@//g
# Hackery, pure and simple
# To speed up compiles, remove duplicated -i options.
/-i/s/\(-i [^ ]*\) \1 /\1 /g
# Note! There are 8-bit characters in the three lines below:
# 0xc4, 0xb6, 0xc5.
/Option/s/\\Option-f/Ä/g
/Option/s/\\Option-d/¶/g
/Option/s/\\Option-x/Å/g
|