glibc/mach/Machrules
Roland McGrath f0bf9cb92c Thu Mar 16 00:04:41 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* locale/C-ctype.c: New correct data generated by drepper.

	* Rules: Don't use $(libc.a).

	Parsing of grouped numbers contributed by Ulrich Drepper.
	* stdlib/strtol.c (__strtol_internal): Renamed from strtol.  Take
 	new flag arg; if nonzero, parse locale-dependent thousands
 	grouping and interpret only the prefix that is correctly grouped.
	(strtol): Define this to call _strtol_internal with zero for the flag.
	Use a weak symbol for the definition.
	* stdlib/strtod.c (strtod, __strtod_internal): Likewise.
  	Check for the exponent of the number overflowing the float format.
	* stdlib/stdlib.h (__strtof, __strtold): Declarations removed.
	(__strto{f,d,ld,l,ul,q,uq}_internal): Declare these functions.
	[__OPTIMIZE__]: Define inline functions calling those.
	* stdlib/grouping.h: New file, written by drepper.
	* stdlib/Makefile (distribute): Add grouping.h.
	* stdio/vfscanf.c: Grok %' modifier to numeric conversions.  Call
 	__strtoX_internal with the grouping flag set iff the modifier is
 	present.

Wed Mar 15 00:40:54 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/generic/memchr.c: Fix typos: limit.h -> limits.h.

	* mach/Machrules: Produce static deps for all object flavors.
	[interface-library]: Remove all these variables and rules.
	($(interface-library)-routines): Define this variable.
	(extra-libs): Append $(interface-library) to this.
	* mach/Makefile (interface-library): Omit .a suffix.
	* hurd/Makefile: Likewise.

