1 |
# $Id: SunOS.mk,v 1.8 2017/05/05 18:02:17 sjg Exp $ |
2 |
|
3 |
.if ${.PARSEFILE} == "sys.mk" |
4 |
.include <host-target.mk> |
5 |
|
6 |
OS?= SunOS.${HOST_OSMAJOR} |
7 |
unix?= We run ${OS}. |
8 |
.endif |
9 |
|
10 |
.if ${HOST_OSMAJOR} > 4 |
11 |
ROOT_GROUP= root |
12 |
|
13 |
SHLIB_FULLVERSION = ${SHLIB_MAJOR} |
14 |
|
15 |
# suppress the dependency |
16 |
LIBCRT0= /dev/null |
17 |
|
18 |
.ifndef CC |
19 |
# the PATH below may find an ancient gcc |
20 |
CC := ${gcc:L:${M_whence}} |
21 |
.export CC |
22 |
.endif |
23 |
|
24 |
# the stuff in /usr/xpg4/bin is usually more sane. |
25 |
PATH=/usr/xpg4/bin:/usr/sbin:/usr/bin:/usr/ucb:/usr/sfw/bin:/opt/gnu/bin:/usr/ccs/bin:/usr/local/bin |
26 |
.export PATH |
27 |
|
28 |
DSHLIBEXT = .so |
29 |
HOST_LIBDIRS = /usr/lib /lib /usr/sfw/lib |
30 |
|
31 |
# no -X |
32 |
LD_X= |
33 |
LD_x= |
34 |
RANLIB= : |
35 |
CPP= /usr/ccs/lib/cpp |
36 |
.else |
37 |
ROOT_GROUP= wheel |
38 |
RANLIB= ranlib |
39 |
CPP= cpp |
40 |
.endif |
41 |
|
42 |
# the rest is common |
43 |
|
44 |
.SUFFIXES: .out .a .ln .o .c ${CXX_SUFFIXES} .F .f .r .y .l .s .S .cl .p .h .sh .m4 |
45 |
|
46 |
.LIBS: .a |
47 |
|
48 |
AR= ar |
49 |
ARFLAGS= rl |
50 |
|
51 |
AS= as |
52 |
AS_STDIN= - |
53 |
AFLAGS= |
54 |
COMPILE.s= ${AS} ${AFLAGS} |
55 |
LINK.s= ${CC} ${AFLAGS} ${LDFLAGS} |
56 |
COMPILE.S= ${CC} ${AFLAGS} ${CPPFLAGS} -c |
57 |
LINK.S= ${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS} |
58 |
.if exists(/opt/gnu/bin/gcc) || exists(/usr/local/bin/gcc) |
59 |
CC ?= gcc -pipe |
60 |
DBG= -O -g |
61 |
STATIC= -static |
62 |
.else |
63 |
CC ?= cc |
64 |
DBG= -g |
65 |
STATIC= -Bstatic |
66 |
.endif |
67 |
CFLAGS= ${DBG} |
68 |
COMPILE.c= ${CC} ${CFLAGS} ${CPPFLAGS} -c |
69 |
LINK.c= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} |
70 |
|
71 |
CXX= g++ |
72 |
CXXFLAGS= ${CFLAGS} |
73 |
COMPILE.cc= ${CXX} ${CXXFLAGS} ${CPPFLAGS} -c |
74 |
LINK.cc= ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS} |
75 |
|
76 |
.if defined(DESTDIR) |
77 |
CPPFLAGS+= -nostdinc -idirafter ${DESTDIR}/usr/include |
78 |
.endif |
79 |
|
80 |
MK_DEP= mkdeps.sh -N |
81 |
FC= f77 |
82 |
FFLAGS= -O |
83 |
RFLAGS= |
84 |
COMPILE.f= ${FC} ${FFLAGS} -c |
85 |
LINK.f= ${FC} ${FFLAGS} ${LDFLAGS} |
86 |
COMPILE.F= ${FC} ${FFLAGS} ${CPPFLAGS} -c |
87 |
LINK.F= ${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS} |
88 |
COMPILE.r= ${FC} ${FFLAGS} ${RFLAGS} -c |
89 |
LINK.r= ${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS} |
90 |
|
91 |
LEX= lex |
92 |
LFLAGS= |
93 |
LEX.l= ${LEX} ${LFLAGS} |
94 |
|
95 |
LD= ld |
96 |
LDFLAGS= |
97 |
|
98 |
LINT= lint |
99 |
LINTFLAGS= -chapbx |
100 |
|
101 |
PC= pc |
102 |
PFLAGS= |
103 |
COMPILE.p= ${PC} ${PFLAGS} ${CPPFLAGS} -c |
104 |
LINK.p= ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS} |
105 |
|
106 |
SHELL= sh |
107 |
|
108 |
.if exists(/usr/local/bin/bison) || exists(/opt/gnu/bin/bison) |
109 |
YACC= bison -y |
110 |
.else |
111 |
YACC= yacc |
112 |
.endif |
113 |
YFLAGS= -d |
114 |
YACC.y= ${YACC} ${YFLAGS} |
115 |
|
116 |
# C |
117 |
.c: |
118 |
${LINK.c} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} |
119 |
.c.o: |
120 |
${COMPILE.c} ${.IMPSRC} |
121 |
.c.a: |
122 |
${COMPILE.c} ${.IMPSRC} |
123 |
${AR} ${ARFLAGS} $@ $*.o |
124 |
rm -f $*.o |
125 |
|
126 |
# C++ |
127 |
${CXX_SUFFIXES}: |
128 |
${LINK.cc} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} |
129 |
${CXX_SUFFIXES:%=%.o}: |
130 |
${COMPILE.cc} ${.IMPSRC} |
131 |
${CXX_SUFFIXES:%=%.a}: |
132 |
${COMPILE.cc} ${.IMPSRC} |
133 |
${AR} ${ARFLAGS} $@ $*.o |
134 |
rm -f $*.o |
135 |
|
136 |
# Fortran/Ratfor |
137 |
.f: |
138 |
${LINK.f} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} |
139 |
.f.o: |
140 |
${COMPILE.f} ${.IMPSRC} |
141 |
.f.a: |
142 |
${COMPILE.f} ${.IMPSRC} |
143 |
${AR} ${ARFLAGS} $@ $*.o |
144 |
rm -f $*.o |
145 |
|
146 |
.F: |
147 |
${LINK.F} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} |
148 |
.F.o: |
149 |
${COMPILE.F} ${.IMPSRC} |
150 |
.F.a: |
151 |
${COMPILE.F} ${.IMPSRC} |
152 |
${AR} ${ARFLAGS} $@ $*.o |
153 |
rm -f $*.o |
154 |
|
155 |
.r: |
156 |
${LINK.r} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} |
157 |
.r.o: |
158 |
${COMPILE.r} ${.IMPSRC} |
159 |
.r.a: |
160 |
${COMPILE.r} ${.IMPSRC} |
161 |
${AR} ${ARFLAGS} $@ $*.o |
162 |
rm -f $*.o |
163 |
|
164 |
# Pascal |
165 |
.p: |
166 |
${LINK.p} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} |
167 |
.p.o: |
168 |
${COMPILE.p} ${.IMPSRC} |
169 |
.p.a: |
170 |
${COMPILE.p} ${.IMPSRC} |
171 |
${AR} ${ARFLAGS} $@ $*.o |
172 |
rm -f $*.o |
173 |
|
174 |
# Assembly |
175 |
.s: |
176 |
${LINK.s} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} |
177 |
.s.o: |
178 |
${COMPILE.s} ${.IMPSRC} |
179 |
.s.a: |
180 |
${COMPILE.s} ${.IMPSRC} |
181 |
${AR} ${ARFLAGS} $@ $*.o |
182 |
rm -f $*.o |
183 |
.S: |
184 |
${LINK.S} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} |
185 |
.S.o: |
186 |
${COMPILE.S} ${.IMPSRC} |
187 |
.S.a: |
188 |
${COMPILE.S} ${.IMPSRC} |
189 |
${AR} ${ARFLAGS} $@ $*.o |
190 |
rm -f $*.o |
191 |
|
192 |
# Lex |
193 |
.l: |
194 |
${LEX.l} ${.IMPSRC} |
195 |
${LINK.c} -o ${.TARGET} lex.yy.c ${LDLIBS} -ll |
196 |
rm -f lex.yy.c |
197 |
.l.c: |
198 |
${LEX.l} ${.IMPSRC} |
199 |
mv lex.yy.c ${.TARGET} |
200 |
.l.o: |
201 |
${LEX.l} ${.IMPSRC} |
202 |
${COMPILE.c} -o ${.TARGET} lex.yy.c |
203 |
rm -f lex.yy.c |
204 |
|
205 |
# Yacc |
206 |
.y: |
207 |
${YACC.y} ${.IMPSRC} |
208 |
${LINK.c} -o ${.TARGET} y.tab.c ${LDLIBS} |
209 |
rm -f y.tab.c |
210 |
.y.c: |
211 |
${YACC.y} ${.IMPSRC} |
212 |
mv y.tab.c ${.TARGET} |
213 |
.y.o: |
214 |
${YACC.y} ${.IMPSRC} |
215 |
${COMPILE.c} -o ${.TARGET} y.tab.c |
216 |
rm -f y.tab.c |
217 |
|
218 |
# Shell |
219 |
.sh: |
220 |
rm -f ${.TARGET} |
221 |
cp ${.IMPSRC} ${.TARGET} |