xref: /dflybsd-src/contrib/bmake/mk/sys/Generic.mk (revision 9e7ae5a0527a977cab412aede3a532cfe2903bbb)
1*6eef5f0cSAntonio Huete Jimenez#	$Id: Generic.mk,v 1.19 2022/03/25 23:43:06 sjg Exp $
25f1e34d9SAlexandre Perrin#
35f1e34d9SAlexandre Perrin
45f1e34d9SAlexandre Perrin# some reasonable defaults
5f445c897SJohn Marino.SUFFIXES: .out .a .ln .o .s .S .c ${CXX_SUFFIXES} .F .f .r .y .l .cl .p .h
65f1e34d9SAlexandre Perrin.SUFFIXES: .sh .m4
75f1e34d9SAlexandre Perrin
85f1e34d9SAlexandre Perrin.LIBS:		.a
95f1e34d9SAlexandre Perrin
10ca58f742SDaniel Fojttools  ?= \
115f1e34d9SAlexandre Perrin	ar \
125f1e34d9SAlexandre Perrin	lorder \
135f1e34d9SAlexandre Perrin	ranlib \
145f1e34d9SAlexandre Perrin	tsort
155f1e34d9SAlexandre Perrin
165f1e34d9SAlexandre Perrin.for t in ${tools}
175f1e34d9SAlexandre Perrin${t:tu} := ${t:${M_whence}}
185f1e34d9SAlexandre Perrin.endfor
195f1e34d9SAlexandre Perrin
205f1e34d9SAlexandre Perrin# need to make sure this is set
215f1e34d9SAlexandre PerrinMACHINE_ARCH.${MACHINE} ?= ${MACHINE}
225f1e34d9SAlexandre Perrin.if empty(MACHINE_ARCH)
235f1e34d9SAlexandre PerrinMACHINE_ARCH = ${MACHINE_ARCH.${MACHINE}}
245f1e34d9SAlexandre Perrin.endif
255f1e34d9SAlexandre Perrin
265f1e34d9SAlexandre Perrin.if !empty(TSORT)
275f1e34d9SAlexandre PerrinTSORT += -q
285f1e34d9SAlexandre Perrin.endif
295f1e34d9SAlexandre Perrin
30*6eef5f0cSAntonio Huete JimenezARFLAGS ?=	r
315f1e34d9SAlexandre Perrin
325f1e34d9SAlexandre PerrinAS ?=		as
335f1e34d9SAlexandre PerrinAFLAGS ?=
345f1e34d9SAlexandre Perrin.if ${MACHINE_ARCH} == "sparc64"
355f1e34d9SAlexandre PerrinAFLAGS+= -Wa,-Av9a
365f1e34d9SAlexandre Perrin.endif
375f1e34d9SAlexandre PerrinCOMPILE.s ?=	${CC} ${AFLAGS} -c
385f1e34d9SAlexandre PerrinLINK.s ?=	${CC} ${AFLAGS} ${LDFLAGS}
395f1e34d9SAlexandre PerrinCOMPILE.S ?=	${CC} ${AFLAGS} ${CPPFLAGS} -c -traditional-cpp
405f1e34d9SAlexandre PerrinLINK.S ?=	${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS}
415f1e34d9SAlexandre Perrin
425f1e34d9SAlexandre PerrinCC ?=		cc
435f1e34d9SAlexandre PerrinDBG ?=		-O2
445f1e34d9SAlexandre PerrinCFLAGS ?=	${DBG}
455f1e34d9SAlexandre PerrinCOMPILE.c ?=	${CC} ${CFLAGS} ${CPPFLAGS} -c
465f1e34d9SAlexandre PerrinLINK.c ?=	${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}
475f1e34d9SAlexandre Perrin
485f1e34d9SAlexandre PerrinCXX ?=		c++
495f1e34d9SAlexandre PerrinCXXFLAGS ?=	${CFLAGS}
505f1e34d9SAlexandre PerrinCOMPILE.cc ?=	${CXX} ${CXXFLAGS} ${CPPFLAGS} -c
515f1e34d9SAlexandre PerrinLINK.cc ?=	${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}
525f1e34d9SAlexandre Perrin
535f1e34d9SAlexandre PerrinOBJC ?=		${CC}
545f1e34d9SAlexandre PerrinOBJCFLAGS ?=	${CFLAGS}
555f1e34d9SAlexandre PerrinCOMPILE.m ?=	${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c
565f1e34d9SAlexandre PerrinLINK.m ?=	${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDFLAGS}
575f1e34d9SAlexandre Perrin
585f1e34d9SAlexandre PerrinCPP ?=		cpp
595f1e34d9SAlexandre PerrinCPPFLAGS ?=
605f1e34d9SAlexandre Perrin
615f1e34d9SAlexandre PerrinFC ?=		f77
625f1e34d9SAlexandre PerrinFFLAGS ?=	-O
635f1e34d9SAlexandre PerrinRFLAGS ?=
645f1e34d9SAlexandre PerrinCOMPILE.f ?=	${FC} ${FFLAGS} -c
655f1e34d9SAlexandre PerrinLINK.f ?=	${FC} ${FFLAGS} ${LDFLAGS}
665f1e34d9SAlexandre PerrinCOMPILE.F ?=	${FC} ${FFLAGS} ${CPPFLAGS} -c
675f1e34d9SAlexandre PerrinLINK.F ?=	${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS}
685f1e34d9SAlexandre PerrinCOMPILE.r ?=	${FC} ${FFLAGS} ${RFLAGS} -c
695f1e34d9SAlexandre PerrinLINK.r ?=	${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS}
705f1e34d9SAlexandre Perrin
715f1e34d9SAlexandre PerrinINSTALL ?=	install
725f1e34d9SAlexandre Perrin
735f1e34d9SAlexandre PerrinLEX ?=		lex
745f1e34d9SAlexandre PerrinLFLAGS ?=
755f1e34d9SAlexandre PerrinLEX.l ?=		${LEX} ${LFLAGS}
765f1e34d9SAlexandre Perrin
775f1e34d9SAlexandre PerrinLD ?=		ld
785f1e34d9SAlexandre PerrinLDFLAGS ?=
795f1e34d9SAlexandre Perrin
805f1e34d9SAlexandre PerrinLINT ?=		lint
815f1e34d9SAlexandre PerrinLINTFLAGS ?=	-chapbxzF
825f1e34d9SAlexandre Perrin
835f1e34d9SAlexandre PerrinNM ?=		nm
845f1e34d9SAlexandre Perrin
855f1e34d9SAlexandre PerrinPC ?=		pc
865f1e34d9SAlexandre PerrinPFLAGS ?=
875f1e34d9SAlexandre PerrinCOMPILE.p ?=	${PC} ${PFLAGS} ${CPPFLAGS} -c
885f1e34d9SAlexandre PerrinLINK.p ?=	${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS}
895f1e34d9SAlexandre Perrin
905f1e34d9SAlexandre PerrinSIZE ?=		size
915f1e34d9SAlexandre Perrin
925f1e34d9SAlexandre PerrinYACC ?=		yacc
935f1e34d9SAlexandre PerrinYFLAGS ?=
945f1e34d9SAlexandre PerrinYACC.y ?=	${YACC} ${YFLAGS}
955f1e34d9SAlexandre Perrin
965f1e34d9SAlexandre Perrin# C
975f1e34d9SAlexandre Perrin.c:
985f1e34d9SAlexandre Perrin	${LINK.c} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
995f1e34d9SAlexandre Perrin.c.o:
1005f1e34d9SAlexandre Perrin	${COMPILE.c} ${.IMPSRC}
1015f1e34d9SAlexandre Perrin.c.a:
1025f1e34d9SAlexandre Perrin	${COMPILE.c} ${.IMPSRC}
1035f1e34d9SAlexandre Perrin	${AR} ${ARFLAGS} $@ $*.o
1045f1e34d9SAlexandre Perrin	rm -f $*.o
1055f1e34d9SAlexandre Perrin.c.ln:
1065f1e34d9SAlexandre Perrin	${LINT} ${LINTFLAGS} ${CPPFLAGS:M-[IDU]*} -i ${.IMPSRC}
1075f1e34d9SAlexandre Perrin
1085f1e34d9SAlexandre Perrin# C++
109f445c897SJohn Marino${CXX_SUFFIXES}:
1105f1e34d9SAlexandre Perrin	${LINK.cc} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
111f445c897SJohn Marino${CXX_SUFFIXES:%=%.o}:
1125f1e34d9SAlexandre Perrin	${COMPILE.cc} ${.IMPSRC}
113f445c897SJohn Marino${CXX_SUFFIXES:%=%.a}:
1145f1e34d9SAlexandre Perrin	${COMPILE.cc} ${.IMPSRC}
1155f1e34d9SAlexandre Perrin	${AR} ${ARFLAGS} $@ $*.o
1165f1e34d9SAlexandre Perrin	rm -f $*.o
1175f1e34d9SAlexandre Perrin
1185f1e34d9SAlexandre Perrin# Fortran/Ratfor
1195f1e34d9SAlexandre Perrin.f:
1205f1e34d9SAlexandre Perrin	${LINK.f} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
1215f1e34d9SAlexandre Perrin.f.o:
1225f1e34d9SAlexandre Perrin	${COMPILE.f} ${.IMPSRC}
1235f1e34d9SAlexandre Perrin.f.a:
1245f1e34d9SAlexandre Perrin	${COMPILE.f} ${.IMPSRC}
1255f1e34d9SAlexandre Perrin	${AR} ${ARFLAGS} $@ $*.o
1265f1e34d9SAlexandre Perrin	rm -f $*.o
1275f1e34d9SAlexandre Perrin
1285f1e34d9SAlexandre Perrin.F:
1295f1e34d9SAlexandre Perrin	${LINK.F} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
1305f1e34d9SAlexandre Perrin.F.o:
1315f1e34d9SAlexandre Perrin	${COMPILE.F} ${.IMPSRC}
1325f1e34d9SAlexandre Perrin.F.a:
1335f1e34d9SAlexandre Perrin	${COMPILE.F} ${.IMPSRC}
1345f1e34d9SAlexandre Perrin	${AR} ${ARFLAGS} $@ $*.o
1355f1e34d9SAlexandre Perrin	rm -f $*.o
1365f1e34d9SAlexandre Perrin
1375f1e34d9SAlexandre Perrin.r:
1385f1e34d9SAlexandre Perrin	${LINK.r} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
1395f1e34d9SAlexandre Perrin.r.o:
1405f1e34d9SAlexandre Perrin	${COMPILE.r} ${.IMPSRC}
1415f1e34d9SAlexandre Perrin.r.a:
1425f1e34d9SAlexandre Perrin	${COMPILE.r} ${.IMPSRC}
1435f1e34d9SAlexandre Perrin	${AR} ${ARFLAGS} $@ $*.o
1445f1e34d9SAlexandre Perrin	rm -f $*.o
1455f1e34d9SAlexandre Perrin
1465f1e34d9SAlexandre Perrin# Pascal
1475f1e34d9SAlexandre Perrin.p:
1485f1e34d9SAlexandre Perrin	${LINK.p} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
1495f1e34d9SAlexandre Perrin.p.o:
1505f1e34d9SAlexandre Perrin	${COMPILE.p} ${.IMPSRC}
1515f1e34d9SAlexandre Perrin.p.a:
1525f1e34d9SAlexandre Perrin	${COMPILE.p} ${.IMPSRC}
1535f1e34d9SAlexandre Perrin	${AR} ${ARFLAGS} $@ $*.o
1545f1e34d9SAlexandre Perrin	rm -f $*.o
1555f1e34d9SAlexandre Perrin
1565f1e34d9SAlexandre Perrin# Assembly
1575f1e34d9SAlexandre Perrin.s:
1585f1e34d9SAlexandre Perrin	${LINK.s} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
1595f1e34d9SAlexandre Perrin.s.o:
1605f1e34d9SAlexandre Perrin	${COMPILE.s} ${.IMPSRC}
1615f1e34d9SAlexandre Perrin.s.a:
1625f1e34d9SAlexandre Perrin	${COMPILE.s} ${.IMPSRC}
1635f1e34d9SAlexandre Perrin	${AR} ${ARFLAGS} $@ $*.o
1645f1e34d9SAlexandre Perrin	rm -f $*.o
1655f1e34d9SAlexandre Perrin.S:
1665f1e34d9SAlexandre Perrin	${LINK.S} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
1675f1e34d9SAlexandre Perrin.S.o:
1685f1e34d9SAlexandre Perrin	${COMPILE.S} ${.IMPSRC}
1695f1e34d9SAlexandre Perrin.S.a:
1705f1e34d9SAlexandre Perrin	${COMPILE.S} ${.IMPSRC}
1715f1e34d9SAlexandre Perrin	${AR} ${ARFLAGS} $@ $*.o
1725f1e34d9SAlexandre Perrin	rm -f $*.o
1735f1e34d9SAlexandre Perrin
1745f1e34d9SAlexandre Perrin# Lex
1755f1e34d9SAlexandre Perrin.l:
1765f1e34d9SAlexandre Perrin	${LEX.l} ${.IMPSRC}
1775f1e34d9SAlexandre Perrin	${LINK.c} -o ${.TARGET} lex.yy.c ${LDLIBS} -ll
1785f1e34d9SAlexandre Perrin	rm -f lex.yy.c
1795f1e34d9SAlexandre Perrin.l.c:
1805f1e34d9SAlexandre Perrin	${LEX.l} ${.IMPSRC}
1815f1e34d9SAlexandre Perrin	mv lex.yy.c ${.TARGET}
1825f1e34d9SAlexandre Perrin.l.o:
1835f1e34d9SAlexandre Perrin	${LEX.l} ${.IMPSRC}
1845f1e34d9SAlexandre Perrin	${COMPILE.c} -o ${.TARGET} lex.yy.c
1855f1e34d9SAlexandre Perrin	rm -f lex.yy.c
1865f1e34d9SAlexandre Perrin
1875f1e34d9SAlexandre Perrin# Yacc
1885f1e34d9SAlexandre Perrin.y:
1895f1e34d9SAlexandre Perrin	${YACC.y} ${.IMPSRC}
1905f1e34d9SAlexandre Perrin	${LINK.c} -o ${.TARGET} y.tab.c ${LDLIBS}
1915f1e34d9SAlexandre Perrin	rm -f y.tab.c
1925f1e34d9SAlexandre Perrin.y.c:
1935f1e34d9SAlexandre Perrin	${YACC.y} ${.IMPSRC}
1945f1e34d9SAlexandre Perrin	mv y.tab.c ${.TARGET}
1955f1e34d9SAlexandre Perrin.y.o:
1965f1e34d9SAlexandre Perrin	${YACC.y} ${.IMPSRC}
1975f1e34d9SAlexandre Perrin	${COMPILE.c} -o ${.TARGET} y.tab.c
1985f1e34d9SAlexandre Perrin	rm -f y.tab.c
1995f1e34d9SAlexandre Perrin
2005f1e34d9SAlexandre Perrin# Shell
2015f1e34d9SAlexandre Perrin.sh:
2025f1e34d9SAlexandre Perrin	rm -f ${.TARGET}
2035f1e34d9SAlexandre Perrin	cp ${.IMPSRC} ${.TARGET}
204*6eef5f0cSAntonio Huete Jimenez	chmod a+x ${.TARGET}
205