Tue Mar 14 23:40:31 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* stdio/internals.c (flushbuf): If !FLUSH_ONLY, don't skip out
 	early if no new data in buffer after priming.

	* Makerules (object-suffixes, libtypes): Move all these variables
 	to Makeconfig.
	* Makeconfig (object-suffixes, libtypes): Moved here from Makerules.

	* Makerules (build-extra-lib): New canned sequence.

	* sysdeps/mach/hurd/euidaccess.c: Include fcntl.h.  Declare ERR;
 	fix uses of FILE and PORT.  Remove bogus weak alias for `access'.

	* sysdeps/mach/hurd/dirfd.c: Include hurd/fd.h and errno.h.
	Add missing semicolon.
	* sysdeps/mach/hurd/opendir.c: Include hurd/fd.h.  Use a `struct
 	hurd_fd *' temp var, since DIRP->__fd is a `void *'.
	* sysdeps/mach/hurd/readdir.c: Include hurd/fd.h.

	* stdlib/wcstombs.c: #if 0 out code for non-ASCII chars until the
 	locale data format is implemented.

	* sysdeps/mach/hurd/i386/trampoline.c (_hurd_setup_sighandler):
 	Pass &__sigreturn on the stack to the trampoline code, so it is
 	not position-dependent.

	* stdio/printf_fp.c (NDEBUG): Define this to disable assert.
  	Don't include <stdarg.h>.
	(__printf_fp): Last arg ARGS is now `const void **const'; 
	dereference ARGS[0] instead of using va_arg.

	* locale/setlocale.c: In LC_ALL case, initialize CATEGORY before
 	loop to install data.

	* locale/loadlocale.c (_nl_category_num_items): Use _NL_ITEM_INDEX
 	to extract number from item code.
	(_nl_load_locale): Close the descriptor when finished.

	* malloc/realloc.c (_realloc_internal): Call _malloc_internal in
 	place of malloc.

	* time/tzfile.c (__tzfile_default): Initialize RULE_STDOFF to zero.
1995-03-16 05:32:45 +00:00

199 lines
7.5 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Rules for MiG interfaces that want to go into the C library.
# Copyright (C) 1991, 1992, 1993, 1994, 1995 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
# modify it under the terms of the GNU Library General Public License
# as published by the Free Software Foundation; either version 2 of
# the License, or (at your option) any later version.
# The GNU C Library 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
# Library General Public License for more details.
# You should have received a copy of the GNU Library General Public
# License along with the GNU C Library; see the file COPYING.LIB. If
# not, write to the Free Software Foundation, Inc., 675 Mass Ave,
# Cambridge, MA 02139, USA.
# Makefiles may define these variable before including this file:
# user-interfaces Names of interfaces to put user stubs in for.
# server-interfaces Names of interfaces to put server stubs in for.
# interface-library Name of interface library to build and install.
# This file sets:
# interface-headers Names of generated interface header files.
# interface-routines Names of generated interface routines.
# All user stubs are put in individual files, prefixed with RPC_; header
# for both __ and non-__ names is put in foo.h. Server interfaces are
# written to foo_server.c and foo_server.h; the server functions are called
# _S_rpcname.
# Includers can also add to or modify `migdefines' to set MiG flags.
all:
# Make sure no value comes from the environment, since we append to it.
# This is done also in ../Rules, but we append to the value before
# including Rules, which changes the origin.
ifneq "$(findstring env,$(origin generated))" ""
generated :=
endif
include ../Makeconfig
ifndef MIG
MIG = mig
endif
MIGFLAGS = -DMACH_IPC_COMPAT=0 -DSTANDALONE -DTypeCheck=0 \
$(+includes) $(migdefines) -subrprefix __
.SUFFIXES: .defs # Just to set specified_rule_matched.
define nl # This is needed by *.ir.
endef
ifdef user-interfaces
*.ir := $(addprefix $(objpfx),$(foreach if,$(user-interfaces),$(if).ir))
ifndef inhibit_interface_rules
include $(*.ir)
endif
ifneq "$(*.ir)" "$(wildcard $(*.ir))"
# If any .ir file is missing, we will be unable to make all the deps.
no_deps=t
endif
generated += $(*.ir:$(objpfx)%=%)
endif
# %.ir defines a variable `%-calls', which lists the RPCs defined by
# %.defs, and a rule to build $(%-calls:%=RPC_$(%-userprefix)%.c) from
# %.defs, where $(%-userprefix) is the user prefix given in %.defs. We use
# the kludgificacious method of defining a pattern rule to build files
# matching patterns we are pretty damn sure will only match the particular
# files we have in mind. To be so damn sure, we use the silly names
# RPC_*.c and the pattern R%C_*.c because using __*.c and _%*.c (or any
# other useful pattern) causes the rule for `host_info' to also match
# `xxx_host_info', and analogous lossage.
#
# While we're at it, we figure out the imports used by %.defs and give them
# as dependencies of the object files for the generated RPC_*.c files.
#
# Depend on %.h just so they will be built from %.uh in the
# makefile-rebuilding run which builds %.ir; otherwise, %.uh is built as an
# intermediate in order to make %.ir and then removed before re-exec, when
# %.uh is built all over again to build %.h.
$(objpfx)%.ir: $(objpfx)%.uh $(objpfx)%.h
(awk "NF == 4 && (\$$2 == \"Routine\" || \$$2 == \"SimpleRoutine\")\
{ printf \"$*-calls += %s\\n\", \$$3 } \
/^#include/ { printf \"$*-imports += %s\\n\", \$$2 }" $< ;\
echo '$$($*-calls:%=$$(objpfx)R\%C_%.c): $$(objpfx)$*.ustamp ;';\
echo '$$($*-calls:%=$$(objpfx)RPC_%.o): $$($*-imports:<%>=%)' ;\
) > $@-new
mv $@-new $@
vpath Machrules ../mach # Find ourselves.
ifndef transform-user-stub-output
transform-user-stub-output = tmp
define transform-user-stub
echo "weak_alias (__$$call, $$call)" >> $(objpfx)tmp_$${call}.c;
endef
endif
# Not an implicit rule so the stamps are never removed as intermediates!
$(patsubst %,$(objpfx)%.ustamp,$(user-interfaces)): $(objpfx)%.ustamp: %.defs
$(MIG) $< $(MIGFLAGS) $(user-MIGFLAGS) \
-prefix __ -i $(objpfx)tmp_ \
-server /dev/null -user /dev/null -header /dev/null
for call in $($*-calls); do \
$(transform-user-stub) \
../move-if-change $(objpfx)$(transform-user-stub-output)_$${call}.c \
$(objpfx)RPC_$${call}.c; \
done
touch $@
# Look for the server stub files where they will be written.
vpath %_server.c $(addprefix $(objpfx),$(sort $(dir $(server-interfaces))))
# Build the server stubs in $(objdir).
$(objpfx)%_server.c $(objpfx)%_server.h: %.defs
$(MIG) $< $(MIGFLAGS) $(server-MIGFLAGS) \
-prefix _S_ \
-user /dev/null -header /dev/null \
-server $(@:.h=.c) -sheader $(@:.c=.h)
# To get header files that declare both the straight and __ functions,
# we generate two files and paste them together.
$(objpfx)%.uh: %.defs; $(mig.uh)
define mig.uh
$(make-target-directory)
$(MIG) $< $(MIGFLAGS) \
-header $@ -server /dev/null -user /dev/null
endef
$(objpfx)%.__h: %.defs; $(mig.__h)
define mig.__h
$(make-target-directory)
$(MIG) $< $(MIGFLAGS) -prefix __ \
-header $@ -server /dev/null -user /dev/null
endef
$(objpfx)%.h: $(objpfx)%.__h $(objpfx)%.uh
# The last line of foo.__h is "#endif _foo_user_".
# The first two lines of foo.uh are "#ifndef _foo_user_"/"#define _foo_user_".
(sed -e '$$d' $<; sed -e '1,2d' $(word 2,$^)) > $@-new
mv $@-new $@
interface-routines := $(foreach if,$(user-interfaces), \
$(addprefix RPC_,$($(if)-calls))) \
$(server-interfaces:%=%_server)
interface-headers := $(user-interfaces:%=%.h) \
$(server-interfaces:%=%_server.h)
# Remove the generated user stub source and header files,
# and don't distribute them.
mach-generated = $(interface-routines:%=%.c) \
$(foreach h,$(interface-headers:%.h=%),$h.h $h.uh $h.__h)
generated += $(mach-generated)
# These are needed to generate the dependencies.
before-compile += $(interface-headers:%=$(objpfx)%)
# Don't let these be intermediate files and get removed.
$(foreach h,$(interface-headers:%.h=$(objpfx)%),$h.h $h.__h $h.uh) :
$(interface-routines:%=$(objpfx)%.c) :
# Convenient target to generate all the headers.
.PHONY: interface-headers
interface-headers: $(interface-headers)
# Don't automatically generate dependencies for the sources we generate.
# There are likely to be a whole lot of them, and we know their
# dependencies ahead of time anyway because they're boilerplate.
omit-deps += $(interface-routines)
# Specify the static dependencies of the generated files.
$(foreach o,$(object-suffixes),\
$(foreach if,$(user-interfaces),$($(if)-calls:%=$(objpfx)RPC_%$o))): \
mach/boolean.h mach/kern_return.h mach/message.h mach/notify.h \
mach/mach_types.h mach/mig_errors.h mach/mig_support.h mach/msg_type.h \
$(..)libc-symbols.h $(objpfx)config.h
$(foreach o,$(object-suffixes),\
$(server-interfaces:%=$(objpfx)%$o)): \
mach/boolean.h mach/kern_return.h mach/message.h mach/mig_errors.h \
mach/mig_support.h mach/std_types.h
# The MiG-generated sources also depend on the imports in their .defs files.
# These dependencies are generated into the .ir files above.
# If defined, $(interface-library) is `libNAME'. It is to be a library
# containing all the MiG-generated functions for the specified interfaces.
ifdef interface-library
$(interface-library)-routines = $(interface-routines)
extra-libs += $(interface-library)
endif