mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-27 02:15:28 +08:00
Provide vxworks alternate stdint.h during the build
This change arranges to provide the vxworks alternate stdint.h at build time instead of at install time, so it is used instead of the system one while building the libraries. This is a lot more consistent and helps the build on configurations where the system does not come with stdint.h at all. The change uses a similar mechanism as the one previsouly introduced for glimits.h and takes the opportunity to simplify the glimits.h command to use an automatic variable. This introduces an indirect dependency on the VxWorks version.h for vxcrtstuff objects, for which we then need to apply the same tricks as for libgcc2 regarding include paths (to select the system header instead of the gcc one). 2021-02-12 Olivier Hainque <hainque@adacore.com> Rasmus Villemoes <rv@rasmusvillemoes.dk> gcc/ * Makefile.in (T_STDINT_GCC_H): New variable, path to stdint-gcc.h that a target configuration may override when use_gcc_stdint is "provide". (stmp-int-hdrs): Depend on it and copy that for USE_GCC_INT=provide. * config.gcc (vxworks): Revert to use_gcc_stdint=provide. * config/t-vxworks (T_STDINT_GCC_H): Define, as vxw-stdint-gcc.h. (vxw-stdint-gcc.h): New target, produced from the original stdint-gcc.h. (vxw-glimits.h): Use an automatic variable to designate the first and only prerequisite. * config/vxworks/stdint.h: Remove. libgcc/ * config/t-vxworks: Set CRTSTUFF_T_CFLAGS to $(LIBGCC2_INCLUDES). * config/t-vxworks7: Likewise.
This commit is contained in:
parent
0d5db1dd65
commit
6a0f6018ba
@ -452,6 +452,7 @@ USER_H_INC_NEXT_POST = @user_headers_inc_next_post@
|
||||
|
||||
# Enable target overriding of this fragment, as in config/t-vxworks.
|
||||
T_GLIMITS_H = $(srcdir)/glimits.h
|
||||
T_STDINT_GCC_H = $(srcdir)/ginclude/stdint-gcc.h
|
||||
|
||||
# The GCC to use for compiling crt*.o.
|
||||
# Usually the one we just built.
|
||||
@ -3099,7 +3100,7 @@ gcov-tool$(exeext): $(GCOV_TOOL_OBJS) $(LIBDEPS)
|
||||
# be rebuilt.
|
||||
|
||||
# Build the include directories.
|
||||
stmp-int-hdrs: $(STMP_FIXINC) $(T_GLIMITS_H) $(USER_H) fixinc_list
|
||||
stmp-int-hdrs: $(STMP_FIXINC) $(T_GLIMITS_H) $(T_STDINT_GCC_H) $(USER_H) fixinc_list
|
||||
# Copy in the headers provided with gcc.
|
||||
#
|
||||
# The sed command gets just the last file name component;
|
||||
@ -3145,7 +3146,7 @@ stmp-int-hdrs: $(STMP_FIXINC) $(T_GLIMITS_H) $(USER_H) fixinc_list
|
||||
cp $(srcdir)/ginclude/stdint-wrap.h include/stdint.h; \
|
||||
chmod a+r include/stdint.h; \
|
||||
elif [ $(USE_GCC_STDINT) = provide ]; then \
|
||||
cp $(srcdir)/ginclude/stdint-gcc.h include/stdint.h; \
|
||||
cp $(T_STDINT_GCC_H) include/stdint.h; \
|
||||
chmod a+r include/stdint.h; \
|
||||
fi
|
||||
set -e; for ml in `cat fixinc_list`; do \
|
||||
|
@ -1019,16 +1019,9 @@ case ${target} in
|
||||
extra_headers="${extra_headers} ../vxworks/math.h ../vxworks/complex.h"
|
||||
extra_headers="${extra_headers} ../vxworks/inttypes.h ../vxworks/setjmp.h"
|
||||
|
||||
# We provide stdint.h ...
|
||||
|
||||
# We provide (a tailored version of) stdint.h
|
||||
tm_file="${tm_file} vxworks-stdint.h"
|
||||
|
||||
# .. only through the yvals conditional wrapping mentioned above
|
||||
# to abide by the VxWorks 7 expectations. The final copy is performed
|
||||
# explicitly by a t-vxworks Makefile rule.
|
||||
|
||||
use_gcc_stdint=none
|
||||
extra_headers="${extra_headers} ../../ginclude/stdint-gcc.h"
|
||||
use_gcc_stdint=provide
|
||||
|
||||
case ${enable_threads} in
|
||||
no) ;;
|
||||
|
@ -24,18 +24,6 @@ vxworks-c.o: $(srcdir)/config/vxworks-c.c
|
||||
$(COMPILE) $<
|
||||
$(POSTCOMPILE)
|
||||
|
||||
# Arrange to install our stdint.h wrapper, by copying it in the
|
||||
# build-time include dir before this include dir is installed and after
|
||||
# stmp-int-hdrs removes it (because it was told we don't provide it).
|
||||
|
||||
INSTALL_HEADERS += install-stdint.h
|
||||
|
||||
install-stdint.h: stmp-int-hdrs
|
||||
cp -p $(srcdir)/config/vxworks/stdint.h include/stdint.h
|
||||
chmod a+r include/stdint.h
|
||||
|
||||
$(INSTALL_HEADERS_DIR): install-stdint.h
|
||||
|
||||
# Both the kernel and RTP headers provide limits.h. They embed VxWorks
|
||||
# specificities and are dated on some configurations so we both need to
|
||||
# provide our own version and make sure the system one gets exposed.
|
||||
@ -54,5 +42,13 @@ T_GLIMITS_H = vxw-glimits.h
|
||||
|
||||
vxw-glimits.h: $(srcdir)/glimits.h
|
||||
ID=`echo $(BASEVER_c) | sed -e 's/\./_/g'` && \
|
||||
sed -e "s/_LIMITS_H__/_LIMITS_H__$${ID}_/" < $(srcdir)/glimits.h > $@T
|
||||
sed -e "s/_LIMITS_H__/_LIMITS_H__$${ID}_/" < $< > $@T
|
||||
mv $@T $@
|
||||
|
||||
# Arrange to "provide" a tailored version of stdint-gcc.h
|
||||
|
||||
T_STDINT_GCC_H = vxw-stdint-gcc.h
|
||||
|
||||
vxw-stdint-gcc.h: $(srcdir)/ginclude/stdint-gcc.h
|
||||
sed -e "/#define _GCC_STDINT_H/ a #include <_yvals.h>" < $< > $@T
|
||||
mv $@T $@
|
||||
|
@ -1,28 +0,0 @@
|
||||
/* This file is part of GCC.
|
||||
|
||||
GCC is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free
|
||||
Software Foundation; either version 3, or (at your option) any later
|
||||
version.
|
||||
|
||||
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
Under Section 7 of GPL version 3, you are granted additional
|
||||
permissions described in the GCC Runtime Library Exception, version
|
||||
3.1, as published by the Free Software Foundation.
|
||||
|
||||
You should have received a copy of the GNU General Public License and
|
||||
a copy of the GCC Runtime Library Exception along with this program;
|
||||
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef __GCC_STDINT_H
|
||||
#define __GCC_STDINT_H
|
||||
|
||||
#include <_yvals.h>
|
||||
#include <stdint-gcc.h>
|
||||
|
||||
#endif
|
@ -17,3 +17,5 @@ LIBGCC2_INCLUDES = -nostdinc -I. \
|
||||
*/mrtp*) echo -I$(WIND_USR)/h -I$(WIND_USR)/h/wrn/coreip ;; \
|
||||
*) echo -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip ;; \
|
||||
esac`
|
||||
|
||||
CRTSTUFF_T_CFLAGS = $(LIBGCC2_INCLUDES)
|
||||
|
@ -18,3 +18,5 @@ LIBGCC2_INCLUDES = -nostdinc -I. \
|
||||
*/mrtp*) echo -I$(VSB_DIR)/usr/h/public -I$(VSB_DIR)/usr/h ;; \
|
||||
*) echo -I$(VSB_DIR)/krnl/h/system -I$(VSB_DIR)/krnl/h/public ;; \
|
||||
esac`
|
||||
|
||||
CRTSTUFF_T_CFLAGS = $(LIBGCC2_INCLUDES)
|
||||
|
Loading…
Reference in New Issue
Block a user