[PATCH 1/4] libgloss: merge aarch64 into top-level Makefile

Mike Frysinger <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
Avoid a recursive make to speed things up a bit.
---
 libgloss/Makefile.am                   |   4 +
 libgloss/Makefile.in                   | 333 ++++++++++++++++++++-----
 libgloss/aarch64/Makefile.in           | 166 ------------
 libgloss/aarch64/Makefile.inc          |  34 +++
 libgloss/aarch64/cpu-init/Makefile.in  | 107 --------
 libgloss/aarch64/cpu-init/Makefile.inc |  20 ++
 libgloss/configure                     |  20 +-
 libgloss/configure.ac                  |   5 +-
 8 files changed, 342 insertions(+), 347 deletions(-)
 delete mode 100644 libgloss/aarch64/Makefile.in
 create mode 100644 libgloss/aarch64/Makefile.inc
 delete mode 100644 libgloss/aarch64/cpu-init/Makefile.in
 create mode 100644 libgloss/aarch64/cpu-init/Makefile.inc

diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am
index 5464eb8bdb81..5b5f0fd541ae 100644
--- a/libgloss/Makefile.am
+++ b/libgloss/Makefile.am
@@ -6,6 +6,7 @@ ACLOCAL_AMFLAGS = -I . -I .. -I ../config
 bin_PROGRAMS =
 check_PROGRAMS =
 info_TEXINFOS =
+CLEANFILES =
 PHONY =
 
 SUBDIRS = @subdirs@ .
@@ -59,6 +60,9 @@ TEXINFO_TEX = ../texinfo/texinfo.tex
 if HAVE_DOC
 include doc/Makefile.inc
 endif
+if CONFIG_AARCH64
+include aarch64/Makefile.inc
+endif
 if CONFIG_BFIN
 include bfin/Makefile.inc
 endif
