aboutsummaryrefslogtreecommitdiff
path: root/gnu/usr.bin
diff options
context:
space:
mode:
authorDavid E. O'Brien <obrien@FreeBSD.org>2001-12-18 03:19:11 +0000
committerDavid E. O'Brien <obrien@FreeBSD.org>2001-12-18 03:19:11 +0000
commit8561d1123deda92f88756504d05f7613ed5eef73 (patch)
tree8164b315f1387bb2a0ee4488ae6a26773b275e48 /gnu/usr.bin
parente5d7f6b935559d5991d59982ddcf6fecd381fbbe (diff)
Notes
Diffstat (limited to 'gnu/usr.bin')
-rw-r--r--gnu/usr.bin/cc/cc_tools/Makefile226
-rw-r--r--gnu/usr.bin/cc/cc_tools/freebsd-native.h69
2 files changed, 295 insertions, 0 deletions
diff --git a/gnu/usr.bin/cc/cc_tools/Makefile b/gnu/usr.bin/cc/cc_tools/Makefile
new file mode 100644
index 000000000000..bed52826158f
--- /dev/null
+++ b/gnu/usr.bin/cc/cc_tools/Makefile
@@ -0,0 +1,226 @@
+# $FreeBSD$
+
+#
+# This could probably be merged with ../cc_int/Makefile, but bsd.lib.mk
+# is such a !@#!*#% nightmare because of how it reprograms the dependencies,
+# suffix rules, SRCS, etc. It's easiest to cheat by using bsd.prog.mk and
+# SRCS to get dependencies.
+#
+
+# ../Makefile.inc will put an absolute path to our objdir in CFLAGS.
+# Prevent mkdep from using it, so that we don't have to give rules for
+# aliases of generated headers.
+
+CFLAGS+= -DGENERATOR_FILE -I.
+
+.include "../Makefile.inc"
+
+.PATH: ${GCCDIR} ${GCCDIR}/cp
+
+#-----------------------------------------------------------------------
+# insn-* gunk
+
+CLEANFILES+= gensupport+%DIKED.c
+gensupport+%DIKED.c: gensupport.c
+ sed \
+ -e 's/^xmalloc/DONT_xmalloc/g' \
+ -e 's/^xrealloc/DONT_xrealloc/g' \
+ -e 's/^xstrdup/DONT_xstrdup/g' \
+ ${.ALLSRC} > ${.TARGET}
+
+.for F in attr codes config flags
+insn-$F.h: gen$F ${MD_FILE}
+ ./gen$F ${MD_FILE} > insn-$F.h
+GENSRCS+= insn-$F.h
+.endfor
+
+GENSRCS+= gen-time-stamp
+gen-time-stamp: genattrtab genemit genextract genopinit genoutput genpeep genrecog
+ touch ${.TARGET}
+
+.for F in attr codes config emit extract flags opinit output peep recog
+build-tools: gen$F
+
+gen$F: gen$F.o rtl.o obstack.o print-rtl.o bitmap.o errors.o gensupport+%DIKED.o ggc-none.o hashtab.o #safe-ctype.o
+ ${CC} -static ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC}
+
+GENSRCS+= gen$F.c
+CLEANFILES+= gen$F
+.endfor
+
+.for F in attrtab
+build-tools: gen$F
+
+gen$F: gen$F.o rtl.o print-rtl.o obstack.o bitmap.o errors.o gensupport+%DIKED.o ggc-none.o hashtab.o
+ ${CC} -static ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC}
+
+GENSRCS+= gen$F.c
+CLEANFILES+= gen$F
+.endfor
+
+SRCS+= bitmap.c errors.c gensupport+%DIKED.c ggc-none.c hashtab.c obstack.c print-rtl.c regclass.c rtl.c rtlanal.c
+
+.for F in check genrtl
+build-tools: gen$F
+
+gen$F: gen$F.o
+ ${CC} -static -DGENERATOR_FILE ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC}
+
+GENSRCS+= gen$F.c
+CLEANFILES+= gen$F
+.endfor
+
+.ORDER: genrtl.c genrtl.h
+genrtl.c genrtl.h: gengenrtl
+ ./gengenrtl > genrtl.c
+ ./gengenrtl -h > genrtl.h
+
+GENSRCS+= genrtl.c genrtl.h
+
+#-----------------------------------------------------------------------
+# Common parser stuff.
+
+tree-check.h: gencheck
+ ./gencheck > ${.TARGET}
+GENSRCS+= tree-check.h
+
+#-----------------------------------------------------------------------
+# the host/target compiler config.
+
+COMMONHDRS= config.h hconfig.h multilib.h options.h specs.h tconfig.h tm.h \
+ tm_p.h configargs.h safe-ctype.h
+GENSRCS+= ${COMMONHDRS} gencheck.h
+
+${COMMONHDRS}: ${.CURDIR}/Makefile
+
+configargs.h:
+ echo 'static const char configuration_arguments[] =' > ${.TARGET}
+ echo ' "FreeBSD/${GCC_ARCH} system compiler";' >> ${.TARGET}
+ echo 'static const char thread_model[] = "posix";' >> ${.TARGET}
+
+config.h hconfig.h:
+ echo '#include "auto-host.h"' > ${.TARGET}
+ echo '#include "gansidecl.h"' >> ${.TARGET}
+ echo '#include "${GCC_ARCH}/xm-${GCC_ARCH}.h"' >> ${.TARGET}
+ echo '#include "defaults.h"' >> ${.TARGET}
+ echo '#include "hwint.h"' >> ${.TARGET}
+ echo '#ifndef POSIX' >> ${.TARGET}
+ echo '# define POSIX' >> ${.TARGET}
+ echo '#endif' >> ${.TARGET}
+ echo '#ifndef GENERATOR_FILE' >> ${.TARGET}
+ echo '#include "insn-codes.h"' >> ${.TARGET}
+ echo '#include "insn-flags.h"' >> ${.TARGET}
+ echo '#endif' >> ${.TARGET}
+
+gencheck.h:
+ echo '#include "cp/cp-tree.def"' > ${.TARGET}
+ echo '#include "objc/objc-tree.def"' >> ${.TARGET}
+
+multilib.h:
+ echo 'static const char *const multilib_raw[] = { \
+ "aout maout;", "elf !maout;", NULL };' > ${.TARGET}
+ echo 'static const char *const multilib_matches_raw[] = { \
+ "maout maout;", "melf melf;", NULL };' >> ${.TARGET}
+ echo 'static const char *multilib_extra = "";' >> ${.TARGET}
+ echo 'static const char *const multilib_exclusions_raw[] = { \
+ NULL };' >> ${.TARGET}
+
+options.h:
+ echo '#include "cp/lang-options.h"' > ${.TARGET}
+ echo '#include "f/lang-options.h"' >> ${.TARGET}
+ echo '#include "objc/lang-options.h"' >> ${.TARGET}
+
+specs.h:
+ echo '#include "cp/lang-specs.h"' > ${.TARGET}
+ echo '#include "f/lang-specs.h"' >> ${.TARGET}
+ echo '#include "objc/lang-specs.h"' >> ${.TARGET}
+
+tconfig.h:
+ echo '#include "gansidecl.h"' > ${.TARGET}
+ echo '#include "${GCC_ARCH}/xm-${GCC_ARCH}.h"' >> ${.TARGET}
+ echo '#include "defaults.h"' >> ${.TARGET}
+ echo '#ifndef GENERATOR_FILE' >> ${.TARGET}
+ echo '#include "insn-codes.h"' >> ${.TARGET}
+ echo '#include "insn-flags.h"' >> ${.TARGET}
+ echo '#endif' >> ${.TARGET}
+ echo '#define USING_SJLJ_EXCEPTIONS 0' >> ${.TARGET}
+
+# KEEP THIS IN SYNC with src/gcc/lib/libgcc/Makefile !!
+tm.h:
+ echo '#include "gansidecl.h"' > ${.TARGET}
+ echo '#include "${GCC_ARCH}/${GCC_ARCH}.h"' >> ${.TARGET}
+.if ${GCC_ARCH} == "i386"
+ echo '#include "${GCC_ARCH}/att.h"' >> ${.TARGET}
+.endif
+ echo '#include <freebsd-native.h>' >> ${.TARGET}
+ echo '#include <freebsd.h>' >> ${.TARGET}
+.if exists(${GCCDIR}/config/${GCC_ARCH}/elf.h)
+ echo '#include "${GCC_ARCH}/elf.h"' >> ${.TARGET}
+.endif
+ echo '#include "${GCC_ARCH}/freebsd.h"' >> ${.TARGET}
+.if ${GCC_ARCH} == "i386"
+ echo '#include "${GCC_ARCH}/perform.h"' >> ${.TARGET}
+.endif
+ echo '#include "defaults.h"' >> ${.TARGET}
+ echo '#ifndef GENERATOR_FILE' >> ${.TARGET}
+ echo '#include "insn-codes.h"' >> ${.TARGET}
+ echo '#include "insn-flags.h"' >> ${.TARGET}
+ echo '#endif' >> ${.TARGET}
+
+tm_p.h:
+ echo '#include "${GCC_ARCH}/${GCC_ARCH}-protos.h"' > ${.TARGET}
+ echo '#include <freebsd-native.h>' >> ${.TARGET}
+ echo '#ifndef GENERATOR_FILE' >> ${.TARGET}
+ echo '#include "insn-codes.h"' >> ${.TARGET}
+ echo '#include "insn-flags.h"' >> ${.TARGET}
+ echo '#endif' >> ${.TARGET}
+
+#-----------------------------------------------------------------------
+# General things.
+
+SRCS+= ${GENSRCS}
+CLEANFILES+= ${GENSRCS}
+
+all: ${SRCS}
+
+.include <bsd.prog.mk>
+
+#-----------------------------------------------------------------------
+# Fixups.
+
+# Set OBJS the same as bsd.prog.mk would do if we defined PROG. We can't
+# define PROG because we have multiple programs.
+#
+OBJS+= ${SRCS:N*.h:R:S/$/.o/g}
+
+.if !exists(${DEPENDFILE})
+# Fudge pre-dependfile dependencies of objects in much the same way as
+# bsd.prog.mk would do if we defined PROG. There are complications to
+# avoid circular dependencies. First, only make most objects depend on
+# all headers. Filter out the objects that would cause problems (i.e.,
+# objects that will be used to create programs that will generate headers).
+#
+${OBJS:Nbitmap.o:Nerrors.o:Ngenattr.o:Ngencheck.o:Ngencodes.o:Ngenconfig.o:Ngenflags.o:Ngengenrtl.o:Ngensupport+%DIKED.o:Nggc-none.o:Nhashtab.o:Nobstack.o:Nprint-rtl.o:Nrtl.o}: ${SRCS:M*.h}
+
+# Next, make each of the problematic objects depend on only most headers.
+# Filter out the headers that would cause problems (and a few more when it
+# is inconvenient to filter precisely).
+#
+bitmap.o genattr.o gencodes.o genconfig.o genflags.o obstack.o print-rtl.o \
+ rtl.o: ${SRCS:M*.h:Ninsn-*.h}
+gencheck.o: gencheck.h ${SRCS:M*.h:Ngenrtl.h:Ntree-check.h:Ninsn-*.h}
+gengenrtl.o: ${SRCS:M*.h:Ngenrtl.h:Ninsn-*.h}
+.endif
+
+#GENSRCS+= safe-ctype.h
+${OBJS} gensupport+%DIKED.o: safe-ctype.h
+safe-ctype.h: Makefile
+ echo '#include <ctype.h>' > ${.TARGET}
+.for Z in TOUPPER TOLOWER ISDIGIT ISXDIGIT ISUPPER ISLOWER ISALPHA ISALNUM ISSPACE ISPUNCT ISGRAPH ISBLANK ISPRINT ISCNTRL
+ echo '#define ${Z} ${Z:L}' >> ${.TARGET}
+.endfor
+ echo "#define ISIDST(x) ((x) == '_' || isalpha(x))" >> ${.TARGET}
+ echo "#define ISIDNUM(x) (isdigit(x) || ISIDST(x))" >> ${.TARGET}
+ echo "#define IS_VSPACE(x) ((x) == '\n' || (x) == '\r')" >> ${.TARGET}
+ echo "#define IS_NVSPACE(x) (!IS_VSPACE(x) && (isspace(x) || (x) == '\0'))" >> ${.TARGET}
+ echo "#define IS_SPACE_OR_NUL(x) (isspace(x) || (x) == '\0')" >> ${.TARGET}
diff --git a/gnu/usr.bin/cc/cc_tools/freebsd-native.h b/gnu/usr.bin/cc/cc_tools/freebsd-native.h
new file mode 100644
index 000000000000..20094fe97ece
--- /dev/null
+++ b/gnu/usr.bin/cc/cc_tools/freebsd-native.h
@@ -0,0 +1,69 @@
+/* $FreeBSD$ */
+
+/* FREEBSD_NATIVE is defined when gcc is integrated into the FreeBSD
+ source tree so it can be configured appropriately without using
+ the GNU configure/build mechanism. */
+
+#undef FREEBSD_NATIVE
+#define FREEBSD_NATIVE 1
+
+/* Fake out gcc/config/freebsd<version>.h. */
+#define FBSD_MAJOR 5
+
+#undef SYSTEM_INCLUDE_DIR /* We don't need one for now. */
+#undef GCC_INCLUDE_DIR /* We don't need one for now. */
+#undef TOOL_INCLUDE_DIR /* We don't need one for now. */
+#undef LOCAL_INCLUDE_DIR /* We don't wish to support one. */
+
+/* Look for the include files in the system-defined places. */
+#define GPLUSPLUS_INCLUDE_DIR PREFIX"/include/g++"
+#define GCC_INCLUDE_DIR PREFIX"/include"
+#ifdef CROSS_COMPILE
+#define CROSS_INCLUDE_DIR PREFIX"/include"
+#endif
+
+/* Under FreeBSD, the normal location of the compiler back ends is the
+ /usr/libexec directory.
+
+ ``cc --print-search-dirs'' gives:
+ install: STANDARD_EXEC_PREFIX/(null)
+ programs: /usr/libexec/<OBJFORMAT>/:MD_EXEC_PREFIX
+ libraries: MD_EXEC_PREFIX:MD_STARTFILE_PREFIX:STANDARD_STARTFILE_PREFIX
+
+ We really don't need a "STANDARD_EXEC_PREFIX". However w/o it,
+ "--print-search-dirs" reports "install: /usr/local/lib/gcc-lib/(null)".
+ It is not harmful, but is just plain wrong. So we define a
+ "STANDARD_EXEC_PREFIX" to not be misleading. */
+
+#undef STANDARD_EXEC_PREFIX
+#undef TOOLDIR_BASE_PREFIX /* Old?? This is not documented. */
+#undef MD_EXEC_PREFIX
+
+#define STANDARD_EXEC_PREFIX PREFIX"/libexec/"
+#define MD_EXEC_PREFIX PREFIX"/libexec/"
+
+/* Under FreeBSD, the normal location of the various *crt*.o files is the
+ /usr/lib directory. */
+
+#undef STANDARD_STARTFILE_PREFIX
+#undef MD_STARTFILE_PREFIX /* We don't need one for now. */
+
+#define STANDARD_STARTFILE_PREFIX PREFIX"/lib/"
+
+/* FreeBSD is 4.4BSD derived */
+#define bsd4_4
+
+/* Dike out [stupid, IMHO] libiberty functions. */
+#define xmalloc_set_program_name(dummy)
+#define xmalloc malloc
+#define xcalloc calloc
+#define xrealloc realloc
+#define xstrdup strdup
+#define xstrerror strerror
+
+/* And now they want to replace ctype.h.... grr... [stupid, IMHO] */
+#define xxxISDIGIT isdigit
+#define xxxISGRAPH isgraph
+#define xxxISLOWER islower
+#define xxxISSPACE isspace
+#define xxxTOUPPER toupper