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