Makefile revision 1.77
11.77Srillig# $NetBSD: Makefile,v 1.77 2020/07/31 07:29:21 rillig Exp $ 21.8Schristos# @(#)Makefile 5.2 (Berkeley) 12/28/90 31.1Scgd 41.1ScgdPROG= make 51.74SrilligSRCS= arch.c buf.c compat.c cond.c dir.c for.c hash.c job.c lst.c main.c 61.70SrilligSRCS+= make.c make_malloc.c metachar.c parse.c 71.72SrilligSRCS+= str.c strlist.c suff.c targ.c trace.c var.c util.c 81.40Sdsl 91.73SrilligUSE_COVERAGE?= no # works only with gcc; clang9 fails to link 101.73Srillig.if ${USE_COVERAGE} == "yes" 111.77SrilligCOPTS+= --coverage -O0 -ggdb 121.77SrilligLDADD+= --coverage 131.73SrilligCLEANFILES+= ${SRCS:.c=.gcda} ${SRCS:.c=.gcno} ${SRCS:=.gcov} 141.73Srillig.endif 151.73Srillig 161.77SrilligUSE_UBSAN?= no 171.77Srillig.if ${USE_UBSAN} == "yes" 181.77SrilligCOPTS+= -fsanitize=undefined 191.77SrilligLDADD+= -fsanitize=undefined 201.77Srillig.endif 211.77Srillig 221.71SrilligUSE_META?= yes 231.51Ssjg.if ${USE_META:tl} != "no" 241.68Sriastrad 251.71SrilligSRCS+= meta.c 261.71SrilligCPPFLAGS+= -DUSE_META 271.68Sriastrad 281.71SrilligUSE_FILEMON?= ktrace 291.72Srillig. if ${USE_FILEMON:tl} != "no" 301.68Sriastrad 311.67Sriastrad.PATH: ${.CURDIR}/filemon 321.71SrilligSRCS+= filemon_${USE_FILEMON}.c 331.71SrilligCPPFLAGS+= -DUSE_FILEMON 341.71SrilligCPPFLAGS+= -DUSE_FILEMON_${USE_FILEMON:tu} 351.68Sriastrad 361.72Srillig. if ${USE_FILEMON} == "dev" 371.71SrilligFILEMON_H?= /usr/include/dev/filemon/filemon.h 381.72Srillig. if exists(${FILEMON_H}) && ${FILEMON_H:T} == "filemon.h" 391.71SrilligCOPTS.filemon_dev.c+= \ 401.71Srillig -DHAVE_FILEMON_H -I${FILEMON_H:H} 411.72Srillig. endif 421.72Srillig. endif 431.72Srillig. endif 441.65Smaxv.endif 451.51Ssjg 461.60SchristosSUBDIR.roff+= PSD.doc 471.29Ssjg.if make(obj) || make(clean) 481.71SrilligSUBDIR+= unit-tests 491.29Ssjg.endif 501.1Scgd 511.75Srillig${SRCS:M*.c:.c=.o}: buf.h config.h dir.h hash.h job.h lst.h make.h make_malloc.h 521.75Srillig${SRCS:M*.c:.c=.o}: meta.h metachar.h nonints.h pathnames.h sprite.h strlist.h trace.h 531.75Srillig 541.1Scgd.include <bsd.prog.mk> 551.16Smycroft.include <bsd.subdir.mk> 561.24Ssjg 571.71SrilligCPPFLAGS+= -DMAKE_NATIVE 581.71SrilligCOPTS.var.c+= -Wno-cast-qual 591.71SrilligCOPTS.job.c+= -Wno-format-nonliteral 601.71SrilligCOPTS.parse.c+= -Wno-format-nonliteral 611.71SrilligCOPTS.var.c+= -Wno-format-nonliteral 621.29Ssjg 631.72Srillig.if defined(TOOLDIR) 641.71Srillig# This is a native NetBSD build, use libutil rather than the local emalloc etc. 651.71SrilligCPPFLAGS+= -DUSE_EMALLOC 661.71SrilligLDADD+= -lutil 671.71SrilligDPADD+= ${LIBUTIL} 681.38Schristos.endif 691.37Schristos 701.63SmrgCOPTS.arch.c+= ${GCC_NO_FORMAT_TRUNCATION} 711.63SmrgCOPTS.dir.c+= ${GCC_NO_FORMAT_TRUNCATION} 721.63SmrgCOPTS.main.c+= ${GCC_NO_FORMAT_TRUNCATION} ${GCC_NO_STRINGOP_TRUNCATION} 731.63SmrgCOPTS.meta.c+= ${GCC_NO_FORMAT_TRUNCATION} 741.63SmrgCOPTS.parse.c+= ${GCC_NO_FORMAT_TRUNCATION} 751.61Smrg 761.29Ssjg# A simple unit-test driver to help catch regressions 771.73Srilligtest: .MAKE 781.73Srillig cd ${.CURDIR}/unit-tests \ 791.73Srillig && MAKEFLAGS= ${.MAKE} -r -m / TEST_MAKE=${TEST_MAKE:U${.OBJDIR}/${PROG:T}} ${.TARGET} 801.73Srillig.if ${USE_COVERAGE} == yes 811.73Srillig gcov ${SRCS} 821.73Srillig.endif 831.73Srillig 841.73Srilligaccept: .MAKE 851.73Srillig cd ${.CURDIR}/unit-tests && ${.MAKE} ${.TARGET} 861.76Srillig 871.76Srilligretest: 881.76Srillig ${.MAKE} -C ${.CURDIR}/unit-tests cleandir 891.76Srillig.if ${USE_COVERAGE} == yes 901.76Srillig rm -f *.gcov *.gcda 911.76Srillig.endif 921.76Srillig ${.MAKE} test 93