public inbox for newlib@sourceware.org
 help / color / mirror / Atom feed
From: Palmer Dabbelt <palmer@rivosinc.com>
To: newlib@sourceware.org
Cc: Palmer Dabbelt <palmer@rivosinc.com>
Subject: [PATCH] libgloss: riscv: Convert to non-recursive automake
Date: Tue, 23 Aug 2022 16:12:56 -0700	[thread overview]
Message-ID: <20220823231256.7028-1-palmer@rivosinc.com> (raw)

PR 29515 points out our documentation builds are broken, let's just move
over to the new non-recursive builds.

Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
---
I think something as small as adding an empty "html" target could make that bug
report go away, but when poking around I couldn't figure out why our
Makefile.in was so different.  I ended up running into vapier's build system
conversion patches and figured it would be easier to just throw away our
current build configuration rather than trying to figure out how it works.

This builds for me and the resulting libraries look generally OK, but I don't
personally use newlib right now so I don't have anything specific setup for
testing.

I haven't included the generated files from running autoconf/automake as I'm
getting a lot of diff right now due to some version mis-matches on my
development box.  If folks like this then I'm happy to sort that out, just
figured I'd send something along now to see if this is the right way to go --
it's a lot of diff just to make "make html" work, but as far as I can tell the
plan is to convert all subdirs over eventually so it seems sane to me.
---
 libgloss/Makefile.am        |   3 +
 libgloss/configure.ac       |   5 +-
 libgloss/riscv/Makefile.in  | 330 ------------------------------------
 libgloss/riscv/Makefile.inc |  71 ++++++++
 4 files changed, 76 insertions(+), 333 deletions(-)
 delete mode 100644 libgloss/riscv/Makefile.in
 create mode 100644 libgloss/riscv/Makefile.inc

diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am
index 43da838f0..5464eb8bd 100644
--- a/libgloss/Makefile.am
+++ b/libgloss/Makefile.am
@@ -71,6 +71,9 @@ endif
 if CONFIG_LM32
 include lm32/Makefile.inc
 endif
+if CONFIG_RISCV
+include riscv/Makefile.inc
+endif
 if CONFIG_WINCE
 include wince/Makefile.inc
 endif
diff --git a/libgloss/configure.ac b/libgloss/configure.ac
index 3d8d2b031..b683ef65d 100644
--- a/libgloss/configure.ac
+++ b/libgloss/configure.ac
@@ -97,8 +97,7 @@ case "${target}" in
 	target_makefile_frag=${srcdir}/config/mips.mt
 	;;
   riscv*-*-*)
-	AC_CONFIG_FILES([riscv/Makefile])
-	subdirs="$subdirs riscv"
+	config_riscv=true
 	;;
   powerpc-*-*|powerpcle-*-*)
 	AC_CONFIG_FILES([rs6000/Makefile])
@@ -239,7 +238,7 @@ esac
 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 wince
+  bfin iq2000 libnosys lm32 riscv wince
 ], [dnl
   AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue)
 ])
