Skip to content

Commit

Permalink
Remove common-objdir-compile and related sysdeps/unix/Makefile code.
Browse files Browse the repository at this point in the history
  • Loading branch information
Joseph Myers committed Mar 19, 2012
1 parent bd37f2e commit 83d1aec
Show file tree
Hide file tree
Showing 9 changed files with 62 additions and 674 deletions.
61 changes: 61 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,64 @@
2012-03-19 Joseph Myers <joseph@codesourcery.com>

* Makerules (common-objdir-compile): Remove.
* sysdeps/unix/Makefile (config-generated): Do not add
$(unix-generated) to variable.
[generic bits/local_lim.h] (mk-local_lim-CFLAGS): Remove variable.
[generic bits/local_lim.h] ($(common-objpfx)bits/local_lim.h):
Remove rule.
[generic bits/local_lim.h] ($(common-objpfx)mk-local_lim):
Likewise.
[generic bits/local_lim.h] (before-compile): Do not append to
variable.
[generic bits/local_lim.h] (common-generated): Likewise.
[generic sys/param.h] (before-compile): Do not append to variable.
[generic sys/param.h] ($(common-objpfx)sys/param.h): Remove rule.
[generic sys/param.h] ($(common-objpfx)param.h.c): Likewise.
[generic sys/param.h] ($(common-objpfx)param.h.dep): Likewise.
[generic sys/param.h] ($(common-objpfx)param.h.dep): Do not
include.
[generic sys/param.h] (sys/param.h-includes): Remove variable.
[generic sys/param.h] (sys/param.h-includes): Remove rule.
[generic sys/param.h] ($(addprefix
$(common-objpfx),$(sys/param.h-includes))): Likewise.
[generic sys/param.h] (common-generated): Do not append to
variable.
[generic sys/param.h] (sysdep_headers): Likewise.
[generic bits/errno.h] (before-compile): Do not append to
variable.
[generic bits/errno.h] ($(common-objpfx)bits/errno.h): Remove
rule.
[generic bits/errno.h] ($(common-objpfx)make-errnos): Likewise.
[generic bits/errno.h] ($(common-objpfx)make-errnos.c): Likewise.
[generic bits/errno.h] ($(common-objpfx)errnos): Likewise.
[generic bits/errno.h] (common-generated): Do not append to
variable.
[generic bits/ioctls.h] (before-compile): Do not append to
variable.
[generic bits/ioctls.h] ($(common-objpfx)bits/ioctls.h): Remove
rule.
[generic bits/ioctls.h] (ioctl-includes): Remove variable.
[generic bits/ioctls.h] (make-ioctls-CFLAGS): Likewise.
[generic bits/ioctls.h] ($(common-objpfx)make-ioctls): Remove
rule.
[generic bits/ioctls.h] ($(common-objpfx)make-ioctls.c): Likewise.
[generic bits/ioctls.h] (bits_termios.h): Remove variable.
[generic bits/ioctls.h] ($(common-objpfx)ioctls): Remove rule.
[generic bits/ioctls.h] (common-generated): Do not append to
variable.
[generic sys/syscall.h] (syscall.h): Remove variable.
[generic sys/syscall.h] ($(common-objpfx)sys/syscall.h): Remove
rule.
[generic sys/syscall.h] (before-compile): Do not append to
variable.
[generic sys/syscall.h] (common-generated): Likewise.
* sysdeps/unix/errnos-tmpl.c: Remove file.
* sysdeps/unix/errnos.awk: Likewise.
* sysdeps/unix/ioctls-tmpl.c: Likewise.
* sysdeps/unix/ioctls.awk: Likewise.
* sysdeps/unix/mk-local_lim.c: Likewise.
* sysdeps/unix/snarf-ioctls: Likewise.

2012-03-19 Richard Henderson <rth@twiddle.net>

* sysdeps/i386/fpu/fenv_private.h: New file.
Expand Down
8 changes: 0 additions & 8 deletions Makerules
Original file line number Diff line number Diff line change
Expand Up @@ -1122,14 +1122,6 @@ $(BUILD_CC) $($(basename $(<F))-CFLAGS) $(ALL_BUILD_CFLAGS) \
$(firstword $(filter /%,$< $(shell pwd)/$<)) -o $(@F)
endef

