Makefile revision 209867
1# $FreeBSD: head/gnu/usr.bin/cc/cc_tools/Makefile 209867 2010-07-10 02:29:22Z nwhitehorn $ 2 3.include <bsd.own.mk> 4 5CFLAGS+= -I. 6 7.include "../Makefile.inc" 8 9CFLAGS+= -g 10CFLAGS+= -DGENERATOR_FILE -DHAVE_CONFIG_H 11 12# Override LIBIBERTY set by Makefile.inc, We use our own for 13# build tools. 14LIBIBERTY= libiberty.a 15 16.PATH: ${GCCDIR} ${GCCLIB}/libiberty 17 18#----------------------------------------------------------------------- 19# Determine content of variables used by the target/host config files 20 21# 22# The list of headers to go into tm.h 23# 24TARGET_INC+= options.h 25.if ${TARGET_ARCH} == "amd64" 26TARGET_INC+= i386/biarch64.h 27.endif 28.if ${TARGET_ARCH} != "arm" 29TARGET_INC+= ${GCC_CPU}/${GCC_CPU}.h 30.endif 31.if ${TARGET_ARCH} == "i386" || ${TARGET_ARCH} == "amd64" 32TARGET_INC+= ${GCC_CPU}/unix.h 33TARGET_INC+= ${GCC_CPU}/att.h 34.endif 35TARGET_INC+= dbxelf.h 36TARGET_INC+= elfos-undef.h 37TARGET_INC+= elfos.h 38TARGET_INC+= freebsd-native.h 39TARGET_INC+= freebsd-spec.h 40TARGET_INC+= freebsd.h 41.if ${TARGET_ARCH} != "i386" && ${TARGET_ARCH} != "amd64" 42. if exists(${GCCDIR}/config/${GCC_CPU}/sysv4.h) 43TARGET_INC+= ${GCC_CPU}/sysv4.h 44. endif 45.endif 46.if ${TARGET_ARCH} == "amd64" 47TARGET_INC+= ${GCC_CPU}/x86-64.h 48.endif 49.if ${TARGET_ARCH} == "arm" || ${TARGET_ARCH} == "mips" 50TARGET_INC+= ${GCC_CPU}/elf.h 51.endif 52.if ${TARGET_ARCH} == "arm" 53TARGET_INC+= ${GCC_CPU}/aout.h 54.endif 55.if ${TARGET_ARCH} == "powerpc64" 56TARGET_INC+= ${GCC_CPU}/biarch64.h 57TARGET_INC+= ${GCC_CPU}/default64.h 58.endif 59TARGET_INC+= ${GCC_CPU}/freebsd.h 60.if ${TARGET_ARCH} == "amd64" 61TARGET_INC+= ${GCC_CPU}/freebsd64.h 62.endif 63.if ${TARGET_ARCH} == "arm" 64TARGET_INC+= ${GCC_CPU}/arm.h 65.endif 66TARGET_INC+= defaults.h 67 68.for H in ${TARGET_INC} 69.for D in ${GCCDIR}/config ${GCCDIR} ${.CURDIR} 70.if exists($D/$H) 71TARGET_INC_FILES+= $D/$H 72.endif 73.endfor 74.endfor 75 76# 77# gtyp includes. 78# 79srcdir= ${GCCDIR} 80CPPLIB_H= ${GCCLIB}/libcpp/include/line-map.h \ 81 ${GCCLIB}/libcpp/include/cpplib.h 82SYMTAB_H= ${GCCLIB}/libcpp/include/symtab.h 83CPP_ID_DATA_H= ${CPPLIB_H} ${GCCLIB}/libcpp/include/cpp-id-data.h 84HASHTAB_H= ${GCCLIB}/include/hashtab.h 85SPLAY_TREE_H= ${GCCLIB}/include/splay-tree.h 86out_file= ${srcdir}/config/${GCC_CPU}/${GCC_CPU}.c 87tm_file_list= ${TARGET_INC_FILES} 88host_xm_file_list= ${.CURDIR}/auto-host.h ${GCCLIB}/include/ansidecl.h 89GTFILES_SRCDIR= ${srcdir} 90 91# Copied unchanged from gcc/Makefile.in 92GTFILES = $(srcdir)/input.h $(srcdir)/coretypes.h \ 93 $(CPP_ID_DATA_H) $(host_xm_file_list) \ 94 $(tm_file_list) $(HASHTAB_H) $(SPLAY_TREE_H) $(srcdir)/bitmap.h \ 95 $(srcdir)/coverage.c $(srcdir)/rtl.h \ 96 $(srcdir)/optabs.h $(srcdir)/tree.h $(srcdir)/function.h $(srcdir)/libfuncs.h $(SYMTAB_H) \ 97 $(srcdir)/real.h $(srcdir)/varray.h $(srcdir)/insn-addr.h $(srcdir)/hwint.h \ 98 $(srcdir)/ipa-reference.h $(srcdir)/output.h \ 99 $(srcdir)/cselib.h $(srcdir)/basic-block.h $(srcdir)/cgraph.h \ 100 $(srcdir)/c-common.h $(srcdir)/c-tree.h $(srcdir)/reload.h \ 101 $(srcdir)/alias.c $(srcdir)/bitmap.c $(srcdir)/cselib.c $(srcdir)/cgraph.c \ 102 $(srcdir)/ipa-prop.c $(srcdir)/ipa-cp.c $(srcdir)/ipa-inline.c \ 103 $(srcdir)/dbxout.c $(srcdir)/dwarf2out.c $(srcdir)/dwarf2asm.c \ 104 $(srcdir)/dojump.c $(srcdir)/tree-profile.c \ 105 $(srcdir)/emit-rtl.c $(srcdir)/except.c $(srcdir)/explow.c $(srcdir)/expr.c \ 106 $(srcdir)/function.c $(srcdir)/except.h \ 107 $(srcdir)/gcse.c $(srcdir)/integrate.c $(srcdir)/lists.c $(srcdir)/optabs.c \ 108 $(srcdir)/profile.c $(srcdir)/regclass.c \ 109 $(srcdir)/reg-stack.c $(srcdir)/cfglayout.c \ 110 $(srcdir)/sdbout.c $(srcdir)/stor-layout.c \ 111 $(srcdir)/stringpool.c $(srcdir)/tree.c $(srcdir)/varasm.c \ 112 $(srcdir)/tree-mudflap.c $(srcdir)/tree-flow.h \ 113 $(srcdir)/c-objc-common.c $(srcdir)/c-common.c $(srcdir)/c-parser.c \ 114 $(srcdir)/tree-ssanames.c $(srcdir)/tree-eh.c $(srcdir)/tree-ssa-address.c \ 115 $(srcdir)/tree-phinodes.c $(srcdir)/tree-cfg.c \ 116 $(srcdir)/tree-dfa.c $(srcdir)/tree-ssa-propagate.c \ 117 $(srcdir)/tree-iterator.c $(srcdir)/gimplify.c \ 118 $(srcdir)/tree-chrec.h $(srcdir)/tree-vect-generic.c \ 119 $(srcdir)/tree-ssa-operands.h $(srcdir)/tree-ssa-operands.c \ 120 $(srcdir)/tree-profile.c $(srcdir)/tree-nested.c \ 121 $(srcdir)/ipa-reference.c $(srcdir)/tree-ssa-structalias.h \ 122 $(srcdir)/tree-ssa-structalias.c \ 123 $(srcdir)/c-pragma.h $(srcdir)/omp-low.c \ 124 $(srcdir)/targhooks.c $(srcdir)/cgraphunit.c $(out_file) \ 125 126# The list of frontend directories to look into 127GTFILES_LANG_DIR_NAMES= 128 129.if ${MK_CXX} != "no" 130GTFILES_LANG_DIR_NAMES+= cp 131.endif 132 133.if ${MK_OBJC} != "no" 134GTFILES_LANG_DIR_NAMES+= objc 135.endif 136 137# The list of language specific files for gengtype 138.for L in ${GTFILES_LANG_DIR_NAMES} c 139.if exists(${GCCDIR}/$L-config-lang.in) 140# Source the language config file 141L_GTFILES!= sh -c '. ${GCCDIR}/$L-config-lang.in; echo $$gtfiles' 142.else 143L_GTFILES!= sh -c '. ${GCCDIR}/$L/config-lang.in; echo $$gtfiles' 144.endif 145.for F in ${L_GTFILES} 146GTFILES_FILES+= $F 147GTFILES_LANGS+= $L 148.endfor 149.endfor 150GTFILES+= ${GTFILES_FILES} 151 152# 153# Tree definition files. 154# 155TREE_DEF_FILES= 156 157.if ${MK_CXX} != "no" 158TREE_DEF_FILES+= cp/cp-tree.def 159.endif 160 161.if ${MK_OBJC} != "no" 162TREE_DEF_FILES+= objc/objc-tree.def 163.endif 164 165# 166# Option files. 167# 168OPT_FILES= c.opt common.opt 169 170.if exists(${GCCDIR}/config/${GCC_CPU}/${GCC_CPU}.opt) 171OPT_FILES+= ${GCCDIR}/config/${GCC_CPU}/${GCC_CPU}.opt 172.endif 173 174.if exists(${.CURDIR}/${GCC_CPU}-freebsd.opt) 175OPT_FILES+= ${.CURDIR}/${GCC_CPU}-freebsd.opt 176.endif 177 178.if ${TARGET_ARCH} == "powerpc" || ${TARGET_ARCH} == "powerpc64" 179OPT_FILES+= ${GCCDIR}/config/${GCC_CPU}/sysv4.opt 180.endif 181 182.if ${TARGET_ARCH} == "sparc64" 183OPT_FILES+= ${GCCDIR}/config/${GCC_CPU}/long-double-switch.opt 184.endif 185 186.if exists(${.CURDIR}/freebsd.opt) 187OPT_FILES+= ${.CURDIR}/freebsd.opt 188.endif 189 190#----------------------------------------------------------------------- 191# Build rules for header files and generator tools 192 193# Host config 194config.h: 195 TARGET_CPU_DEFAULT="${TARGET_CPU_DEFAULT}" \ 196 HEADERS="auto-host.h ansidecl.h" \ 197 DEFINES="" \ 198 /bin/sh ${GCCDIR}/mkconfig.sh ${.TARGET} 199 200GENSRCS+= config.h 201CLEANFILES+= cs-config.h 202 203# Build config 204bconfig.h: 205 TARGET_CPU_DEFAULT="${TARGET_CPU_DEFAULT}" \ 206 HEADERS="auto-host.h ansidecl.h" \ 207 DEFINES="" \ 208 /bin/sh ${GCCDIR}/mkconfig.sh ${.TARGET} 209.if exists(${GCCDIR}/config/${GCC_CPU}/${GCC_CPU}-modes.def) 210 echo '#define EXTRA_MODES_FILE "${GCC_CPU}/${GCC_CPU}-modes.def"' >> ${.TARGET} 211.endif 212 213GENSRCS+= bconfig.h 214CLEANFILES+= cs-bconfig.h 215 216# tconfig.h 217tconfig.h: 218 TARGET_CPU_DEFAULT="${TARGET_CPU_DEFAULT}" \ 219 HEADERS="auto-host.h ansidecl.h" \ 220 DEFINES="USED_FOR_TARGET" \ 221 /bin/sh ${GCCDIR}/mkconfig.sh ${.TARGET} 222 223GENSRCS+= tconfig.h 224CLEANFILES+= cs-tconfig.h 225# Options 226optionlist: ${OPT_FILES} 227 LC_ALL=C awk -f ${GCCDIR}/opt-gather.awk ${.ALLSRC} > ${.TARGET} 228 229options.h: optionlist 230 LC_ALL=C awk -f ${GCCDIR}/opt-functions.awk \ 231 -f ${GCCDIR}/opth-gen.awk \ 232 < ${.ALLSRC} > ${.TARGET} 233 234options.c: optionlist 235 LC_ALL=C awk -f ${GCCDIR}/opt-functions.awk \ 236 -f ${GCCDIR}/optc-gen.awk \ 237 -v header_name="config.h system.h coretypes.h tm.h" \ 238 < ${.ALLSRC} > ${.TARGET} 239GENONLY+= optionlist options.h options.c 240 241# Target machine config 242tm.h: 243 TARGET_CPU_DEFAULT="${TARGET_CPU_DEFAULT}" \ 244 HEADERS="${TARGET_INC}" \ 245 DEFINES="" \ 246 /bin/sh ${GCCDIR}/mkconfig.sh ${.TARGET} 247.if exists(${GCCDIR}/config/${GCC_CPU}/${GCC_CPU}-modes.def) 248 echo '#define EXTRA_MODES_FILE "${GCC_CPU}/${GCC_CPU}-modes.def"' >> ${.TARGET} 249.endif 250 251GENSRCS+= tm.h 252CLEANFILES+= cs-tm.h 253 254# Target machine protos/preds. 255tm_p.h: 256 TARGET_CPU_DEFAULT="${TARGET_CPU_DEFAULT}" \ 257 HEADERS="${GCC_CPU}/${GCC_CPU}-protos.h tm-preds.h" \ 258 DEFINES="" \ 259 /bin/sh ${GCCDIR}/mkconfig.sh tm_p.h 260 261GENSRCS+= tm_p.h 262CLEANFILES+= cs-tm_p.h 263 264# gencheck 265gencheck.h: ${TREE_DEF_FILES} 266.for F in ${TREE_DEF_FILES} 267 echo "#include \"$F\"" >> ${.TARGET} 268.endfor 269 touch ${.TARGET} 270 271GENSRCS+= gencheck.h 272 273 274# Source header for gtyp generator. 275gtyp-gen.h: ${GTFILES} 276 echo "/* This file is machine generated. Do not edit. */" > ${.TARGET} 277 echo "static const char * const srcdir = " >> ${.TARGET} 278 echo "\"$(GTFILES_SRCDIR)\";" >> ${.TARGET} 279 echo "static const char * const lang_files[] = {" >> ${.TARGET} 280.for F in ${GTFILES_FILES} 281 echo "\"$F\", " >> ${.TARGET} 282.endfor 283 echo "NULL};" >> ${.TARGET} 284 echo "static const char * const langs_for_lang_files[] = {">> ${.TARGET} 285.for F in ${GTFILES_LANGS} 286 echo "\"$F\", " >> ${.TARGET} 287.endfor 288 echo "NULL};" >> ${.TARGET} 289 echo "static const char * const all_files[] = {" >> ${.TARGET} 290.for F in ${GTFILES} 291 echo "\"$F\", " >> ${.TARGET} 292.endfor 293 echo "NULL};" >> ${.TARGET} 294 echo "static const char * const lang_dir_names[] = {" >> ${.TARGET} 295.for F in c ${GTFILES_LANG_DIR_NAMES} 296 echo "\"$F\", " >> ${.TARGET} 297.endfor 298 echo "NULL};" >> ${.TARGET} 299 300GENSRCS+= gtyp-gen.h 301 302# Version header for gcov 303gcov-iov.h: 304 echo "#define GCOV_VERSION ((gcov_unsigned_t)0x34303270)" >> ${.TARGET} 305 306GENSRCS+= gcov-iov.h 307 308# Multilib config file 309multilib.h: 310.if ${TARGET_ARCH} == "powerpc64" 311 echo 'static const char *const multilib_raw[] = { \ 312 ". !m64 !m32;", \ 313 "64:../lib m64 !m32;", \ 314 "32:../lib32 !m64 m32;", NULL };' > ${.TARGET} 315 echo 'static const char *multilib_options = "m64/m32";' >> ${.TARGET} 316 echo 'static const char *const multilib_matches_raw[] = { \ 317 "m64 m64;", "m32 m32;", NULL };' >> ${.TARGET} 318.else 319 echo 'static const char *const multilib_raw[] = { \ 320 ". ;", NULL };' > ${.TARGET} 321 echo 'static const char *multilib_options = "";' >> ${.TARGET} 322 echo 'static const char *const multilib_matches_raw[] = { \ 323 NULL };' >> ${.TARGET} 324.endif 325 echo 'static const char *multilib_extra = "";' >> ${.TARGET} 326 echo 'static const char *const multilib_exclusions_raw[] = { \ 327 NULL };' >> ${.TARGET} 328 329GENSRCS+= multilib.h 330 331configargs.h: 332 echo 'static const char configuration_arguments[] =' > ${.TARGET} 333 echo ' "FreeBSD/${TARGET_ARCH} system compiler";' >> ${.TARGET} 334 echo 'static const char thread_model[] = "posix";' >> ${.TARGET} 335 echo 'static const struct {' >> ${.TARGET} 336 echo ' const char *name, *value;' >> ${.TARGET} 337 echo '} configure_default_options[] = {' >> ${.TARGET} 338 echo ' { "NULL", "NULL" } };' >> ${.TARGET} 339 340GENSRCS+= configargs.h 341 342# Language spec files 343specs.h: 344 echo '#include "cp/lang-specs.h"' > ${.TARGET} 345 echo '#include "objc/lang-specs.h"' >> ${.TARGET} 346 347GENSRCS+= specs.h 348 349gstdint.h: 350 echo '#include "sys/types.h"' > ${.TARGET} 351 echo '#include "sys/stdint.h"' >> ${.TARGET} 352 353GENSRCS+= gstdint.h 354 355# Linked headers 356gthr-default.h: ${GCCDIR}/gthr-posix.h 357 ln -sf ${.ALLSRC} ${.TARGET} 358 359GENSRCS+= gthr-default.h 360 361unwind.h: ${GCCDIR}/unwind-generic.h 362 ln -sf ${.ALLSRC} ${.TARGET} 363 364GENSRCS+= unwind.h 365 366# 367# gtype gunk 368# 369gengtype-lex.c: gengtype-lex.l 370 flex -ogengtype-lex.c ${.ALLSRC} 371 372gengtype-yacc.h: gengtype-yacc.y 373 yacc -d -o gengtype-yacc.c ${.ALLSRC} 374 375gengtype-yacc.c: gengtype-yacc.h 376 377gengtype-yacc+%DIKED.c: gengtype-yacc.c 378 cat ${.ALLSRC} > ${.TARGET} 379 sed -e "s/xmalloc/malloc/g" \ 380 -e "s/xrealloc/realloc/g" \ 381 -e "s/malloc/xmalloc/g" \ 382 -e "s/realloc/xrealloc/g" \ 383 ${.ALLSRC} > ${.TARGET} 384 385GENSRCS+= gengtype-lex.c gengtype-yacc.h gengtype-yacc+%DIKED.c 386CLEANFILES+= gengtype-yacc.c 387 388gengtype: gengtype.o gengtype-yacc+%DIKED.o gengtype-lex.o errors.o \ 389 ${LIBIBERTY} 390 ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC} 391 392gtype-desc.h: gengtype 393 ./gengtype 394 touch ${.TARGET} 395 396gtype-desc.c: gtype-desc.h 397 398GENONLY+= gtype-desc.c gtype-desc.h 399CLEANFILES+= gt-*.h gtype-*.h 400 401# 402# Generator tools. 403# 404.for F in check checksum genrtl modes 405gen$F: gen$F.o errors.o ${LIBIBERTY} 406 ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC} 407.endfor 408 409.for F in attr attrtab automata codes conditions config constants emit \ 410 extract flags opinit output peep preds recog 411gen$F: gen$F.o rtl.o read-rtl.o ggc-none.o vec.o min-insn-modes.o \ 412 gensupport.o print-rtl.o errors.o ${LIBIBERTY} 413 ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC} -lm 414.endfor 415 416gencondmd: gencondmd.o 417 ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC} 418 419# 420# Generated .md files. 421# 422insn-conditions.md: gencondmd 423 ./gencondmd > ${.TARGET} 424GENSRCS+= insn-conditions.md 425 426# 427# Generated header files. 428# 429 430.for F in constants 431insn-$F.h: gen$F ${MD_FILE} 432 ./gen$F ${MD_FILE} > ${.TARGET} 433GENSRCS+= insn-$F.h 434.endfor 435 436.for F in attr codes config flags 437insn-$F.h: gen$F ${MD_FILE} insn-conditions.md 438 ./gen$F ${MD_FILE} insn-conditions.md > ${.TARGET} 439GENSRCS+= insn-$F.h 440.endfor 441 442# Header files with irregular names. 443genrtl.h: gengenrtl 444 ./gengenrtl -h > ${.TARGET} 445GENSRCS+= genrtl.h 446 447tm-preds.h: genpreds 448 ./genpreds -h ${MD_FILE} > ${.TARGET} 449GENSRCS+= tm-preds.h 450 451tm-constrs.h: genpreds 452 ./genpreds -c ${MD_FILE} > ${.TARGET} 453GENSRCS+= tm-constrs.h 454 455tree-check.h: gencheck 456 ./gencheck > ${.TARGET} 457GENSRCS+= tree-check.h 458 459insn-modes.h: genmodes 460 ./genmodes -h > ${.TARGET} 461GENSRCS+= insn-modes.h 462 463# 464# Generated source files. 465# 466.for F in attrtab automata emit extract opinit output peep preds recog 467insn-$F.c: gen$F ${MD_FILE} insn-conditions.md 468 ./gen$F ${MD_FILE} insn-conditions.md > ${.TARGET} 469GENONLY+= insn-$F.c 470.endfor 471 472.for F in conditions 473insn-$F.c: gen$F ${MD_FILE} 474 ./gen$F ${MD_FILE} > ${.TARGET} 475GENSRCS+= insn-$F.c 476.endfor 477 478# Source files with irregular names. 479insn-modes.c: genmodes 480 ./genmodes > ${.TARGET} 481GENONLY+= insn-modes.c 482 483min-insn-modes.c: genmodes 484 ./genmodes -m > ${.TARGET} 485GENSRCS+= min-insn-modes.c 486 487genrtl.c: gengenrtl 488 ./gengenrtl > ${.TARGET} 489GENONLY+= genrtl.c 490 491gencondmd.c: genconditions ${MD_FILE} 492 ./genconditions ${MD_FILE} > ${.TARGET} 493GENSRCS+= gencondmd.c 494 495#----------------------------------------------------------------------- 496# Build tools. 497 498GNTOOLS+= genattr genattrtab genautomata gencodes gencheck genchecksum \ 499 genconditions gencondmd genconfig genconstants genemit \ 500 genextract genflags gengenrtl gengtype genmodes genopinit \ 501 genoutput genpeep genpreds genrecog 502 503all: ${GNTOOLS} ${GENSRCS} ${GENONLY} 504beforedepend: ${GENONLY} 505 506# 507#----------------------------------------------------------------------- 508# Build 'pocket' libiberty exclusively for build tools use. 509 510LIBIBERTY_SRCS= choose-temp.c concat.c cp-demangle.c cp-demint.c cplus-dem.c \ 511 dyn-string.c fibheap.c fopen_unlocked.c getpwd.c getruntime.c \ 512 hashtab.c hex.c lbasename.c make-temp-file.c md5.c obstack.c \ 513 partition.c pex-unix.c physmem.c safe-ctype.c splay-tree.c xexit.c \ 514 xmalloc.c xmemdup.c xstrdup.c xstrerror.c 515LIBIBERTY_OBJS= ${LIBIBERTY_SRCS:R:S/$/.o/g} 516 517.for _src in ${LIBIBERTY_SRCS} 518${_src:R:S/$/.o/}: ${_src} 519 ${CC} -c -I ${.CURDIR}/../libiberty ${CFLAGS} -o ${.TARGET} ${.IMPSRC} 520.endfor 521 522${LIBIBERTY}: ${LIBIBERTY_OBJS} 523 @rm -f ${.TARGET} 524 @${AR} cq ${.TARGET} `lorder ${LIBIBERTY_OBJS} | tsort -q` 525 ${RANLIB} ${.TARGET} 526CLEANFILES+= ${LIBIBERTY} ${LIBIBERTY_OBJS} 527 528 529#----------------------------------------------------------------------- 530# Fixups. 531 532# Set OBJS the same as bsd.prog.mk would do if we defined PROG. We can't 533# define PROG because we have multiple programs. 534# 535SRCS= errors.c genattr.c genattrtab.c \ 536 genautomata.c gencheck.c genchecksum.c gencodes.c \ 537 genconditions.c genconfig.c genconstants.c genemit.c \ 538 genextract.c genflags.c gengenrtl.c gengtype.c genmodes.c \ 539 genopinit.c genoutput.c genpeep.c genpreds.c genrecog.c \ 540 gensupport.c ggc-none.c print-rtl.c read-rtl.c rtl.c \ 541 vec.c 542 543SRCS+= ${GENSRCS} 544OBJS+= ${SRCS:N*.h:R:S/$/.o/g} 545GENOBJS+= ${GENSRCS:N*.h:R:S/$/.o/g} 546CLEANFILES+= ${GENSRCS} ${GENONLY} ${GENOBJS} ${GNTOOLS} 547 548#----------------------------------------------------------------------- 549# Manual dependencies. 550.if !exists(${DEPENDFILE}) 551.include "Makefile.dep" 552.endif 553 554.include <bsd.prog.mk> 555# DO NOT DELETE 556