freebsd-nq/gnu/usr.bin/binutils/gdb/Makefile
David E. O'Brien 457170e99c We need to link with libiberty.a before libreadline.so. Both supply
xmalloc() and xrealloc() and the mixed usage of xmalloc in some .c's from
libiberty.a and other .c's from libreadline.so produces an unusable binary
on the Alpha.

While I am here, preventatively move other libs in the link order.

Submitted by:	gallatin
2002-06-21 19:05:20 +00:00

112 lines
3.6 KiB
Makefile

# $FreeBSD$
.include "../Makefile.inc0"
.PATH: ${SRCDIR}/binutils
PROG= gdb
XSRCS= annotate.c ax-general.c ax-gdb.c bcache.c blockframe.c \
breakpoint.c buildsym.c c-exp.y c-lang.c c-typeprint.c \
c-valprint.c ch-exp.c ch-lang.c ch-typeprint.c ch-valprint.c \
coffread.c command.c complaints.c copying.c core-regset.c \
corefile.c corelow.c cp-valprint.c dcache.c dbxread.c \
demangle.c dwarfread.c dwarf2read.c elfread.c environ.c eval.c \
exec.c expprint.c f-exp.y f-lang.c f-typeprint.c f-valprint.c \
findvar%UAfix.c fork-child.c freebsd-uthread.c gdbarch.c gdbtypes.c \
infcmd.c inflow.c infptrace.c infrun.c inftarg.c language.c \
jv-exp.y jv-lang.c jv-valprint.c jv-typeprint.c nlmread.c \
m2-lang.c m2-exp.y m2-typeprint.c m2-valprint.c main.c maint.c \
mdebugread.c mem-break.c minsyms.c objfiles.c parse.c \
printcmd.c remote.c remote-utils.c scm-exp.c scm-lang.c \
scm-valprint.c solib.c source.c stabsread.c stack.c symfile.c \
symmisc.c symtab.c target.c thread.c top.c tracepoint.c \
typeprint.c utils.c valarith.c valops.c valprint.c values.c \
version.c serial.c ser-unix.c ser-tcp.c
SRCS= init.c ${XSRCS}
SRCS+= wait.h
.if exists(${.CURDIR}/Makefile.${TARGET_ARCH})
.include "${.CURDIR}/Makefile.${TARGET_ARCH}"
.endif
WARNS= 0
.if ${TARGET_ARCH} != ${MACHINE_ARCH}
CFLAGS+= -DCROSS_COMPILE=1
.endif
CFLAGS+= -I${.CURDIR}/${TARGET_ARCH}
CFLAGS+= -I${SRCDIR}/binutils
CFLAGS+= -I${SRCDIR}/bfd
CFLAGS+= -I${GDBDIR}/gdb
CFLAGS+= -I${GDBDIR}/gdb/config
DPADD= ${RELTOP}/libbfd/libbfd.a
DPADD+= ${RELTOP}/libopcodes/libopcodes.a
DPADD+= ${LIBTERMCAP}
DPADD+= ${LIBGNUREGEX}
DPADD+= ${RELTOP}/libiberty/libiberty.a
DPADD+= ${LIBREADLINE}
LDADD+= ${RELTOP}/libbfd/libbfd.a
LDADD+= ${RELTOP}/libopcodes/libopcodes.a
LDADD+= -ltermcap
LDADD+= -lgnuregex
LDADD+= ${RELTOP}/libiberty/libiberty.a
LDADD+= -lreadline
GDBDIR= ${.CURDIR}/../../../../contrib/gdb
.PATH: ${GDBDIR}/gdb
.PATH: ${SRCDIR}/opcodes
CFLAGS+= -DFREEBSD_ELF
CFLAGS+= -I$(.CURDIR) -I${DESTDIR}/usr/include/readline
YFLAGS=
CLEANFILES= init.c init.c-tmp wait.h
CLEANFILES+= findvar%UAfix.c
# We do this by grepping through sources. If that turns out to be too slow,
# maybe we could just require every .o file to have an initialization routine
# of a given name (remote-udi.o -> _initialize_remote_udi, etc.).
#
# Formatting conventions: The name of the _initialize_* routines must start
# in column zero, and must not be inside #if.
#
# Note that the set of files with init functions might change, or the names
# of the functions might change, so this files needs to depend on all the
# object files that will be linked into gdb.
init.c: ${XSRCS}
@${ECHO} Making ${.TARGET}
@rm -f init.c-tmp
@echo '/* Do not modify this file. */' >init.c-tmp
@echo '/* It is created automatically by the Makefile. */'>>init.c-tmp
@echo 'void initialize_all_files () {' >>init.c-tmp
@for i in ${.ALLSRC} ; do \
filename=`echo $$i | sed \
-e '/^Onindy.c/d' \
-e '/^nindy.c/d' \
-e '/ttyflush.c/d' \
-e '/xdr_ld.c/d' \
-e '/xdr_ptrace.c/d' \
-e '/xdr_rdb.c/d' \
-e '/udr.c/d' \
-e '/udip2soc.c/d' \
-e '/udi2go32.c/d' \
-e '/version.c/d' \
-e '/^[a-z0-9A-Z_]*_[SU].c/d' \
-e '/[a-z0-9A-Z_]*-exp.tab.c/d'` ; \
case $$filename in \
"") ;; \
*) sed <$$filename >>init.c-tmp -n \
-e '/^_initialize_[a-z_0-9A-Z]* *(/s/^\([a-z_0-9A-Z]*\).*/ {extern void \1 (); \1 ();}/p' ; ;; \
esac ; \
done
@echo '}' >>init.c-tmp
@mv init.c-tmp ${.TARGET}
.PRECIOUS: init.c
wait.h:
ln -sf ${.CURDIR}/../../../../sys/sys/wait.h ${.TARGET}
.include <bsd.prog.mk>