Makefile revision 1.105
11.105Srillig# $NetBSD: Makefile,v 1.105 2020/10/23 15:44:38 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+= strlist.h 411.82SrilligHDRS+= trace.h 421.40Sdsl 431.80Srillig# Whether to generate a coverage report after running the tests. 441.73SrilligUSE_COVERAGE?= no # works only with gcc; clang9 fails to link 451.73Srillig.if ${USE_COVERAGE} == "yes" 461.87SrilligGCOV?= gcov 471.90SrilligCOPTS+= --coverage -O0 -ggdb 481.77SrilligLDADD+= --coverage 491.73Srillig.endif 501.85SrilligCLEANFILES+= *.gcda *.gcno *.gcov 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.87Srillig# Whether to compile with GCC 10 from pkgsrc, during development. 601.87SrilligUSE_GCC10?= no 611.87Srillig.if ${USE_GCC10} == "yes" 621.87Srillig# CC is set further down in this file 631.87SrilligCOPTS+= -Wno-attributes # for abs and labs 641.87SrilligCOPTS.arch.c+= -Wno-error=format-truncation 651.87SrilligCOPTS.dir.c+= -Wno-error=format-truncation 661.87SrilligCOPTS.main.c+= -Wno-error=format-truncation 671.87SrilligCOPTS.meta.c+= -Wno-error=format-truncation 681.87Srillig.endif 691.87Srillig 701.84Srillig# Whether to compile with GCC 9 from pkgsrc, during development. 711.84SrilligUSE_GCC9?= no 721.84Srillig.if ${USE_GCC9} == "yes" 731.84Srillig# CC is set further down in this file 741.84SrilligCOPTS+= -Wno-attributes # for abs and labs 751.84SrilligCOPTS.arch.c+= -Wno-error=format-truncation 761.84SrilligCOPTS.dir.c+= -Wno-error=format-truncation 771.84SrilligCOPTS.main.c+= -Wno-error=format-truncation 781.84SrilligCOPTS.meta.c+= -Wno-error=format-truncation 791.84Srillig.endif 801.84Srillig 811.87Srillig# Whether to compile with GCC 8 from pkgsrc, during development. 821.87SrilligUSE_GCC8?= no 831.87Srillig.if ${USE_GCC8} == "yes" 841.87Srillig# CC is set further down in this file 851.87SrilligCOPTS+= -Wno-attributes # for abs and labs 861.87SrilligCOPTS.arch.c+= -Wno-error=format-truncation 871.87SrilligCOPTS.dir.c+= -Wno-error=format-truncation 881.87SrilligCOPTS.main.c+= -Wno-error=format-truncation 891.87SrilligCOPTS.meta.c+= -Wno-error=format-truncation 901.87Srillig.endif 911.87Srillig 921.71SrilligUSE_META?= yes 931.51Ssjg.if ${USE_META:tl} != "no" 941.68Sriastrad 951.71SrilligSRCS+= meta.c 961.71SrilligCPPFLAGS+= -DUSE_META 971.68Sriastrad 981.71SrilligUSE_FILEMON?= ktrace 991.72Srillig. if ${USE_FILEMON:tl} != "no" 1001.68Sriastrad 1011.67Sriastrad.PATH: ${.CURDIR}/filemon 1021.71SrilligSRCS+= filemon_${USE_FILEMON}.c 1031.71SrilligCPPFLAGS+= -DUSE_FILEMON 1041.71SrilligCPPFLAGS+= -DUSE_FILEMON_${USE_FILEMON:tu} 1051.68Sriastrad 1061.72Srillig. if ${USE_FILEMON} == "dev" 1071.71SrilligFILEMON_H?= /usr/include/dev/filemon/filemon.h 1081.72Srillig. if exists(${FILEMON_H}) && ${FILEMON_H:T} == "filemon.h" 1091.71SrilligCOPTS.filemon_dev.c+= \ 1101.71Srillig -DHAVE_FILEMON_H -I${FILEMON_H:H} 1111.72Srillig. endif 1121.72Srillig. endif 1131.72Srillig. endif 1141.65Smaxv.endif 1151.51Ssjg 1161.60SchristosSUBDIR.roff+= PSD.doc 1171.29Ssjg.if make(obj) || make(clean) 1181.71SrilligSUBDIR+= unit-tests 1191.29Ssjg.endif 1201.1Scgd 1211.82Srillig${SRCS:M*.c:.c=.o}: ${HDRS} 1221.99SrilligCLEANFILES+= *.o 1231.75Srillig 1241.1Scgd.include <bsd.prog.mk> 1251.16Smycroft.include <bsd.subdir.mk> 1261.24Ssjg 1271.71SrilligCPPFLAGS+= -DMAKE_NATIVE 1281.71SrilligCOPTS.job.c+= -Wno-format-nonliteral 1291.71SrilligCOPTS.parse.c+= -Wno-format-nonliteral 1301.71SrilligCOPTS.var.c+= -Wno-format-nonliteral 1311.29Ssjg 1321.87Srillig.if ${USE_GCC10} == "yes" 1331.97SrilligGCC10BASE?= /usr/pkg/gcc10 1341.87SrilligCC= ${GCC10BASE}/bin/gcc 1351.87SrilligGCOV= ${GCC10BASE}/bin/gcov 1361.87Srillig.endif 1371.87Srillig 1381.84Srillig.if ${USE_GCC9} == "yes" 1391.87SrilligGCC9BASE?= /usr/pkg/gcc9 1401.87SrilligCC= ${GCC9BASE}/bin/gcc 1411.87SrilligGCOV= ${GCC9BASE}/bin/gcov 1421.87Srillig.endif 1431.87Srillig 1441.87Srillig.if ${USE_GCC8} == "yes" 1451.87SrilligGCC8BASE?= /usr/pkg/gcc8 1461.87SrilligCC= ${GCC8BASE}/bin/gcc 1471.87SrilligGCOV= ${GCC8BASE}/bin/gcov 1481.84Srillig.endif 1491.84Srillig 1501.72Srillig.if defined(TOOLDIR) 1511.71Srillig# This is a native NetBSD build, use libutil rather than the local emalloc etc. 1521.71SrilligCPPFLAGS+= -DUSE_EMALLOC 1531.71SrilligLDADD+= -lutil 1541.71SrilligDPADD+= ${LIBUTIL} 1551.38Schristos.endif 1561.37Schristos 1571.63SmrgCOPTS.arch.c+= ${GCC_NO_FORMAT_TRUNCATION} 1581.63SmrgCOPTS.dir.c+= ${GCC_NO_FORMAT_TRUNCATION} 1591.63SmrgCOPTS.main.c+= ${GCC_NO_FORMAT_TRUNCATION} ${GCC_NO_STRINGOP_TRUNCATION} 1601.63SmrgCOPTS.meta.c+= ${GCC_NO_FORMAT_TRUNCATION} 1611.61Smrg 1621.79SrilligCOPTS+= -Wdeclaration-after-statement 1631.79Srillig 1641.93Srillig# For -DCLEANUP and similar feature toggles. 1651.93SrilligCPPFLAGS+= ${USER_CPPFLAGS} 1661.93Srillig# For overriding -std=gnu99 or similar options. 1671.93SrilligCFLAGS+= ${USER_CFLAGS} 1681.93Srillig 1691.29Ssjg# A simple unit-test driver to help catch regressions 1701.91SsjgTEST_MAKE ?= ${.OBJDIR}/${PROG:T} 1711.73Srilligtest: .MAKE 1721.73Srillig cd ${.CURDIR}/unit-tests \ 1731.92Srillig && MAKEFLAGS= ${TEST_MAKE} -r -m / TEST_MAKE=${TEST_MAKE} ${TESTS:DTESTS=${TESTS:Q}} ${.TARGET} 1741.73Srillig.if ${USE_COVERAGE} == yes 1751.87Srillig ${GCOV} ${GCOV_OPTS} ${SRCS} 1761.78Srillig sed -i 's,^\([^:]*\): *[0-9]*:,\1: ,' *.gcov 1771.73Srillig.endif 1781.73Srillig 1791.89Srilligaccept sync-mi: .MAKE 1801.96Srillig cd ${.CURDIR}/unit-tests && ${.MAKE} ${.TARGET} 1811.76Srillig 1821.76Srilligretest: 1831.76Srillig ${.MAKE} -C ${.CURDIR}/unit-tests cleandir 1841.76Srillig.if ${USE_COVERAGE} == yes 1851.76Srillig rm -f *.gcov *.gcda 1861.76Srillig.endif 1871.76Srillig ${.MAKE} test 1881.102Srillig 1891.102Srillig# Just out of curiosity, during development. 1901.102Srillig.SUFFIXES: .cpre .casm 1911.102Srillig.c.cpre: 1921.105Srillig ${COMPILE.c:S,^-c$,-E,} ${COPTS.${.IMPSRC}} ${.IMPSRC} -o ${.TARGET} 1931.102Srillig.c.casm: 1941.105Srillig ${COMPILE.c:S,^-c$,-S,} ${COPTS.${.IMPSRC}} ${.IMPSRC} -o ${.TARGET} 195