diff --git a/libgloss/aarch64/Makefile.in b/libgloss/aarch64/Makefile.in
deleted file mode 100644
index 980c75858da3..000000000000
--- a/libgloss/aarch64/Makefile.in
+++ /dev/null
@@ -1,166 +0,0 @@
-#  Copyright (c) 2012 ARM Ltd.  All rights reserved.
-#
-#  Redistribution and use in source and binary forms, with or without
-#  modification, are permitted provided that the following conditions
-#  are met:
-#  1. Redistributions of source code must retain the above copyright
-#     notice, this list of conditions and the following disclaimer.
-#  2. Redistributions in binary form must reproduce the above copyright
-#     notice, this list of conditions and the following disclaimer in the
-#     documentation and/or other materials provided with the distribution.
-#  3. The name of the company may not be used to endorse or promote
-#     products derived from this software without specific prior written
-#     permission.
-#
-#  THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
-#  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-#  IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-#  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
-#  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-#  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-#  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-#  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-#  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-DESTDIR =
-VPATH = @srcdir@ @srcdir@/..
-srcdir = @srcdir@
-abs_srcdir = @abs_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)
-
-objtype = @AARCH64_OBJTYPE@
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-
-# Multilib support variables.
-# TOP is used instead of MULTI{BUILD,SRC}TOP.
-MULTISRCTOP =
-MULTIBUILDTOP =
-MULTIDIRS =
-MULTISUBDIR =
-MULTIDO = true
-MULTICLEAN = true
-
-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`
-
-OBJS = ftruncate.o libcfunc.o syscalls.o truncate.o _exit.o _kill.o
-CRT0		= crt0.o
-CRT0_INSTALL	= install-crt0
-
-RDIMON_CRT0	= rdimon-crt0.o
-RDIMON_BSP	= librdimon.a
-RDIMON_OBJS	= $(patsubst %,rdimon-%,$(OBJS))
-RDIMON_SCRIPTS	= rdimon.specs \
-		  aem-ve.specs \
-		  aem-validation.specs \
-		  aem-v8-r.specs
-RDIMON_INSTALL	= install-rdimon
-
-# Host specific makefile fragment comes in here.
-@host_makefile_frag@
-
-#
-# 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.
-#
-
-all: ${CRT0} ${RDIMON_CRT0} ${RDIMON_BSP} ${RDIMON_SCRIPTS}
-
-#
-# here's where we build the test programs for each target
-#
-.PHONY: test
-test:
-
-#
-crt0.o: crt0.S
-	$(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -o $@ -c $<
-
-rdimon-crt0.o: crt0.S
-	$(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $<
-
-#rdimon-trap.o: trap.S
-#	$(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $<
-
-rdimon-_exit.o: _exit.c
-	$(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $<
-
-rdimon-ftruncate.o: ftruncate.c
-	$(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $<
-
-rdimon-_kill.o: _kill.c
-	$(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $<
-
-rdimon-libcfunc.o: libcfunc.c
-	$(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $<
-
-rdimon-syscalls.o: syscalls.c
-	$(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $<
-
-rdimon-truncate.o: truncate.c
-	$(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $<
-
-$(RDIMON_BSP): $(RDIMON_OBJS)
-	${AR} ${ARFLAGS} $@ $^
-	${RANLIB} $@
-
-clean mostlyclean:
-	rm -f a.out core *.i *.o *-test *.srec *.dis *.x $(SIM_BSP) ${RDIMON_SCRIPTS}
-
-distclean maintainer-clean realclean: clean
-	rm -f Makefile *~
-
-.PHONY: install info install-info clean-info
-install: ${CRT0_INSTALL} ${RDIMON_INSTALL}
-
-install-crt0:
-	${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR}
-	${INSTALL_DATA} ${CRT0} $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x
-
-install-rdimon:
-	${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR}
-	set -e; for x in ${RDIMON_CRT0} ${RDIMON_BSP}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done
-	set -e; for x in ${RDIMON_SCRIPTS}; do ${INSTALL_DATA} ${srcdir}/${objtype}$$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done
-
-# Make copies of the scripts to facilitate in-tree bootstrapping.
-${RDIMON_SCRIPTS}: %: ${objtype}%
-	cp $< $@
-
-doc:
-info:
-install-info:
-clean-info:
-
-Makefile: Makefile.in ../config.status
-	cd .. && $(SHELL) config.status
diff --git a/libgloss/aarch64/Makefile.inc b/libgloss/aarch64/Makefile.inc
new file mode 100644
index 000000000000..b9c8d983366b
--- /dev/null
+++ b/libgloss/aarch64/Makefile.inc
@@ -0,0 +1,34 @@
+multilibtool_LIBRARIES += %D%/librdimon.a
+%C%_librdimon_a_SOURCES = \
+	%D%/_exit.c \
+	%D%/_kill.c \
+	%D%/ftruncate.c \
+	%D%/libcfunc.c \
+	%D%/syscalls.c \
+	%D%/truncate.c
+%C%_librdimon_a_CPPFLAGS = \
+	$(AM_CPPFLAGS) \
+	-DSEMIHOST_V2 -DARM_RDI_MONITOR
+
+%C%_SPECS = \
+	%D%/aem-v8-r.specs \
+	%D%/aem-validation.specs \
+	%D%/aem-ve.specs \
+	%D%/rdimon.specs
+multilibtool_DATA += \
+	%D%/crt0.o \
+	%D%/rdimon-crt0.o \
+	$(%C%_SPECS)
+
+%D%/crt0.$(OBJEXT): %D%/crt0.S
+	$(AM_V_CPPAS)$(CPPASCOMPILE) -DSEMIHOST_V2 -o $@ -c $<
+%D%/rdimon-crt0.$(OBJEXT): %D%/crt0.S
+	$(AM_V_CPPAS)$(CPPASCOMPILE) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $<
+
+## Make copies of the scripts to facilitate in-tree bootstrapping.
+%D%/%.specs: %D%/$(AARCH64_OBJTYPE)%.specs
+	$(AM_V_GEN)cp $< $@
+
+CLEANFILES += $(%C%_SPECS)
+
+include %D%/cpu-init/Makefile.inc
diff --git a/libgloss/aarch64/cpu-init/Makefile.in b/libgloss/aarch64/cpu-init/Makefile.in
deleted file mode 100644
index 4aef917ebe5a..000000000000
--- a/libgloss/aarch64/cpu-init/Makefile.in
+++ /dev/null
@@ -1,107 +0,0 @@
-#  Copyright (c) 2012 ARM Ltd.  All rights reserved.
-#
-#  Redistribution and use in source and binary forms, with or without
-#  modification, are permitted provided that the following conditions
-#  are met:
-#  1. Redistributions of source code must retain the above copyright
-#     notice, this list of conditions and the following disclaimer.
-#  2. Redistributions in binary form must reproduce the above copyright
-#     notice, this list of conditions and the following disclaimer in the
-#     documentation and/or other materials provided with the distribution.
-#  3. The name of the company may not be used to endorse or promote
-#     products derived from this software without specific prior written
-#     permission.
-#
-#  THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
-#  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-#  IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-#  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
-#  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-#  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-#  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-#  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-#  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-DESTDIR =
-VPATH = @srcdir@ @srcdir@/.. @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.
-MULTISRCTOP =
-MULTIBUILDTOP =
-MULTIDIRS =
-MULTISUBDIR =
-MULTIDO = true
-MULTICLEAN = true
-
-SHELL =	/bin/sh
-
-CC = @CC@
-
-AS = @AS@
-AR = @AR@
-LD = @LD@
-RANLIB = @RANLIB@
-
-CPU_INIT_OBJS = rdimon-aem-el3.o rdimon-aem-v8-r.o
-CPU_INIT_INSTALL = install-cpu-init
-
-CFLAGS		= -g
-
-# Host specific makefile fragment comes in here.
-@host_makefile_frag@
-
-.PHONY: all
-all: ${CPU_INIT_OBJS}
-
-#
-# here's where we build the test programs for each target
-#
-.PHONY: test
-test:
-
-rdimon-aem-el3.o : rdimon-aem-el3.S
-	$(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
-
-rdimon-aem-v8-r.o : rdimon-aem-el3.S
-	$(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -DBUILD_FOR_R_PROFILE -o $@ -c $<
-
-clean mostlyclean:
-	rm -f a.out core *.i *.o *-test *.srec *.dis *.x
-
-distclean maintainer-clean realclean: clean
-	rm -f Makefile *~
-
-.PHONY: install info install-info clean-info
-install: ${CPU_INIT_INSTALL}
-
-install-cpu-init:
-	test -d $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/cpu-init || mkdir $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/cpu-init
-	set -e; for x in ${CPU_INIT_OBJS}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/cpu-init/$$x; done
-
-doc:
-info:
-install-info:
-clean-info:
-
-Makefile: Makefile.in ../../config.status
-	cd ../.. && $(SHELL) ./config.status --file aarch64/cpu-init/Makefile
diff --git a/libgloss/aarch64/cpu-init/Makefile.inc b/libgloss/aarch64/cpu-init/Makefile.inc
new file mode 100644
index 000000000000..031369ee7e13
--- /dev/null
+++ b/libgloss/aarch64/cpu-init/Makefile.inc
@@ -0,0 +1,20 @@
+%C%_CPPFLAGS = -I$(srcdir)/%D%/..
+
+%C%cpuinitdir = $(tooldir)/lib$(MULTISUBDIR)/cpu-init
+%C%cpuinit_DATA = \
+	%D%/rdimon-aem-el3.o \
+	%D%/rdimon-aem-v8-r.o
+
+## The manual dirstamp is needed as automake doesn't recognize compile rules
+## via DATA.  If we ever add rules it does know about, we can drop this.
+%D%/$(am__dirstamp):
+	@$(MKDIR_P) %D%
+	@: > $@
+
+%D%/rdimon-aem-el3.$(OBJEXT): %D%/rdimon-aem-el3.S %D%/$(am__dirstamp)
+	$(AM_V_CC)$(COMPILE) $(%C%_CPPFLAGS) -DARM_RDI_MONITOR -o $@ -c $<
+
+%D%/rdimon-aem-v8-r.$(OBJEXT): %D%/rdimon-aem-el3.S %D%/$(am__dirstamp)
+	$(AM_V_CC)$(COMPILE) $(%C%_CPPFLAGS) -DARM_RDI_MONITOR -DBUILD_FOR_R_PROFILE -o $@ -c $<
+
+CLEANFILES += $(%C%cpuinit_DATA)
diff --git a/libgloss/configure.ac b/libgloss/configure.ac
index 9906781a722f..33026534ffee 100644
--- a/libgloss/configure.ac
+++ b/libgloss/configure.ac
@@ -46,8 +46,7 @@ target_makefile_frag=${srcdir}/config/default.mt
 
 case "${target}" in
   aarch64*-*-*)
-	AC_CONFIG_FILES([aarch64/Makefile aarch64/cpu-init/Makefile])
-	subdirs="$subdirs aarch64 aarch64/cpu-init"
+	config_aarch64=true
 	config_testsuite=true
 	;;
   arc*-*-*)
@@ -251,7 +250,7 @@ AC_SUBST(subdirs)
 dnl These subdirs have converted to non-recursive make.  Hopefully someday all
 dnl the ports above will too!
 m4_foreach_w([SUBDIR], [
-  bfin iq2000 libnosys lm32 riscv wince
+  aarch64 bfin iq2000 libnosys lm32 riscv wince
 ], [dnl
   AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue)
 ])
-- 
2.38.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.