NetBSD/gnu/usr.bin/gcc3/backend/Makefile
uwe 96538bcf9e * add ${GCCARCH} to .PATH to make hconfig.h a real file target.
* use ${G_HCONFIG_H} instead of hconfig.h as a dependency.
* hconfig.h: auto-build.h dependency is bogus, remove.
* misc cleanup of ".c depends on .h" -> ".o depends on .h"
* options.h was missing from CLEANFILES.

With these changes running make in this directory doesn't do a
*complete* rebuild anymore.  Still not foolproof, because gen* host
tools do not overwrite generated files that are not changed, so we
really need to use stamp file style dependencies for those, like gcc
makefile does.

Ok by Matthew Green <mrg@netbsd>.
2003-08-22 03:06:32 +00:00

235 lines
7.4 KiB
Makefile

# $NetBSD: Makefile,v 1.7 2003/08/22 03:06:32 uwe Exp $
NOLINKLIB= # defined
NOLINT= # defined
NOPIC= # defined
NOPROFILE= # defined
LIB= backend
SRCS= ${G_OBJS:.o=.c} ${G_out_file:T}
CPPFLAGS+= -I. -I${GCCARCH} ${G_ALL_CFLAGS:M-D*} ${G_INCLUDES:M-I*:N-I.*} \
-DTARGET_NAME=\"${MACHINE_GNU_PLATFORM}\"
HOST_CPPFLAGS+= -I. -I${GCCARCH} ${G_ALL_CFLAGS:M-D*} ${G_INCLUDES:M-I*:N-I.*}
DPSRCS+= insn-attr.h insn-codes.h insn-config.h insn-flags.h tree-check.h
.include <bsd.lib.mk>
#
# Independent generation programs.
#
CLEANFILES+= gengenrtl gengenrtl.o genrtl.c genrtl.h \
gengtype gtyp-gen.h gtype-desc.c gtype-desc.h \
gtype-c.h gtype-cp.h gtype-f.h gtype-objc.h \
genflags genflags.h \
gencheck tree-check.h \
genpreds tm-preds.h tm_p.h cs-tm_p.h \
auto-host.h print-rtl1.c \
build-rtl.c build-errors.c build-varray.c build-bitmap.c build-ggc-none.c \
gt-*.h *.o \
config.h cs-config.h \
#
# These files have special needs
#
COPTS.prefix.o= -DPREFIX=\"$(prefix)\"
COPTS.toplev.o= -DTARGET_NAME=\"$(target_alias)\"
COPTS.insn-conditions.c= -DGENERATOR_FILE
COPTS.sparc.o= -DTARGET_CPU_DEFAULT=${G_target_cpu_default}
# Headers that host objects depend on (except gen*rtl*)
HH= ${G_HCONFIG_H} genrtl.h
#
# Generate the various header files we need.
#
genrtl.c: gengenrtl
./gengenrtl > genrtl.c
genrtl.h: gengenrtl
./gengenrtl -h > genrtl.h
gengenrtl.o: gengenrtl.c ${G_HCONFIG_H}
${HOST_COMPILE.c} $<
gengenrtl: gengenrtl.o
${HOST_LINK.c} -o $@ $> ${NBCOMPATLIB} ${HOSTLIBIBERTY}
tm-preds.h: genpreds
./genpreds > tm-preds.h
genpreds.o: genpreds.c $(HH)
${HOST_COMPILE.c} $<
genpreds: genpreds.o
${HOST_LINK.c} -o $@ $> ${NBCOMPATLIB} ${HOSTLIBIBERTY}
tree-check.h: gencheck
./gencheck >$@
gencheck.o: gencheck.c $(HH)
${HOST_COMPILE.c} $<
gencheck: gencheck.o
${HOST_LINK.c} -o $@ $> ${NBCOMPATLIB} ${HOSTLIBIBERTY}
gtype-desc.c: gtype-desc.h
gtype-desc.h: gengtype
rm -f auto-host.h
ln -s ${.CURDIR}/../arch/${MACHINE_ARCH}/auto-host.h .
./gengtype
gengtype.o: gengtype.c gtyp-gen.h $(HH)
${HOST_COMPILE.c} $<
gengtype-lex.o: gengtype-lex.c $(HH)
${HOST_COMPILE.c} $<
gengtype-yacc.o: gengtype-yacc.c $(HH)
${HOST_COMPILE.c} $<
gengtype: gengtype.o gtyp-gen.h gengtype-lex.o gengtype-yacc.o config.h
${HOST_LINK.c} -o $@ gengtype.o gengtype-lex.o gengtype-yacc.o ${NBCOMPATLIB} ${HOSTLIBIBERTY}
gtyp-gen.h: Makefile
( echo "static const char *srcdir = \"$(G_GTFILES_SRCDIR)\";" ; \
echo "static const char *lang_files[] = {" ; \
for f in $(G_GTFILES_FILES_FILES); do echo "\"$$f\", "; done ; \
echo "NULL };" ; \
echo "static const char *langs_for_lang_files[] = {" ; \
for f in $(G_GTFILES_FILES_LANGS); do echo "\"$$f\", "; done ; \
echo "NULL };" ; \
echo "static const char *all_files[] = {" ; \
for f in $(G_GTFILES); do echo "\"$$f\", "; done ; \
echo " NULL };" ; \
echo "static const char *lang_dir_names[] = {" ; \
echo "\"c\", " ; \
for f in $(G_GTFILES_LANG_DIR_NAMES); do echo "\"$$f\", "; done ; \
echo "NULL };" ; \
) > gtyp-gen.h
config.h: Makefile
TM_DEFINES="$(G_tm_defines)" \
HEADERS="$(G_host_xm_file)" XM_DEFINES="$(G_host_xm_defines)" \
TARGET_CPU_DEFAULT="$(G_target_cpu_default)" \
/bin/sh $(GNUHOSTDIST)/gcc/mkconfig.sh config.h
tm_p.h: Makefile
TM_DEFINES="" \
HEADERS="$(G_tm_p_file)" XM_DEFINES="" TARGET_CPU_DEFAULT="" \
/bin/sh $(GNUHOSTDIST)/gcc/mkconfig.sh tm_p.h
CLEANFILES+= options.h
options.h: Makefile
for f in $(lang_options_files); do \
echo "#include \"$$f\""; \
done | sed 's|$(GNUHOSTDIST)/gcc/||' > options.h
# Yuck, we have to run configure to generate this one...
CLEANFILES+= auto-build.h
auto-build.h: Makefile
rm -rf .ab && \
mkdir .ab && \
(cd .ab && \
/bin/sh $(GNUHOSTDIST)/gcc/configure \
--build=`${.CURDIR}/../../../dist/gcc/config.guess` \
--host=`${.CURDIR}/../../../dist/gcc/config.guess` \
--target=${MACHINE_GNU_PLATFORM} && \
mv auto-host.h ../auto-build.h) && \
rm -rf .ab
#
# These are copies of files we build for the build host that are used
# by the genfoo programs.
#
build-rtl.c: rtl.c \
$(G_RTL_H) real.h $(G_GCC_H) errors.h gtype-desc.h
rm -f build-rtl.c
sed -e 's/config[.]h/hconfig.h/' ${GNUHOSTDIST}/gcc/rtl.c > build-rtl.c
build-rtl.o: build-rtl.c $(HH)
${HOST_COMPILE.c} -DGENERATOR_FILE build-rtl.c
print-rtl1.c: print-rtl.c \
$(G_RTL_H) $(G_TREE_H) hard-reg-set.h $(G_BASIC_BLOCK_H)
rm -f print-rtl1.c
sed -e 's/config[.]h/hconfig.h/' ${GNUHOSTDIST}/gcc/print-rtl.c > print-rtl1.c
print-rtl1.o: print-rtl.c $(HH)
${HOST_COMPILE.c} -DGENERATOR_FILE print-rtl1.c
build-bitmap.c: bitmap.c \
$(G_RTL_H) flags.h $(G_BASIC_BLOCK_H) $(REGS_H) $(G_GCC_H) gtype-desc.h
rm -f build-bitmap.c
sed -e 's/config[.]h/hconfig.h/' ${GNUHOSTDIST}/gcc/bitmap.c > build-bitmap.c
build-bitmap.o: build-bitmap.c $(HH)
${HOST_COMPILE.c} ${COPTS.${.IMPSRC:T}} build-bitmap.c
build-errors.c: errors.c errors.h
rm -f build-errors.c
sed -e 's/config[.]h/hconfig.h/' ${GNUHOSTDIST}/gcc/errors.c > build-errors.c
build-errors.o: build-errors.c $(HH)
${HOST_COMPILE.c} -DGENERATOR_FILE build-errors.c
build-varray.c: varray.c \
$(G_RTL_H) $(G_GCC_H) $(TREE_H) bitmap.h errors.h
rm -f build-varray.c
sed -e 's/config[.]h/hconfig.h/' ${GNUHOSTDIST}/gcc/varray.c > build-varray.c
build-varray.o: build-varray.c $(HH) gtype-desc.h
${HOST_COMPILE.c} ${COPTS.${.IMPSRC:T}} build-varray.c
build-ggc-none.c: ggc-none.c \
$(G_GCC_H) gtype-desc.h
rm -f build-ggc-none.c
sed -e 's/config[.]h/hconfig.h/' ${GNUHOSTDIST}/gcc/ggc-none.c > build-ggc-none.c
build-ggc-none.o: build-ggc-none.c $(HH)
${HOST_COMPILE.c} -DGENERATOR_FILE build-ggc-none.c
#
# The `early' insn-foo generators
#
EXTRADEPENDSEARLY= ${G_HOST_EARLY_SUPPORT} ${G_HOST_RTL} ${G_HOST_ERRORS}
.for f in conditions.c constants.h
CLEANFILES+= gen${f:R} insn-${f}
gen${f:R}.o: gen${f:R}.c $(HH)
${HOST_COMPILE.c} $<
insn-${f:R}.o:
${HOST_COMPILE.c} ${COPTS.${.IMPSRC:T}} insn-${f:R}.c
insn-${f}: genrtl.h ${G_md_file} ${EXTRADEPENDSEARLY:.c=.o} gen${f:R}.o
${HOST_LINK.c} -o gen${f:R} gen${f:R}.o ${EXTRADEPENDSEARLY:.c=.o} ${NBCOMPATLIB} ${HOSTLIBIBERTY}
./gen${f:R} ${G_md_file} >$@
.endfor
#
# The normal insn-foo generators
#
.for f in gensupport.c read-rtl.c dummy-conditions.c
${f:R}.o: ${f:R}.c $(HH)
${HOST_COMPILE.c} $<
.endfor
EXTRADEPENDS= ${G_HOST_RTL} ${G_HOST_SUPPORT} ${G_HOST_PRINT} ${G_HOST_ERRORS}
.for f in attr.h codes.h config.h emit.c extract.c flags.h opinit.c output.c \
peep.c recog.c
CLEANFILES+= gen${f:R} insn-${f}
gen${f:R}.o: gen${f:R}.c $(HH)
${HOST_COMPILE.c} $<
insn-${f}: genrtl.h ${G_md_file} ${EXTRADEPENDS:.c=.o} gen${f:R}.o
${HOST_LINK.c} -o gen${f:R} gen${f:R}.o ${EXTRADEPENDS:.c=.o} ${NBCOMPATLIB} ${HOSTLIBIBERTY}
./gen${f:R} ${G_md_file} >$@
.endfor
#
# "One of these things is not like the other"
#
CLEANFILES+= genattrtab insn-attrtab.c
genattrtab.o: genattrtab.c $(HH) gtype-desc.h
${HOST_COMPILE.c} $<
genautomata.o: genautomata.c $(HH)
${HOST_COMPILE.c} $<
insn-attrtab.c: genrtl.h ${G_md_file} ${EXTRADEPENDS:.c=.o} ${G_HOST_VARRAY:.c=.o} genattrtab.o genautomata.o
${HOST_LINK.c} -o genattrtab genattrtab.o genautomata.o ${EXTRADEPENDS:.c=.o} ${G_HOST_VARRAY:.c=.o} ${NBCOMPATLIB} ${HOSTLIBIBERTY} -lm
./genattrtab ${G_md_file} >$@
#
# Required hard-coded dependancies.
#
genextract.o: insn-config.h
insn-attrtab.o: insn-config.h ${G_HOST_RTLANAL:.o=.c}
insn-conditions.o: insn-constants.h tm_p.h tm-preds.h
insn-extract.o: insn-config.h
toplev.d toplev.o: options.h
.PATH: ${DIST}/gcc ${DIST}/libiberty ${GCCARCH} ${G_out_file:H}