1321964Ssjg# $Id: Generic.mk,v 1.13 2017/05/05 18:02:16 sjg Exp $ 2246149Ssjg# 3246149Ssjg 4246149Ssjg# some reasonable defaults 5321964Ssjg.SUFFIXES: .out .a .ln .o .s .S .c ${CXX_SUFFIXES} .F .f .r .y .l .cl .p .h 6246149Ssjg.SUFFIXES: .sh .m4 7246149Ssjg 8246149Ssjg.LIBS: .a 9246149Ssjg 10246149Ssjgtools = \ 11246149Ssjg ar \ 12246149Ssjg lorder \ 13246149Ssjg ranlib \ 14246149Ssjg tsort 15246149Ssjg 16246149Ssjg.for t in ${tools} 17246149Ssjg${t:tu} := ${t:${M_whence}} 18246149Ssjg.endfor 19246149Ssjg 20246149Ssjg# need to make sure this is set 21246149SsjgMACHINE_ARCH.${MACHINE} ?= ${MACHINE} 22246149Ssjg.if empty(MACHINE_ARCH) 23246149SsjgMACHINE_ARCH = ${MACHINE_ARCH.${MACHINE}} 24246149Ssjg.endif 25246149Ssjg 26246149Ssjg.if !empty(TSORT) 27246149SsjgTSORT += -q 28246149Ssjg.endif 29246149Ssjg 30246149SsjgARFLAGS?= rl 31246149Ssjg 32246149SsjgAS?= as 33246149SsjgAFLAGS?= 34246149Ssjg.if ${MACHINE_ARCH} == "sparc64" 35246149SsjgAFLAGS+= -Wa,-Av9a 36246149Ssjg.endif 37246149SsjgCOMPILE.s?= ${CC} ${AFLAGS} -c 38246149SsjgLINK.s?= ${CC} ${AFLAGS} ${LDFLAGS} 39246149SsjgCOMPILE.S?= ${CC} ${AFLAGS} ${CPPFLAGS} -c -traditional-cpp 40246149SsjgLINK.S?= ${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS} 41246149Ssjg 42246149SsjgCC?= cc 43246149SsjgDBG?= -O2 44246149SsjgCFLAGS?= ${DBG} 45246149SsjgCOMPILE.c?= ${CC} ${CFLAGS} ${CPPFLAGS} -c 46246149SsjgLINK.c?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} 47246149Ssjg 48246149SsjgCXX?= c++ 49246149SsjgCXXFLAGS?= ${CFLAGS} 50246149SsjgCOMPILE.cc?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} -c 51246149SsjgLINK.cc?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS} 52246149Ssjg 53246149SsjgOBJC?= ${CC} 54246149SsjgOBJCFLAGS?= ${CFLAGS} 55246149SsjgCOMPILE.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c 56246149SsjgLINK.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDFLAGS} 57246149Ssjg 58246149SsjgCPP?= cpp 59246149SsjgCPPFLAGS?= 60246149Ssjg 61246149SsjgFC?= f77 62246149SsjgFFLAGS?= -O 63246149SsjgRFLAGS?= 64246149SsjgCOMPILE.f?= ${FC} ${FFLAGS} -c 65246149SsjgLINK.f?= ${FC} ${FFLAGS} ${LDFLAGS} 66246149SsjgCOMPILE.F?= ${FC} ${FFLAGS} ${CPPFLAGS} -c 67246149SsjgLINK.F?= ${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS} 68246149SsjgCOMPILE.r?= ${FC} ${FFLAGS} ${RFLAGS} -c 69246149SsjgLINK.r?= ${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS} 70246149Ssjg 71246149SsjgINSTALL?= install 72246149Ssjg 73246149SsjgLEX?= lex 74246149SsjgLFLAGS?= 75246149SsjgLEX.l?= ${LEX} ${LFLAGS} 76246149Ssjg 77246149SsjgLD?= ld 78246149SsjgLDFLAGS?= 79246149Ssjg 80246149SsjgLINT?= lint 81246149SsjgLINTFLAGS?= -chapbxzF 82246149Ssjg 83246149SsjgNM?= nm 84246149Ssjg 85246149SsjgPC?= pc 86246149SsjgPFLAGS?= 87246149SsjgCOMPILE.p?= ${PC} ${PFLAGS} ${CPPFLAGS} -c 88246149SsjgLINK.p?= ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS} 89246149Ssjg 90246149SsjgSHELL?= sh 91246149Ssjg 92246149SsjgSIZE?= size 93246149Ssjg 94246149SsjgYACC?= yacc 95246149SsjgYFLAGS?= 96246149SsjgYACC.y?= ${YACC} ${YFLAGS} 97246149Ssjg 98246149Ssjg# C 99246149Ssjg.c: 100246149Ssjg ${LINK.c} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 101246149Ssjg.c.o: 102246149Ssjg ${COMPILE.c} ${.IMPSRC} 103246149Ssjg.c.a: 104246149Ssjg ${COMPILE.c} ${.IMPSRC} 105246149Ssjg ${AR} ${ARFLAGS} $@ $*.o 106246149Ssjg rm -f $*.o 107246149Ssjg.c.ln: 108246149Ssjg ${LINT} ${LINTFLAGS} ${CPPFLAGS:M-[IDU]*} -i ${.IMPSRC} 109246149Ssjg 110246149Ssjg# C++ 111321964Ssjg${CXX_SUFFIXES}: 112246149Ssjg ${LINK.cc} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 113321964Ssjg${CXX_SUFFIXES:%=%.o}: 114246149Ssjg ${COMPILE.cc} ${.IMPSRC} 115321964Ssjg${CXX_SUFFIXES:%=%.a}: 116246149Ssjg ${COMPILE.cc} ${.IMPSRC} 117246149Ssjg ${AR} ${ARFLAGS} $@ $*.o 118246149Ssjg rm -f $*.o 119246149Ssjg 120246149Ssjg# Fortran/Ratfor 121246149Ssjg.f: 122246149Ssjg ${LINK.f} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 123246149Ssjg.f.o: 124246149Ssjg ${COMPILE.f} ${.IMPSRC} 125246149Ssjg.f.a: 126246149Ssjg ${COMPILE.f} ${.IMPSRC} 127246149Ssjg ${AR} ${ARFLAGS} $@ $*.o 128246149Ssjg rm -f $*.o 129246149Ssjg 130246149Ssjg.F: 131246149Ssjg ${LINK.F} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 132246149Ssjg.F.o: 133246149Ssjg ${COMPILE.F} ${.IMPSRC} 134246149Ssjg.F.a: 135246149Ssjg ${COMPILE.F} ${.IMPSRC} 136246149Ssjg ${AR} ${ARFLAGS} $@ $*.o 137246149Ssjg rm -f $*.o 138246149Ssjg 139246149Ssjg.r: 140246149Ssjg ${LINK.r} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 141246149Ssjg.r.o: 142246149Ssjg ${COMPILE.r} ${.IMPSRC} 143246149Ssjg.r.a: 144246149Ssjg ${COMPILE.r} ${.IMPSRC} 145246149Ssjg ${AR} ${ARFLAGS} $@ $*.o 146246149Ssjg rm -f $*.o 147246149Ssjg 148246149Ssjg# Pascal 149246149Ssjg.p: 150246149Ssjg ${LINK.p} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 151246149Ssjg.p.o: 152246149Ssjg ${COMPILE.p} ${.IMPSRC} 153246149Ssjg.p.a: 154246149Ssjg ${COMPILE.p} ${.IMPSRC} 155246149Ssjg ${AR} ${ARFLAGS} $@ $*.o 156246149Ssjg rm -f $*.o 157246149Ssjg 158246149Ssjg# Assembly 159246149Ssjg.s: 160246149Ssjg ${LINK.s} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 161246149Ssjg.s.o: 162246149Ssjg ${COMPILE.s} ${.IMPSRC} 163246149Ssjg.s.a: 164246149Ssjg ${COMPILE.s} ${.IMPSRC} 165246149Ssjg ${AR} ${ARFLAGS} $@ $*.o 166246149Ssjg rm -f $*.o 167246149Ssjg.S: 168246149Ssjg ${LINK.S} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 169246149Ssjg.S.o: 170246149Ssjg ${COMPILE.S} ${.IMPSRC} 171246149Ssjg.S.a: 172246149Ssjg ${COMPILE.S} ${.IMPSRC} 173246149Ssjg ${AR} ${ARFLAGS} $@ $*.o 174246149Ssjg rm -f $*.o 175246149Ssjg 176246149Ssjg# Lex 177246149Ssjg.l: 178246149Ssjg ${LEX.l} ${.IMPSRC} 179246149Ssjg ${LINK.c} -o ${.TARGET} lex.yy.c ${LDLIBS} -ll 180246149Ssjg rm -f lex.yy.c 181246149Ssjg.l.c: 182246149Ssjg ${LEX.l} ${.IMPSRC} 183246149Ssjg mv lex.yy.c ${.TARGET} 184246149Ssjg.l.o: 185246149Ssjg ${LEX.l} ${.IMPSRC} 186246149Ssjg ${COMPILE.c} -o ${.TARGET} lex.yy.c 187246149Ssjg rm -f lex.yy.c 188246149Ssjg 189246149Ssjg# Yacc 190246149Ssjg.y: 191246149Ssjg ${YACC.y} ${.IMPSRC} 192246149Ssjg ${LINK.c} -o ${.TARGET} y.tab.c ${LDLIBS} 193246149Ssjg rm -f y.tab.c 194246149Ssjg.y.c: 195246149Ssjg ${YACC.y} ${.IMPSRC} 196246149Ssjg mv y.tab.c ${.TARGET} 197246149Ssjg.y.o: 198246149Ssjg ${YACC.y} ${.IMPSRC} 199246149Ssjg ${COMPILE.c} -o ${.TARGET} y.tab.c 200246149Ssjg rm -f y.tab.c 201246149Ssjg 202246149Ssjg# Shell 203246149Ssjg.sh: 204246149Ssjg rm -f ${.TARGET} 205246149Ssjg cp ${.IMPSRC} ${.TARGET} 206246149Ssjg 207