diff --git a/libgloss/riscv/Makefile.in b/libgloss/riscv/Makefile.in
deleted file mode 100644
index 44891a096..000000000
--- a/libgloss/riscv/Makefile.in
+++ /dev/null
@@ -1,330 +0,0 @@
-#-------------------------------------------------------------------------
-# Source files
-#-------------------------------------------------------------------------
-
-gloss_hdrs = \
-	machine/syscall.h \
-
-gloss_srcs = \
-	nanosleep.c \
-	sys_access.c \
-	sys_chdir.c \
-	sys_chmod.c \
-	sys_chown.c \
-	sys_close.c \
-	sys_conv_stat.c \
-	sys_execve.c \
-	sys_exit.c \
-	sys_faccessat.c \
-	sys_fork.c \
-	sys_fstatat.c \
-	sys_fstat.c \
-	sys_ftime.c \
-	sys_getcwd.c \
-	sys_getpid.c \
-	sys_gettimeofday.c \
-	sys_isatty.c \
-	sys_kill.c \
-	sys_link.c \
-	sys_lseek.c \
-	sys_lstat.c \
-	sys_openat.c \
-	sys_open.c \
-	sys_read.c \
-	sys_sbrk.c \
-	sys_stat.c \
-	sys_sysconf.c \
-	sys_times.c \
-	sys_unlink.c \
-	sys_utime.c \
-	sys_wait.c \
-	sys_write.c 
-
-# libsemihost reuses some of the libgloss minimal implementations
-
-semihost_srcs = \
-	nanosleep.c \
-	sys_chdir.c \
-	sys_chmod.c \
-	sys_chown.c \
-	sys_execve.c \
-	sys_fork.c \
-	sys_getcwd.c \
-	sys_getpid.c \
-	sys_kill.c \
-	sys_utime.c \
-	sys_wait.c \
-	semihost-sys_close.c \
-	semihost-sys_exit.c \
-	semihost-sys_fdtable.c \
-	semihost-sys_fstat.c \
-	semihost-sys_ftime.c \
-	semihost-sys_isatty.c \
-	semihost-sys_link.c \
-	semihost-sys_lseek.c \
-	semihost-sys_open.c \
-	semihost-sys_read.c \
-	semihost-sys_sbrk.c \
-	semihost-sys_stat.c \
-	semihost-sys_stat_common.c \
-	semihost-sys_unlink.c \
-	semihost-sys_write.c
-
-gloss_specs = \
-	nano.specs sim.specs semihost.specs
-
-# Extra files
-
-crt0_asm      = crt0.S
-
-# Multilib support variables.
-# TOP is used instead of MULTI{BUILD,SRC}TOP.
-
-MULTIDIRS =
-MULTISUBDIR =
-MULTIDO = true
-MULTICLEAN = true
-
-#-------------------------------------------------------------------------
-# Basic setup
-#-------------------------------------------------------------------------
-
-# Remove all default implicit rules since they can cause subtle bugs
-# and they just make things run slower
-
-.SUFFIXES:
-% : %,v
-% : RCS/%,v
-% : RCS/%
-% : s.%
-% : SCCS/s.%
-
-# Default is to build the prereqs of the all target (defined at bottom)
-
-default : all
-.PHONY : default
-
-# Source directory
-
-obj_dir := .
-src_dir := @srcdir@
-VPATH   := $(src_dir) $(src_dir)/machine
-
-# Installation directories
-
-prefix  := @prefix@
-DESTDIR ?= $(prefix)
-
-install_hdrs_dir := $(DESTDIR)$(prefix)/$(target_alias)/include/machine
-install_libs_dir  = $(DESTDIR)$(prefix)/$(target_alias)/lib${MULTISUBDIR}
-
-#-------------------------------------------------------------------------
-# Programs and flags 
-#-------------------------------------------------------------------------
-
-# C compiler
-
-CC            := @CC@
-CFLAGS        := @CFLAGS@
-CPPFLAGS      := -I$(obj_dir) -I$(src_dir)
-COMPILE       := $(CC) -MMD -MP $(CPPFLAGS) $(CFLAGS)
-
-# Library creation
-
-AR            := @AR@
-RANLIB        := @RANLIB@
-
-# Installation
-
-INSTALL       := @INSTALL@
-INSTALL_DATA  := @INSTALL_DATA@
-
-#-------------------------------------------------------------------------
-# Build Object Files from C Source
-#-------------------------------------------------------------------------
-
-gloss_c_srcs = $(filter %.c, $(gloss_srcs))
-gloss_c_objs = $(patsubst %.c, %.o, $(notdir $(gloss_c_srcs)))
-gloss_c_deps = $(patsubst %.c, %.d, $(notdir $(gloss_c_srcs)))
-
-$(gloss_c_objs) : %.o : %.c
-	$(COMPILE) -c $<
-
-gloss_objs += $(gloss_c_objs)
-deps += $(gloss_c_deps)
-junk += $(gloss_c_deps) $(gloss_c_objs)
-
-sim_c_objs = $(patsubst %.c, sim-%.o, $(notdir $(gloss_c_srcs)))
-sim_c_deps = $(patsubst %.c, sim-%.d, $(notdir $(gloss_c_srcs)))
-
-$(sim_c_objs): sim-%.o : %.c
-	$(COMPILE) -c -DUSING_SIM_SPECS -o $@ $<
-
-sim_objs += $(sim_c_objs)
-deps += $(sim_c_deps)
-junk += $(sim_c_deps) $(sim_c_objs)
-
-semihost_c_srcs = $(filter %.c, $(semihost_srcs))
-semihost_c_objs = $(patsubst %.c, semihost-%.o, $(notdir $(semihost_c_srcs)))
-semihost_c_deps = $(patsubst %.c, semihost-%.d, $(notdir $(semihost_c_srcs)))
-
-$(semihost_c_objs): semihost-%.o : %.c
-	$(COMPILE) -c -o $@ $<
-
-semihost_objs += $(semihost_c_objs)
-deps += $(semihost_c_deps)
-junk += $(semihost_c_deps) $(semihost_c_objs)
-
-#-------------------------------------------------------------------------
-# Build Object Files from Assembly Source
-#-------------------------------------------------------------------------
-
-gloss_asm_srcs = $(filter %.S, $(gloss_srcs))
-gloss_asm_objs = $(patsubst %.S, %.o, $(notdir $(gloss_asm_srcs)))
-gloss_asm_deps = $(patsubst %.S, %.d, $(notdir $(gloss_asm_srcs)))
-
-$(gloss_asm_objs) : %.o : %.S
-	$(COMPILE) -c -o $@ $<
-
-gloss_objs += $(gloss_asm_objs)
-deps += $(gloss_asm_deps)
-junk += $(gloss_asm_deps) $(gloss_asm_objs)
-
-sim_asm_objs = $(patsubst %.S, sim-%.o, $(notdir $(gloss_asm_srcs)))
-sim_asm_deps = $(patsubst %.S, sim-%.d, $(notdir $(gloss_asm_srcs)))
-
-$(sim_asm_objs) : sim-%.o : %.S
-	$(COMPILE) -c -DUSING_SIM_SPECS -o $@ $<
-
-sim_objs += $(sim_asm_objs)
-deps += $(sim_asm_deps)
-junk += $(sim_asm_deps) $(sim_asm_objs)
-
-semihost_asm_objs = $(patsubst %.S, semihost-%.o, $(notdir $(gloss_asm_srcs)))
-semihost_asm_deps = $(patsubst %.S, semihost-%.d, $(notdir $(gloss_asm_srcs)))
-
-$(semihost_asm_objs) : semihost-%.o : %.S
-	$(COMPILE) -c -DUSING_SEMIHOST_SPECS -o $@ $<
-
-semihost_objs += $(semihost_asm_objs)
-deps += $(semihost_asm_deps)
-junk += $(semihost_asm_deps) $(semihost_asm_objs)
-
-#-------------------------------------------------------------------------
-# Build libgloss.a
-#-------------------------------------------------------------------------
-
-gloss_lib  = libgloss.a
-$(gloss_lib) : $(gloss_objs)
-	$(AR) rcv $@ $^
-	$(RANLIB) $@
-
-junk += $(gloss_lib)
-
-install_hdrs += $(gloss_hdrs)
-install_libs += $(gloss_lib)
-install_specs += $(gloss_specs)
-
-#-------------------------------------------------------------------------
-# Build libsim.a
-#-------------------------------------------------------------------------
-
-sim_lib  = libsim.a
-$(sim_lib) : $(sim_objs)
-	$(AR) rcv $@ $^
-	$(RANLIB) $@
-
-junk += $(sim_lib)
-
-install_libs += $(sim_lib)
-
-#-------------------------------------------------------------------------
-# Build libsemihost.a
-#-------------------------------------------------------------------------
-
-semihost_lib  = libsemihost.a
-$(semihost_lib) : $(semihost_objs)
-	$(AR) rcv $@ $^
-	$(RANLIB) $@
-
-junk += $(semihost_lib)
-
-install_libs += $(semihost_lib)
-
-#-------------------------------------------------------------------------
-# Build crt0.o
-#-------------------------------------------------------------------------
-
-crt0_obj  = $(patsubst %.S, %.o, $(crt0_asm))
-crt0_deps = $(patsubst %.S, %.d, $(crt0_asm))
-
-$(crt0_obj) : %.o : %.S
-	$(COMPILE) -c $<
-
-deps += $(crt0_deps)
-junk += $(crt0_deps) $(crt0_obj)
-
-install_libs += $(crt0_obj)
-
-#-------------------------------------------------------------------------
-# Autodependency files
-#-------------------------------------------------------------------------
-
--include $(deps)
-
-deps : $(deps)
-.PHONY : deps
-
-#-------------------------------------------------------------------------
-# Installation
-#-------------------------------------------------------------------------
-
-install_hdrs_wdir += $(addprefix $(src_dir)/, $(install_hdrs))
-install-hdrs : $(install_hdrs_wdir)
-	test -d $(install_hdrs_dir) || mkdir -p $(install_hdrs_dir)
-	for file in $^; do \
-		$(INSTALL_DATA) $$file $(install_hdrs_dir)/; \
-	done
-
-install-libs : $(install_libs)
-	test -d $(install_libs_dir) || mkdir -p $(install_libs_dir)
-	for file in $^; do \
-		$(INSTALL_DATA) $$file $(install_libs_dir)/$$file; \
-	done
-
-install-specs : $(install_specs)
-	test -d $(install_libs_dir) || mkdir -p $(install_libs_dir)
-	for file in $^; do \
-		$(INSTALL_DATA) $$file $(install_libs_dir)/; \
-	done
-
-install : install-hdrs install-libs install-specs
-.PHONY : install install-hdrs install-libs
-
-#-------------------------------------------------------------------------
-# Regenerate configure information
-#-------------------------------------------------------------------------
-
-Makefile : $(src_dir)/Makefile.in ../config.status
-	cd .. && $(SHELL) config.status
-
-dist_junk += Makefile
-
-#-------------------------------------------------------------------------
-# Default
-#-------------------------------------------------------------------------
-
-all : $(install_libs)
-.PHONY : all
-
-#-------------------------------------------------------------------------
-# Clean up junk
-#-------------------------------------------------------------------------
-
-clean :
-	rm -rf *~ \#* $(junk)
-
-distclean :
-	rm -rf *~ \#* $(junk) $(dist_junk)
-
-.PHONY : clean distclean
diff --git a/libgloss/riscv/Makefile.inc b/libgloss/riscv/Makefile.inc
new file mode 100644
index 000000000..5341038b3
--- /dev/null
+++ b/libgloss/riscv/Makefile.inc
@@ -0,0 +1,71 @@
+multilibtool_DATA += \
+	%D%/nano.specs \
+	%D%/sim.specs \
+	%D%/semihost.specs \
+	%D%/crt0.o
+
+multilibtool_LIBRARIES += %D%/libgloss.a
+%C%_libgloss_a_CPPFLAGS = -I$(srcdir)/%D%
+%C%_libgloss_a_SOURCES = \
+	%D%/sys_access.c \
+	%D%/sys_chdir.c \
+	%D%/sys_chmod.c \
+	%D%/sys_chown.c \
+	%D%/sys_close.c \
+	%D%/sys_conv_stat.c \
+	%D%/sys_execve.c \
+	%D%/sys_exit.c \
+	%D%/sys_faccessat.c \
+	%D%/sys_fork.c \
+	%D%/sys_fstat.c \
+	%D%/sys_fstatat.c \
+	%D%/sys_ftime.c \
+	%D%/sys_getcwd.c \
+	%D%/sys_getpid.c \
+	%D%/sys_gettimeofday.c \
+	%D%/sys_isatty.c \
+	%D%/sys_kill.c \
+	%D%/sys_link.c \
+	%D%/sys_lseek.c \
+	%D%/sys_lstat.c \
+	%D%/sys_open.c \
+	%D%/sys_openat.c \
+	%D%/sys_read.c \
+	%D%/sys_sbrk.c \
+	%D%/sys_stat.c \
+	%D%/sys_sysconf.c \
+	%D%/sys_times.c \
+	%D%/sys_unlink.c \
+	%D%/sys_utime.c \
+	%D%/sys_wait.c \
+	%D%/sys_write.c
+
+multilibtool_LIBRARIES += %D%/libsemihost.a
+%C%_libsemihost_a_CPPFLAGS = -I$(srcdir)/%D%
+%C%_libsemihost_a_SOURCES = \
+	%D%/nanosleep.c \
+	%D%/sys_chdir.c \
+	%D%/sys_chmod.c \
+	%D%/sys_chown.c \
+	%D%/sys_execve.c \
+	%D%/sys_fork.c \
+	%D%/sys_getcwd.c \
+	%D%/sys_getpid.c \
+	%D%/sys_kill.c \
+	%D%/sys_utime.c \
+	%D%/sys_wait.c \
+	%D%/semihost-sys_close.c \
+	%D%/semihost-sys_exit.c \
+	%D%/semihost-sys_fdtable.c \
+	%D%/semihost-sys_fstat.c \
+	%D%/semihost-sys_ftime.c \
+	%D%/semihost-sys_isatty.c \
+	%D%/semihost-sys_link.c \
+	%D%/semihost-sys_lseek.c \
+	%D%/semihost-sys_open.c \
+	%D%/semihost-sys_read.c \
+	%D%/semihost-sys_sbrk.c \
+	%D%/semihost-sys_stat.c \
+	%D%/semihost-sys_stat_common.c \
+	%D%/semihost-sys_unlink.c \
+	%D%/semihost-sys_write.c
-- 
2.34.1


             reply	other threads:[~2022-08-23 23:17 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-23 23:12 Palmer Dabbelt [this message]
2022-08-26 14:49 ` Corinna Vinschen
2022-08-26 14:51   ` Palmer Dabbelt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220823231256.7028-1-palmer@rivosinc.com \
    --to=palmer@rivosinc.com \
    --cc=newlib@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).