# Command to compile $< in $(common-objdir) using the native libraries.
# We must cd to $(objdir) anyway so that $(..)config.h is valid.
define common-objdir-compile
$(patsubst %/,cd % &&,$(objpfx)) \
$(BUILD_CC) $($(basename $(<F))-CFLAGS) $(ALL_BUILD_CFLAGS) \
$(firstword $(filter /%,$< $(shell pwd)/$<)) -o $(..)$(@F)
endef

# We always want to use configuration definitions.
# Note that this is only used for commands running in $(objpfx).
ALL_BUILD_CFLAGS = $(BUILD_CFLAGS) -include $(..)config.h
Expand Down
240 changes: 1 addition & 239 deletions sysdeps/unix/Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
# Copyright (C) 1991,1992,1993,1994,1995,1996,1997,1998,1999,2003,2006,2008,2009
# Free Software Foundation, Inc.
# Copyright (C) 1991-2012 Free Software Foundation, Inc.
# This file is part of the GNU C Library.

# The GNU C Library is free software; you can redistribute it and/or
Expand All @@ -16,243 +15,6 @@
# License along with the GNU C Library; if not, see
# <http://www.gnu.org/licenses/>.

# The unix-specific configure fragment writes `unix-generated' in config.make.
config-generated := $(config-generated) $(unix-generated)

ifeq (,$(filter-out $(sysdep_dir)/generic/ $(common-objpfx),\
$(dir $(firstword $(wildcard $(+sysdep_dirs:%=%/bits/local_lim.h))))))

ifneq (,$(wildcard $(sysincludedir)/sys/param.h))
mk-local_lim-CFLAGS += -DHAVE_SYS_PARAM_H
endif
ifneq (,$(wildcard $(sysincludedir)/sys/limits.h))
mk-local_lim-CFLAGS += -DHAVE_SYS_LIMITS_H
endif
ifneq (,$(wildcard $(sysincludedir)/limits.h))
mk-local_lim-CFLAGS += -DHAVE_LIMITS_H
endif

$(common-objpfx)bits/local_lim.h: $(common-objpfx)mk-local_lim
$(dir $<)$(notdir $<) > $@-t
mv -f $@-t $@
$(common-objpfx)mk-local_lim: $(sysdep_dir)/unix/mk-local_lim.c
$(common-objdir-compile)

before-compile += $(common-objpfx)bits/local_lim.h
common-generated += bits/local_lim.h mk-local_lim

endif

ifeq (,$(filter-out $(sysdep_dir)/generic/ $(common-objpfx),\
$(patsubst %/sys/param.h,%/,\
$(firstword $(wildcard $(+sysdep_dirs:%=%/sys/param.h))))))

before-compile := $(before-compile) $(common-objpfx)sys/param.h

$(common-objpfx)sys/param.h: $(sysincludedir)/sys/param.h
$(make-target-directory)
(echo '#ifndef _SYS_PARAM_H'; \
echo '#define _SYS_PARAM_H 1'; \
echo '#include <endian.h>'; \
$(AWK) < $< \
'/^#define[ ]*NULL/ { print "#ifndef NULL"; \
print $$0; \
print "#endif"; \
was_null = 1 } \
{ if (!was_null) print $$0; \
was_null = 0 }'; \
echo '#ifndef MAXHOSTNAMELEN'; \
echo '#define MAXHOSTNAMELEN 64 /* XXX */'; \
echo '#endif /* No MAXHOSTNAMELEN. */'; \
echo '#endif /* sys/param.h */') > $@-tmp
mv $@-tmp $@

