public inbox for newlib-cvs@sourceware.org
help / color / mirror / Atom feed
From: Jeff Johnston <jjohnstn@sourceware.org>
To: newlib-cvs@sourceware.org
Subject: [newlib-cygwin] Fix libgloss/newlib build to conditionally use top include dir
Date: Wed, 22 Feb 2023 21:02:55 +0000 (GMT)	[thread overview]
Message-ID: <20230222210255.16F803858D33@sourceware.org> (raw)

https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=17ac400c11bab30ac2c0bef12cbf7788f0b6f954

commit 17ac400c11bab30ac2c0bef12cbf7788f0b6f954
Author: Jeff Johnston <jjohnstn@redhat.com>
Date:   Thu Feb 9 16:59:31 2023 -0500

    Fix libgloss/newlib build to conditionally use top include dir
    
    - conditionally use -idirafter option for arm

Diff:
---
 libgloss/Makefile.am       |  4 ++++
 libgloss/Makefile.in       |  3 ++-
 libgloss/config/arm.mh     | 34 ++++++++++++++++++++++++++++++++++
 libgloss/config/default.mh |  2 +-
 libgloss/configure         | 16 ++++++++++++++++
 libgloss/configure.ac      |  4 ++++
 newlib/Makefile.am         |  4 ++++
 newlib/Makefile.in         |  3 ++-
 8 files changed, 67 insertions(+), 3 deletions(-)

diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am
index 4309cd3a4..d4b7d4077 100644
--- a/libgloss/Makefile.am
+++ b/libgloss/Makefile.am
@@ -24,7 +24,11 @@ includetool_DATA =
 includesystooldir = $(tooldir)/include/sys
 includesystool_DATA =
 
+if NEED_TOP_INCLUDE_DIR
 AM_CPPFLAGS = -idirafter $(srcroot)/include
+else
+AM_CPPFLAGS =
+endif
 
 # A fake library so automake will generate rules for plain objects that we want
 # to install (e.g. our crt0.o objects).
diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in
index a117577ea..187d0edb0 100644
--- a/libgloss/Makefile.in
+++ b/libgloss/Makefile.in
@@ -807,7 +807,8 @@ includetooldir = $(tooldir)/include
 includetool_DATA = $(am__append_16)
 includesystooldir = $(tooldir)/include/sys
 includesystool_DATA = $(am__append_17)
-AM_CPPFLAGS = -idirafter $(srcroot)/include
+@NEED_TOP_INCLUDE_DIR_FALSE@AM_CPPFLAGS = 
+@NEED_TOP_INCLUDE_DIR_TRUE@AM_CPPFLAGS = -idirafter $(srcroot)/include
 
 # A fake library so automake will generate rules for plain objects that we want
 # to install (e.g. our crt0.o objects).
