Makefile revision 1.83
11.83Srillig# $NetBSD: Makefile,v 1.83 2020/08/08 13:50:23 rillig Exp $ 21.8Schristos# @(#)Makefile 5.2 (Berkeley) 12/28/90 31.1Scgd 41.1ScgdPROG= make 51.82SrilligSRCS= arch.c 61.82SrilligSRCS+= buf.c 71.82SrilligSRCS+= compat.c 81.82SrilligSRCS+= cond.c 91.82SrilligSRCS+= dir.c 101.83SrilligSRCS+= enum.c 111.82SrilligSRCS+= for.c 121.82SrilligSRCS+= hash.c 131.82SrilligSRCS+= job.c 141.82SrilligSRCS+= lst.c 151.82SrilligSRCS+= main.c 161.82SrilligSRCS+= make.c 171.82SrilligSRCS+= make_malloc.c 181.82SrilligSRCS+= metachar.c 191.82SrilligSRCS+= parse.c 201.82SrilligSRCS+= str.c 211.82SrilligSRCS+= strlist.c 221.82SrilligSRCS+= suff.c 231.82SrilligSRCS+= targ.c 241.82SrilligSRCS+= trace.c 251.82SrilligSRCS+= var.c 261.82SrilligSRCS+= util.c 271.82SrilligHDRS= buf.h 281.82SrilligHDRS+= config.h 291.82SrilligHDRS+= dir.h 301.83SrilligHDRS+= enum.h 311.82SrilligHDRS+= hash.h 321.82SrilligHDRS+= job.h 331.82SrilligHDRS+= lst.h 341.82SrilligHDRS+= make.h 351.82SrilligHDRS+= make_malloc.h 361.82SrilligHDRS+= meta.h 371.82SrilligHDRS+= metachar.h 381.82SrilligHDRS+= nonints.h 391.82SrilligHDRS+= pathnames.h 401.82SrilligHDRS+= sprite.h 411.82SrilligHDRS+= strlist.h 421.82SrilligHDRS+= trace.h 431.40Sdsl 441.80Srillig# Whether to generate a coverage report after running the tests. 451.73SrilligUSE_COVERAGE?= no # works only with gcc; clang9 fails to link 461.73Srillig.if ${USE_COVERAGE} == "yes" 471.77SrilligCOPTS+= --coverage -O0 -ggdb 481.77SrilligLDADD+= --coverage 491.73SrilligCLEANFILES+= ${SRCS:.c=.gcda} ${SRCS:.c=.gcno} ${SRCS:=.gcov} 501.73Srillig.endif 511.73Srillig 521.80Srillig# Whether to compile using the Undefined Behavior Sanitizer (GCC, Clang). 531.77SrilligUSE_UBSAN?= no 541.77Srillig.if ${USE_UBSAN} == "yes" 551.77SrilligCOPTS+= -fsanitize=undefined 561.77SrilligLDADD+= -fsanitize=undefined 571.77Srillig.endif 581.77Srillig 591.71SrilligUSE_META?= yes 601.51Ssjg.if ${USE_META:tl} != "no" 611.68Sriastrad 621.71SrilligSRCS+= meta.c 631.71SrilligCPPFLAGS+= -DUSE_META 641.68Sriastrad 651.71SrilligUSE_FILEMON?= ktrace 661.72Srillig. if ${USE_FILEMON:tl} != "no" 671.68Sriastrad 681.67Sriastrad.PATH: ${.CURDIR}/filemon 691.71SrilligSRCS+= filemon_${USE_FILEMON}.c 701.71SrilligCPPFLAGS+= -DUSE_FILEMON 711.71SrilligCPPFLAGS+= -DUSE_FILEMON_${USE_FILEMON:tu} 721.68Sriastrad 731.72Srillig. if ${USE_FILEMON} == "dev" 741.71SrilligFILEMON_H?= /usr/include/dev/filemon/filemon.h 751.72Srillig. if exists(${FILEMON_H}) && ${FILEMON_H:T} == "filemon.h" 761.71SrilligCOPTS.filemon_dev.c+= \ 771.71Srillig -DHAVE_FILEMON_H -I${FILEMON_H:H} 781.72Srillig. endif 791.72Srillig. endif 801.72Srillig. endif 811.65Smaxv.endif 821.51Ssjg 831.60SchristosSUBDIR.roff+= PSD.doc 841.29Ssjg.if make(obj) || make(clean) 851.71SrilligSUBDIR+= unit-tests 861.29Ssjg.endif 871.1Scgd 881.82Srillig${SRCS:M*.c:.c=.o}: ${HDRS} 891.75Srillig 901.1Scgd.include <bsd.prog.mk> 911.16Smycroft.include <bsd.subdir.mk> 921.24Ssjg 931.71SrilligCPPFLAGS+= -DMAKE_NATIVE 941.71SrilligCOPTS.var.c+= -Wno-cast-qual 951.71SrilligCOPTS.job.c+= -Wno-format-nonliteral 961.71SrilligCOPTS.parse.c+= -Wno-format-nonliteral 971.71SrilligCOPTS.var.c+= -Wno-format-nonliteral 981.29Ssjg 991.72Srillig.if defined(TOOLDIR) 1001.71Srillig# This is a native NetBSD build, use libutil rather than the local emalloc etc. 1011.71SrilligCPPFLAGS+= -DUSE_EMALLOC 1021.71SrilligLDADD+= -lutil 1031.71SrilligDPADD+= ${LIBUTIL} 1041.38Schristos.endif 1051.37Schristos 1061.63SmrgCOPTS.arch.c+= ${GCC_NO_FORMAT_TRUNCATION} 1071.63SmrgCOPTS.dir.c+= ${GCC_NO_FORMAT_TRUNCATION} 1081.63SmrgCOPTS.main.c+= ${GCC_NO_FORMAT_TRUNCATION} ${GCC_NO_STRINGOP_TRUNCATION} 1091.63SmrgCOPTS.meta.c+= ${GCC_NO_FORMAT_TRUNCATION} 1101.63SmrgCOPTS.parse.c+= ${GCC_NO_FORMAT_TRUNCATION} 1111.61Smrg 1121.79SrilligCOPTS+= -Wdeclaration-after-statement 1131.79Srillig 1141.29Ssjg# A simple unit-test driver to help catch regressions 1151.73Srilligtest: .MAKE 1161.73Srillig cd ${.CURDIR}/unit-tests \ 1171.73Srillig && MAKEFLAGS= ${.MAKE} -r -m / TEST_MAKE=${TEST_MAKE:U${.OBJDIR}/${PROG:T}} ${.TARGET} 1181.73Srillig.if ${USE_COVERAGE} == yes 1191.73Srillig gcov ${SRCS} 1201.78Srillig sed -i 's,^\([^:]*\): *[0-9]*:,\1: ,' *.gcov 1211.73Srillig.endif 1221.73Srillig 1231.73Srilligaccept: .MAKE 1241.73Srillig cd ${.CURDIR}/unit-tests && ${.MAKE} ${.TARGET} 1251.76Srillig 1261.76Srilligretest: 1271.76Srillig ${.MAKE} -C ${.CURDIR}/unit-tests cleandir 1281.76Srillig.if ${USE_COVERAGE} == yes 1291.76Srillig rm -f *.gcov *.gcda 1301.76Srillig.endif 1311.76Srillig ${.MAKE} test 132