96538bcf9e
* 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>.
235 lines
7.4 KiB
Makefile
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}
|