mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-01-19 12:59:21 +08:00
d5a20f0b70
These subdirs have unique configure scripts to do some compiler tests. The checks should work for all targets, so hoist them up to the top libgloss dir. This should allow us to delete these subdir configure scripts. It means the top-level gains autoheader support, but that's fine. It wasn't exporting any defines previously (i.e. -D into CPPFLAGS), and all of the defines it now exports are only used by code in the libnosys subdir which was expecting to have a config.h.
281 lines
8.8 KiB
Makefile
281 lines
8.8 KiB
Makefile
#
|
|
# libgloss Makefile.in for CRIS. Copied and modified from mcore long ago.
|
|
#
|
|
|
|
DESTDIR =
|
|
VPATH = @srcdir@
|
|
srcdir = @srcdir@
|
|
objdir = .
|
|
srcroot = $(srcdir)/../..
|
|
objroot = $(objdir)/../..
|
|
|
|
prefix = @prefix@
|
|
exec_prefix = @exec_prefix@
|
|
|
|
host_alias = @host_alias@
|
|
target_alias = @target_alias@
|
|
|
|
bindir = @bindir@
|
|
libdir = @libdir@
|
|
tooldir = $(exec_prefix)/$(target_alias)
|
|
|
|
INSTALL = @INSTALL@
|
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
|
INSTALL_DATA = @INSTALL_DATA@
|
|
|
|
# Multilib support variables.
|
|
# TOP is used instead of MULTI{BUILD,SRC}TOP.
|
|
MULTIDIRS =
|
|
MULTISUBDIR =
|
|
|
|
SHELL = /bin/sh
|
|
|
|
mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs
|
|
|
|
CC = @CC@
|
|
|
|
AS = @AS@
|
|
AR = @AR@
|
|
LD = @LD@
|
|
RANLIB = @RANLIB@
|
|
|
|
OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \
|
|
then echo ${objroot}/../binutils/objdump ; \
|
|
else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi`
|
|
OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \
|
|
then echo ${objroot}/../binutils/objcopy ; \
|
|
else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi`
|
|
|
|
CFLAGS = -g
|
|
SCRIPTS =
|
|
|
|
OBJS = outbyte.o
|
|
|
|
# Beware: GNU make construct used (shell call). Since GCC at the time
|
|
# of this writing requires GNU make >= 3.79.1, this should pose no
|
|
# problem.
|
|
SYSCALL_CFILES := $(shell sed -ne 's/^cat > \([^ ]*\).*/\1/p' < $(srcdir)/gensyscalls)
|
|
|
|
# Here is all of the simulator stuff.
|
|
# Actually, now it's just the GNU/Linux stuff, as that's also the
|
|
# simulator ABI. The name of the library is different, though.
|
|
SIM_SCRIPTS =
|
|
SIM_LDFLAGS =
|
|
SIM_BSP = libsyssim.a
|
|
SIM_CRT0 = $(LIN_CRT0)
|
|
SIM_OBJS = $(LIN_OBJS)
|
|
SIM_TEST = sim-test
|
|
SIM_INSTALL = install-sim
|
|
|
|
# Here is all of the GNU/Linux stuff. At present we don't build newlib
|
|
# and libgloss for cris*-linux-gnu*, but it's nice to keep that as an
|
|
# option.
|
|
LIN_PREFIX =
|
|
LIN_LDFLAGS =
|
|
LIN_BSP = libsyslinux.a
|
|
LIN_CRT0 = lcrt0.o
|
|
LIN_EXTRA = crti.o crtn.o crt1.o
|
|
LIN_OBJS = close.o execve.o exit.o fcntl.o fork.o fstat.o getpid.o \
|
|
gettod.o isatty.o kill.o link.o lseek.o open.o read.o \
|
|
rename.o sbrk.o stat.o times.o unlink.o wait.o write.o ${OBJS}
|
|
LIN_SCRIPTS =
|
|
LIN_TEST =
|
|
LIN_INSTALL = install-lin
|
|
|
|
# In (over)due time, here will be all stuff necessary for a development
|
|
# board.
|
|
BSP_PREFIX =
|
|
BSP_LDFLAGS =
|
|
BSP_BSP = libbsp.a
|
|
BSP_CRT0 = crt0.o
|
|
BSP_OBJS = ${OBJS} setup.o irqtable.o
|
|
BSP_SCRIPTS =
|
|
BSP_TEST =
|
|
BSP_INSTALL = install-bsp
|
|
|
|
ALL_INSTALL_FILES = \
|
|
${SIM_CRT0} ${SIM_EXTRA} ${SIM_BSP} \
|
|
${LIN_CRT0} ${LIN_EXTRA} ${LIN_BSP} \
|
|
${BSP_CRT0} ${BSP_EXTRA} ${BSP_BSP}
|
|
|
|
ALL_INSTALL_FILES_NEWLIB_COPY = \
|
|
$(sort ${ALL_INSTALL_FILES:%=$(objroot)/newlib/%}) $(objroot)/newlib/libnosys.a
|
|
|
|
# Host specific makefile fragment comes in here.
|
|
@host_makefile_frag@
|
|
|
|
# Need to augment the definition from host_makefile_frag above.
|
|
INCLUDES += -I$(srcdir)
|
|
|
|
all: ${ALL_INSTALL_FILES} ${ALL_INSTALL_FILES_NEWLIB_COPY} libnosys.a
|
|
|
|
#
|
|
# Here's where we build the board support packages for each target.
|
|
#
|
|
${SIM_BSP}: ${SIM_OBJS}
|
|
${AR} ${ARFLAGS} ${SIM_BSP} ${SIM_OBJS}
|
|
${RANLIB} ${SIM_BSP}
|
|
|
|
${BSP_BSP}: ${BSP_OBJS}
|
|
${AR} ${ARFLAGS} ${BSP_BSP} ${BSP_OBJS}
|
|
${RANLIB} ${BSP_BSP}
|
|
|
|
${LIN_BSP}: ${LIN_OBJS}
|
|
${AR} ${ARFLAGS} ${LIN_BSP} ${LIN_OBJS}
|
|
${RANLIB} ${LIN_BSP}
|
|
|
|
# We need a link to libnosys.a in this directory, since this is the
|
|
# directory used when test-compiling for configuration for other parts and
|
|
# when running the testsuite. By using a symbolic link, it does not
|
|
# matter whether libnosys.a is built yet when the rule is executed.
|
|
libnosys.a:
|
|
ln -s ../libnosys/libnosys.a
|
|
|
|
# Toplevel build rules for various other libraries have gcc -B options
|
|
# applied so the newlib build directory is reached, but not the target
|
|
# libgloss directory (whose name is unknown to the toplevel configury
|
|
# anyway). Configury tests that check for a successful link therefore
|
|
# fail; they can't find crt0.o and non-libc.a+libm.a libraries. We copy
|
|
# over all files we would install to the neighboring newlib directory.
|
|
# Only the default crt0.o and libraries are needed, but we do them all for
|
|
# completeness. They're however installed from here, not from the newlib
|
|
# build directory.
|
|
$(objroot)/newlib/%: %
|
|
cp -p $^ $@
|
|
|
|
# This rule, being more specific, overrides the pattern rule above.
|
|
$(objroot)/newlib/libnosys.a:
|
|
ln -s ../libgloss/libnosys/libnosys.a $(objroot)/newlib
|
|
|
|
#
|
|
# Build a test program for each target board. Just trying to get
|
|
# it to link is a good test, so we ignore all the errors for now.
|
|
#
|
|
#
|
|
# Here's where we build the test programs for each target.
|
|
#
|
|
.PHONY: test
|
|
test: ${SIM_TEST} ${BSP_TEST}
|
|
|
|
sim-test: sim-test.x sim-test.dis
|
|
|
|
sim-test.x: test.o ${SIM_CRT0} ${SIM_BSP}
|
|
${CC} ${LDFLAGS_FOR_TARGET} -L${objdir} \
|
|
${SIM_CRT0} test.o \
|
|
-o sim-test.x ${LIBS_FOR_TARGET} -lc ${SIM_BSP}
|
|
|
|
sim-test.dis: sim-test.x
|
|
${OBJDUMP} -d sim-test.x > sim-test.dis
|
|
|
|
|
|
test.o: ${srcdir}/m68k/test.c
|
|
|
|
# Debug usage.
|
|
.c.S:
|
|
${CC} ${CFLAGS_FOR_TARGET} $(INCLUDES) $(CFLAGS) -c $<
|
|
|
|
# Caveat: for the -melinux multilib in cris-axis-aout, crt0.o is the
|
|
# same as lcrt0.o, while elsewhere (other cris-axis-aout multilib and
|
|
# cris-axis-elf) it's crt0.c compiled.
|
|
crt0.o: lcrt0.o crt0.S
|
|
case "${MULTISUBDIR}" in \
|
|
*/elinux) \
|
|
cp -p $< $@; st=$$?;; \
|
|
*) \
|
|
case "$?" in \
|
|
*crt0.S) \
|
|
$(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) $(CFLAGS) -c -xassembler-with-cpp $(srcdir)/crt0.S;; \
|
|
*) touch $@;; \
|
|
esac; \
|
|
st=$$?;; \
|
|
esac; exit $$st
|
|
|
|
crt1.o: lcrt0.o
|
|
cp -p $< $@
|
|
|
|
clean mostlyclean:
|
|
rm -f a.out core *.i *.o *-test *.srec *.dis *.x $(SIM_BSP) $(BSP_BSP) $(LIN_BSP) libnosys.a
|
|
|
|
distclean maintainer-clean realclean: clean
|
|
rm -f Makefile *~
|
|
|
|
.PHONY: install info install-info clean-info
|
|
install: ${SIM_INSTALL} ${BSP_INSTALL} ${LIN_INSTALL}
|
|
|
|
# Note that bsp and elinux objects are exclusive: do not overlap
|
|
# installed files.
|
|
install-bsp:
|
|
${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR}
|
|
case "${MULTISUBDIR}" in \
|
|
*/elinux) ;; \
|
|
*) set -e; \
|
|
for x in ${BSP_CRT0} ${BSP_BSP} ${BSP_SCRIPTS}; do \
|
|
${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; \
|
|
done;; \
|
|
esac
|
|
|
|
install-sim:
|
|
${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR}
|
|
set -e; \
|
|
for x in ${SIM_CRT0} ${SIM_BSP} ${SIM_SCRIPTS}; do \
|
|
${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; \
|
|
done
|
|
|
|
install-lin:
|
|
${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR}
|
|
case "${MULTISUBDIR}" in \
|
|
*/elinux) \
|
|
${INSTALL_DATA} ${LIN_CRT0} $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/crt0.o; \
|
|
set -e; \
|
|
for x in ${LIN_BSP} ${LIN_SCRIPTS}; do \
|
|
${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; \
|
|
done;; \
|
|
*) \
|
|
set -e; \
|
|
for x in ${LIN_BSP} ${LIN_SCRIPTS} ${LIN_EXTRA}; do \
|
|
${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; \
|
|
done;; \
|
|
esac
|
|
|
|
doc:
|
|
info:
|
|
install-info:
|
|
clean-info:
|
|
|
|
Makefile: Makefile.in ../config.status
|
|
cd .. && $(SHELL) config.status
|
|
|
|
$(SYSCALL_CFILES): syscalls.stamp
|
|
|
|
syscalls.stamp: gensyscalls
|
|
$(SHELL) $(srcdir)/gensyscalls
|
|
touch $@
|
|
|
|
# Dependencies that could and should be auto-generated.
|
|
close.o: close.c linunistd.h $(objdir)/../config.h $(srcdir)/../libnosys/warning.h
|
|
execve.o: execve.c linunistd.h $(objdir)/../config.h $(srcdir)/../libnosys/warning.h
|
|
exit.o: exit.c linunistd.h $(objdir)/../config.h $(srcdir)/../libnosys/warning.h
|
|
fork.o: fork.c linunistd.h $(objdir)/../config.h $(srcdir)/../libnosys/warning.h
|
|
fstat.o: fstat.c linunistd.h $(objdir)/../config.h $(srcdir)/../libnosys/warning.h
|
|
fcntl.o: fcntl.c linunistd.h $(objdir)/../config.h $(srcdir)/../libnosys/warning.h
|
|
getpid.o: getpid.c linunistd.h $(objdir)/../config.h $(srcdir)/../libnosys/warning.h
|
|
gettod.o: gettod.c linunistd.h $(objdir)/../config.h $(srcdir)/../libnosys/warning.h
|
|
isatty.o: isatty.c linunistd.h $(objdir)/../config.h $(srcdir)/../libnosys/warning.h
|
|
kill.o: kill.c linunistd.h $(objdir)/../config.h $(srcdir)/../libnosys/warning.h
|
|
link.o: link.c linunistd.h $(objdir)/../config.h $(srcdir)/../libnosys/warning.h
|
|
lseek.o: lseek.c linunistd.h $(objdir)/../config.h $(srcdir)/../libnosys/warning.h
|
|
open.o: open.c linunistd.h $(objdir)/../config.h $(srcdir)/../libnosys/warning.h
|
|
read.o: read.c linunistd.h $(objdir)/../config.h $(srcdir)/../libnosys/warning.h
|
|
rename.o: rename.c linunistd.h $(objdir)/../config.h $(srcdir)/../libnosys/warning.h
|
|
sbrk.o: sbrk.c linunistd.h $(objdir)/../config.h $(srcdir)/../libnosys/warning.h
|
|
stat.o: stat.c linunistd.h $(objdir)/../config.h $(srcdir)/../libnosys/warning.h
|
|
times.o: times.c linunistd.h $(objdir)/../config.h $(srcdir)/../libnosys/warning.h
|
|
unlink.o: unlink.c linunistd.h $(objdir)/../config.h $(srcdir)/../libnosys/warning.h
|
|
wait.o: wait.c linunistd.h $(objdir)/../config.h $(srcdir)/../libnosys/warning.h
|
|
write.o: write.c linunistd.h $(objdir)/../config.h $(srcdir)/../libnosys/warning.h
|
|
lcrt0.o: lcrt0.c linunistd.h $(objdir)/../config.h $(srcdir)/../libnosys/warning.h
|
|
setup.o: setup.S
|
|
irqtable.o: irqtable.S
|
|
crti.o: crti.c
|
|
crtn.o: crtn.c
|