$(common-objpfx)param.h.c: $(sysincludedir)/sys/param.h
rm -f $@
cp $< $@
$(common-objpfx)param.h.dep: $(common-objpfx)param.h.c \
$(sysdep_dir)/unix/Makefile
$(+mkdep) -I$(sysincludedir) $< \
| sed > $@-t \
-e 's@$(sysincludedir)/sys/param.h@@' \
-e 's@^.*:@@' \
-e 's@$<@@g' \
-e 's@$(sysincludedir)/*@@g' \
-e 's@\\$$@@' \
-e 's@^@sys/param.h-includes := $$(sys/param.h-includes) @'
mv $@-t $@

# Get the generated definition of sys/param.h-includes.
ifndef no_deps
-include $(common-objpfx)param.h.dep
endif

# Don't preempt our own headers.
sys/param.h-includes := \
$(filter-out $(patsubst $(..)%,%,\
$(wildcard $(addprefix $(..),\
$(sys/param.h-includes)))),\
$(sys/param.h-includes))


.PHONY: sys/param.h-includes
sys/param.h-includes: $(addprefix $(common-objpfx),$(sys/param.h-includes))

ifdef sys/param.h-includes
# Copy the system files to $(common-objdir).
$(addprefix $(common-objpfx),$(sys/param.h-includes)): $(common-objpfx)%: \
$(sysincludedir)/%
$(make-target-directory)
# Some of these files sometimes contain conflicting declarations for htons,
# ntohs, etc. They also often contain definitions of *_ENDIAN and
# BYTE_ORDER, which we define ourselves in <endian.h>.
sed -e '/[ ]*[hn]to[nh][sl][ (]*/d' \
-e '/^#define[ ]*[A-Z]*_ENDIAN/d' \
-e '/^#define[ ]*BYTE_ORDER/d' \
$< > $@-t
mv $@-t $@
endif

common-generated := $(common-generated) \
sys/param.h $(sys/param.h-includes) param.h.c param.h.dep


ifeq ($(subdir),misc)

# Install system headers the system sys/param.h uses.

sysdep_headers := $(sysdep_headers) $(sys/param.h-includes)

endif # misc

endif # No sysdep sys/param.h.

ifeq (,$(filter-out $(sysdep_dir)/generic/ $(common-objpfx),\
$(dir $(firstword $(wildcard $(+sysdep_dirs:%=%/bits/errno.h))))))

# These need to exist before any compiling is done,
# so cpp doesn't instead find the generic versions.
before-compile := $(before-compile) $(common-objpfx)bits/errno.h

$(common-objpfx)bits/errno.h: $(common-objpfx)make-errnos
$(dir $<)$(notdir $<) > $@-tmp
mv $@-tmp $@

$(common-objpfx)make-errnos: $(common-objpfx)make-errnos.c
$(common-objdir-compile)

$(common-objpfx)make-errnos.c: $(sysdep_dir)/unix/errnos-tmpl.c \
$(sysdep_dir)/unix/errnos.awk $(common-objpfx)errnos
$(AWK) -f $(word 2,$^) errnos="`tr '\012' ' ' < $(word 3,$^)`" $< > $@T
mv $@T $@

$(common-objpfx)errnos: $(wildcard $(sysincludedir)/errno.h \
$(sysincludedir)/sys/errno.h)
sed -n 's/^#define[ ]*\(E[A-Z0-9][A-Z0-9]*\)[ ].*$$/\1/p' \
$^ > $@-tmp
mv $@-tmp $@

common-generated := $(common-generated) \
errnos.h errnos make-errnos make-errnos.c
endif

ifeq (,$(filter-out $(sysdep_dir)/generic/ $(common-objpfx),\
$(dir $(firstword $(wildcard $(+sysdep_dirs:%=%/bits/ioctls.h))))))

before-compile := $(before-compile) $(common-objpfx)bits/ioctls.h

$(common-objpfx)bits/ioctls.h: $(common-objpfx)make-ioctls
$(dir $<)$(notdir $<) > $@-tmp
mv $@-tmp $@

ioctl-includes := sys/termios.h net/nit.h
ioctl-includes := $(wildcard $(addprefix $(sysincludedir)/,$(ioctl-includes)))
make-ioctls-CFLAGS := $(subst /,_,$(subst .,_,\
$(patsubst $(sysincludedir)/%,-DHAVE_%,\
$(ioctl-includes))))