diff --git a/libgloss/config/arm.mh b/libgloss/config/arm.mh
new file mode 100644
index 000000000..81f0920f9
--- /dev/null
+++ b/libgloss/config/arm.mh
@@ -0,0 +1,34 @@
+NEWLIB_CFLAGS = `if [ -d ${objroot}/newlib ]; then echo -I${objroot}/newlib/targ-include -I${srcroot}/newlib/libc/include; fi`
+NEWLIB_LDFLAGS = `if [ -d ${objroot}/newlib ]; then echo -B${objroot}/newlib/ -L${objroot}/newlib/; fi`
+
+INCLUDES = -I. -I$(srcdir)/.. -I$(objdir)/.. -idirafter $(srcroot)/include
+# Note that when building the library, ${MULTILIB} is not the way multilib
+# options are passed; they're passed in $(CFLAGS).
+CFLAGS_FOR_TARGET = -O2 -g ${MULTILIB} ${INCLUDES} ${NEWLIB_CFLAGS}
+LDFLAGS_FOR_TARGET = ${MULTILIB} ${NEWLIB_LDFLAGS}
+AR_FLAGS = rc
+
+.c.o:
+	$(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $<
+
+.C.o:
+	$(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $<
+.s.o:
+	$(AS) $(ASFLAGS_FOR_TARGET) $(INCLUDES) $(ASFLAGS) -o $*.o $<
+
+#
+# GCC knows to run the preprocessor on .S files before it assembles them.
+#
+.S.o:
+	$(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) $(CFLAGS) -c $<
+
+#
+# this is a bogus target that'll produce an assembler from the
+# C source with the right compiler options. this is so we can
+# track down code generation or debug symbol bugs.
+#
+.c.s:
+	$(CC) $(CFLAGS_FOR_TARGET) -S $(INCLUDES) $(CFLAGS) $<
+
+# We don't build docs in subdirs, so stub out the rules.
+.PHONY: doc docs dvi html install-html info install-info clean-info pdf install-pdf
diff --git a/libgloss/config/default.mh b/libgloss/config/default.mh
index 81f0920f9..4e7f106f9 100644
--- a/libgloss/config/default.mh
+++ b/libgloss/config/default.mh
@@ -1,7 +1,7 @@
 NEWLIB_CFLAGS = `if [ -d ${objroot}/newlib ]; then echo -I${objroot}/newlib/targ-include -I${srcroot}/newlib/libc/include; fi`
 NEWLIB_LDFLAGS = `if [ -d ${objroot}/newlib ]; then echo -B${objroot}/newlib/ -L${objroot}/newlib/; fi`
 
-INCLUDES = -I. -I$(srcdir)/.. -I$(objdir)/.. -idirafter $(srcroot)/include
+INCLUDES = -I. -I$(srcdir)/.. -I$(objdir)/..
 # Note that when building the library, ${MULTILIB} is not the way multilib
 # options are passed; they're passed in $(CFLAGS).
 CFLAGS_FOR_TARGET = -O2 -g ${MULTILIB} ${INCLUDES} ${NEWLIB_CFLAGS}
diff --git a/libgloss/configure b/libgloss/configure
index 28754b6d5..c07610411 100755
--- a/libgloss/configure
+++ b/libgloss/configure
@@ -630,6 +630,8 @@ CPPFLAGS
 LDFLAGS
 CFLAGS
 CC
+NEED_TOP_INCLUDE_DIR_FALSE
+NEED_TOP_INCLUDE_DIR_TRUE
 CONFIG_WINCE_FALSE
 CONFIG_WINCE_TRUE
 CONFIG_RISCV_FALSE
@@ -2949,6 +2951,7 @@ case "${target}" in
 	;;
   arm*-*-elf | arm*-*-coff | arm*-*-*)
 	config_arm=true
+	host_makefile_frag=${srcdir}/config/arm.mh
 	;;
   spu-*-elf)
 	ac_config_files="$ac_config_files spu/Makefile"
@@ -3081,6 +3084,15 @@ fi
 
 
 
+ if test x$config_arm = xtrue; then
+  NEED_TOP_INCLUDE_DIR_TRUE=
+  NEED_TOP_INCLUDE_DIR_FALSE='#'
+else
+  NEED_TOP_INCLUDE_DIR_TRUE='#'
+  NEED_TOP_INCLUDE_DIR_FALSE=
+fi
+
+
 
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -5347,6 +5359,10 @@ if test -z "${CONFIG_WINCE_TRUE}" && test -z "${CONFIG_WINCE_FALSE}"; then
   as_fn_error $? "conditional \"CONFIG_WINCE\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${NEED_TOP_INCLUDE_DIR_TRUE}" && test -z "${NEED_TOP_INCLUDE_DIR_FALSE}"; then
+  as_fn_error $? "conditional \"NEED_TOP_INCLUDE_DIR\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
   as_fn_error $? "conditional \"AMDEP\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
diff --git a/libgloss/configure.ac b/libgloss/configure.ac
index 5fb26845c..a332193ce 100644
--- a/libgloss/configure.ac
+++ b/libgloss/configure.ac
@@ -214,6 +214,7 @@ case "${target}" in
 	;;
   arm*-*-elf | arm*-*-coff | arm*-*-*)
 	config_arm=true
+	host_makefile_frag=${srcdir}/config/arm.mh
 	;;
   spu-*-elf)
 	AC_CONFIG_FILES([spu/Makefile])
