1246149Ssjg# $Id: Generic.mk,v 1.11 2010/09/24 05:59:53 sjg Exp $ 2246149Ssjg# 3246149Ssjg 4246149Ssjg# some reasonable defaults 5246149Ssjg.SUFFIXES: .out .a .ln .o .s .S .c .cc .cpp .cxx .C .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 83246149SsjgMAKE?= ${.MAKE} 84246149Ssjg 85246149SsjgNM?= nm 86246149Ssjg 87246149SsjgPC?= pc 88246149SsjgPFLAGS?= 89246149SsjgCOMPILE.p?= ${PC} ${PFLAGS} ${CPPFLAGS} -c 90246149SsjgLINK.p?= ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS} 91246149Ssjg 92246149SsjgSHELL?= sh 93246149Ssjg 94246149SsjgSIZE?= size 95246149Ssjg 96246149SsjgYACC?= yacc 97246149SsjgYFLAGS?= 98246149SsjgYACC.y?= ${YACC} ${YFLAGS} 99246149Ssjg 100246149Ssjg# C 101246149Ssjg.c: 102246149Ssjg ${LINK.c} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 103246149Ssjg.c.o: 104246149Ssjg ${COMPILE.c} ${.IMPSRC} 105246149Ssjg.c.a: 106246149Ssjg ${COMPILE.c} ${.IMPSRC} 107246149Ssjg ${AR} ${ARFLAGS} $@ $*.o 108246149Ssjg rm -f $*.o 109246149Ssjg.c.ln: 110246149Ssjg ${LINT} ${LINTFLAGS} ${CPPFLAGS:M-[IDU]*} -i ${.IMPSRC} 111246149Ssjg 112246149Ssjg# C++ 113246149Ssjg.cc .cpp .cxx .C: 114246149Ssjg ${LINK.cc} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 115246149Ssjg.cc.o .cpp.o .cxx.o .C.o: 116246149Ssjg ${COMPILE.cc} ${.IMPSRC} 117246149Ssjg.cc.a .cpp.a .cxx.a .C.a: 118246149Ssjg ${COMPILE.cc} ${.IMPSRC} 119246149Ssjg ${AR} ${ARFLAGS} $@ $*.o 120246149Ssjg rm -f $*.o 121246149Ssjg 122246149Ssjg# Fortran/Ratfor 123246149Ssjg.f: 124246149Ssjg ${LINK.f} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 125246149Ssjg.f.o: 126246149Ssjg ${COMPILE.f} ${.IMPSRC} 127246149Ssjg.f.a: 128246149Ssjg ${COMPILE.f} ${.IMPSRC} 129246149Ssjg ${AR} ${ARFLAGS} $@ $*.o 130246149Ssjg rm -f $*.o 131246149Ssjg 132246149Ssjg.F: 133246149Ssjg ${LINK.F} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 134246149Ssjg.F.o: 135246149Ssjg ${COMPILE.F} ${.IMPSRC} 136246149Ssjg.F.a: 137246149Ssjg ${COMPILE.F} ${.IMPSRC} 138246149Ssjg ${AR} ${ARFLAGS} $@ $*.o 139246149Ssjg rm -f $*.o 140246149Ssjg 141246149Ssjg.r: 142246149Ssjg ${LINK.r} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 143246149Ssjg.r.o: 144246149Ssjg ${COMPILE.r} ${.IMPSRC} 145246149Ssjg.r.a: 146246149Ssjg ${COMPILE.r} ${.IMPSRC} 147246149Ssjg ${AR} ${ARFLAGS} $@ $*.o 148246149Ssjg rm -f $*.o 149246149Ssjg 150246149Ssjg# Pascal 151246149Ssjg.p: 152246149Ssjg ${LINK.p} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 153246149Ssjg.p.o: 154246149Ssjg ${COMPILE.p} ${.IMPSRC} 155246149Ssjg.p.a: 156246149Ssjg ${COMPILE.p} ${.IMPSRC} 157246149Ssjg ${AR} ${ARFLAGS} $@ $*.o 158246149Ssjg rm -f $*.o 159246149Ssjg 160246149Ssjg# Assembly 161246149Ssjg.s: 162246149Ssjg ${LINK.s} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 163246149Ssjg.s.o: 164246149Ssjg ${COMPILE.s} ${.IMPSRC} 165246149Ssjg.s.a: 166246149Ssjg ${COMPILE.s} ${.IMPSRC} 167246149Ssjg ${AR} ${ARFLAGS} $@ $*.o 168246149Ssjg rm -f $*.o 169246149Ssjg.S: 170246149Ssjg ${LINK.S} -o ${.TARGET} ${.IMPSRC} ${LDLIBS} 171246149Ssjg.S.o: 172246149Ssjg ${COMPILE.S} ${.IMPSRC} 173246149Ssjg.S.a: 174246149Ssjg ${COMPILE.S} ${.IMPSRC} 175246149Ssjg ${AR} ${ARFLAGS} $@ $*.o 176246149Ssjg rm -f $*.o 177246149Ssjg 178246149Ssjg# Lex 179246149Ssjg.l: 180246149Ssjg ${LEX.l} ${.IMPSRC} 181246149Ssjg ${LINK.c} -o ${.TARGET} lex.yy.c ${LDLIBS} -ll 182246149Ssjg rm -f lex.yy.c 183246149Ssjg.l.c: 184246149Ssjg ${LEX.l} ${.IMPSRC} 185246149Ssjg mv lex.yy.c ${.TARGET} 186246149Ssjg.l.o: 187246149Ssjg ${LEX.l} ${.IMPSRC} 188246149Ssjg ${COMPILE.c} -o ${.TARGET} lex.yy.c 189246149Ssjg rm -f lex.yy.c 190246149Ssjg 191246149Ssjg# Yacc 192246149Ssjg.y: 193246149Ssjg ${YACC.y} ${.IMPSRC} 194246149Ssjg ${LINK.c} -o ${.TARGET} y.tab.c ${LDLIBS} 195246149Ssjg rm -f y.tab.c 196246149Ssjg.y.c: 197246149Ssjg ${YACC.y} ${.IMPSRC} 198246149Ssjg mv y.tab.c ${.TARGET} 199246149Ssjg.y.o: 200246149Ssjg ${YACC.y} ${.IMPSRC} 201246149Ssjg ${COMPILE.c} -o ${.TARGET} y.tab.c 202246149Ssjg rm -f y.tab.c 203246149Ssjg 204246149Ssjg# Shell 205246149Ssjg.sh: 206246149Ssjg rm -f ${.TARGET} 207246149Ssjg cp ${.IMPSRC} ${.TARGET} 208246149Ssjg 209