$(common-objpfx)make-ioctls: $(common-objpfx)make-ioctls.c
$(common-objdir-compile)

$(common-objpfx)make-ioctls.c: $(sysdep_dir)/unix/ioctls-tmpl.c \
$(sysdep_dir)/unix/ioctls.awk \
$(common-objpfx)ioctls
$(AWK) -f $(word 2,$^) requests="`cat $(word 3,$^)`" $< > $@T
mv $@T $@


bits_termios.h := $(firstword $(wildcard $(+sysdep_dirs:%=%/bits/termios.h)))
ifeq ($(bits_termios.h),$(sysdep_dir)/generic/bits/termios.h)
bits_termios.h := # Ignore the generic version.
endif

# If there is a system-specific <bits/termios.h> file, we want to omit
# all the symbols it defines from ioctls. Otherwise, both
# <bits/ioctls.h> and <bits/termios.h> would define them. The
# system-specific <bits/termios.h> file presumably defines them with
# the same values as we find from the system's headers. We also want
# to omit from ioctls the symbols defined in our own
# <sys/ttydefaults.h>, to avoid multiple definition conflicts. We use
# snarf-ioctls on these files to find what symbols we want to omit.
# fgrep -xv gives all lines which do not match in their entirety;
# without -x, CSTOP's presence elided TIOCSTOP.

$(common-objpfx)ioctls: $(sysdep_dir)/unix/snarf-ioctls \
$(sysincludedir)/sys/ioctl.h $(ioctl-includes)
$(dir $<)$(notdir $<) $(filter-out $<,$^) \
| fgrep -xv "`($(dir $<)$(notdir $<) $(bits_termios.h) \
$(..)sysdeps/generic/sys/ttydefaults.h; \
echo NULL) \
| sort | uniq`" \
| sort | uniq | tr '\012' ' ' > $@-tmp
mv $@-tmp $@

common-generated := $(common-generated) \
bits/ioctls.h ioctls make-ioctls make-ioctls.c
endif

ifeq (,$(filter-out $(sysdep_dir)/generic/ $(common-objpfx),\
$(dir $(firstword $(wildcard $(+sysdep_dirs:%=%/sys/syscall.h))))))

# The syscall code assumes a file <sys/syscall.h> that defines macros
# `SYS_call' for syscall `call'. Variations on this I have seen include:
# it's in <sys/syscall.h>;
# it's in <sys.s>;
# it defines `CALL' instead of `SYS_call'.
# Irix has a <syscall.h> which is not what we want, so check for <sys.s> first.

# Find a file that might have these. NOTE: This list of possibilities is
# repeated in sysdeps/unix/configure and the two should be kept in sync.
syscall.h := $(firstword $(wildcard $(addprefix $(sysincludedir)/, \
sys.s sys/sys.s \
sys.S sys/sys.S \
syscall.h sys/syscall.h \
)))
ifdef syscall.h

# Transmogrify any of several formats of the file into the one we want.
$(common-objpfx)sys/syscall.h: $(syscall.h)
$(make-target-directory)
tr '[A-Z]' '[a-z]' < $< | \
sed -e 's/[ ]sys_/ /' \
-e 's/^#define[ ]*\([a-z0-9_]*\)[ ]*/#define SYS_\1 /' \
-e 's/[ ]sys_/ SYS_/' \
-e 's/SYS_syscall_basenum/syscall_basenum/g' \
-e 's/SYS_kerncall_basenum/kerncall_basenum/g' \
-e 's/SYS_sysvoffset/sysvoffset/g' \
-e '/^#/!d' \
-e '/^#ident/d' \
-e 's-\(/\*[^*]*\)$$-\1\*/-' \
> $@-tmp
mv $@-tmp $@

before-compile += $(common-objpfx)sys/syscall.h
common-generated += sys/syscall.h

endif

endif

ifndef inhibit-unix-syscalls

# Sysdep dirs unix/... can contain a file syscalls.list,
Expand Down
Loading

0 comments on commit 83d1aec

Please sign in to comment.