@@ -252,6 +253,9 @@ m4_foreach_w([SUBDIR], [
   AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue)
 ])
 
+dnl arm platforms have a special header file found in the main include directory
+AM_CONDITIONAL([NEED_TOP_INCLUDE_DIR], [[test x$config_arm] = xtrue])
+
 dnl For now, don't bother configuring testsuite
 dnl
 dnl if test "${config_testsuite}" = "true";
diff --git a/newlib/Makefile.am b/newlib/Makefile.am
index 3bebf27eb..a188845d6 100644
--- a/newlib/Makefile.am
+++ b/newlib/Makefile.am
@@ -70,7 +70,11 @@ toollibdir = $(tooldir)/lib$(MULTISUBDIR)
 # These are useful for standalone object files like crt0.o.
 AM_CFLAGS = $(AM_CFLAGS_$(subst /,_,$(@D))) $(AM_CFLAGS_$(subst /,_,$(@D)_$(<F)))
 AM_CCASFLAGS = $(AM_CCASFLAGS_$(subst /,_,$(@D))) $(AM_CCASFLAGS_$(subst /,_,$(@D)_$(<F)))
+if HAVE_LIBC_MACHINE_ARM
 AM_CPPFLAGS = $(NEWLIB_CFLAGS) $(TARGET_CFLAGS) $(AM_CPPFLAGS_$(subst /,_,$(@D))) $(AM_CPPFLAGS_$(subst /,_,$(@D)_$(<F))) -idirafter $(srcroot)/include
+else
+AM_CPPFLAGS = $(NEWLIB_CFLAGS) $(TARGET_CFLAGS) $(AM_CPPFLAGS_$(subst /,_,$(@D))) $(AM_CPPFLAGS_$(subst /,_,$(@D)_$(<F)))
+endif
 
 toollib_LIBRARIES = libm.a \
 	libc.a
diff --git a/newlib/Makefile.in b/newlib/Makefile.in
index bc967bd70..b1685772d 100644
--- a/newlib/Makefile.in
+++ b/newlib/Makefile.in
@@ -3848,7 +3848,8 @@ toollibdir = $(tooldir)/lib$(MULTISUBDIR)
 # These are useful for standalone object files like crt0.o.
 AM_CFLAGS = $(AM_CFLAGS_$(subst /,_,$(@D))) $(AM_CFLAGS_$(subst /,_,$(@D)_$(<F)))
 AM_CCASFLAGS = $(AM_CCASFLAGS_$(subst /,_,$(@D))) $(AM_CCASFLAGS_$(subst /,_,$(@D)_$(<F)))
-AM_CPPFLAGS = $(NEWLIB_CFLAGS) $(TARGET_CFLAGS) $(AM_CPPFLAGS_$(subst /,_,$(@D))) $(AM_CPPFLAGS_$(subst /,_,$(@D)_$(<F))) -idirafter $(srcroot)/include
+@HAVE_LIBC_MACHINE_ARM_FALSE@AM_CPPFLAGS = $(NEWLIB_CFLAGS) $(TARGET_CFLAGS) $(AM_CPPFLAGS_$(subst /,_,$(@D))) $(AM_CPPFLAGS_$(subst /,_,$(@D)_$(<F)))
+@HAVE_LIBC_MACHINE_ARM_TRUE@AM_CPPFLAGS = $(NEWLIB_CFLAGS) $(TARGET_CFLAGS) $(AM_CPPFLAGS_$(subst /,_,$(@D))) $(AM_CPPFLAGS_$(subst /,_,$(@D)_$(<F))) -idirafter $(srcroot)/include
 toollib_LIBRARIES = libm.a libc.a $(am__append_72)
 @HAVE_MULTISUBDIR_TRUE@BUILD_MULTISUBDIR = $(builddir)$(MULTISUBDIR)
 toollib_DATA = $(CRT0) $(CRT1)

                 reply	other threads:[~2023-02-22 21:02 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=20230222210255.16F803858D33@sourceware.org \
    --to=jjohnstn@sourceware.org \
    --cc=newlib-cvs@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).