diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | Makeconfig | 13 | ||||
-rw-r--r-- | Rules | 4 |
3 files changed, 21 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog index 959da903a0..3518c907bd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ Mon Feb 20 04:04:57 1995 Roland McGrath <roland@duality.gnu.ai.mit.edu> + * Makeconfig [elf=yes] (+preinit, +postinit): New variables, set + to crt[in].o. + (csu-objpfx): New variable. + (+link): Use it to find start.o and $(+preinit), $(+postinit). + + * Rules (subdir_lib, all): Depend on objs. + * config.h.in [HAVE_ELF || HAVE_GNU_LD]: Define HAVE_WEAK_SYMBOLS. * stdlib/strtod.c (PASTE, PASTE1): New helper macros; use these in diff --git a/Makeconfig b/Makeconfig index 434f8b2d19..48a4a95ef8 100644 --- a/Makeconfig +++ b/Makeconfig @@ -254,11 +254,22 @@ endif # Command for linking programs with the C library. ifndef +link +link = $(CC) -nostdlib $(LDFLAGS) -o $@ \ - $(common-objpfx)start.o $(^:lib=$(libc.a)) $(gnulib) $(libc.a) + $(addprefix $(csu-objpfx),start.o $(+preinit)) \ + $(^:lib=$(libc.a)) $(gnulib) $(libc.a) \ + $(addprefix $(csu-objpfx),$(+postinit)) endif ifndef gnulib gnulib := -lgcc endif +ifeq ($(elf),yes) ++preinit = crti.o ++postinit = crtn.o +endif +ifdef objpfx +csu-objpfx = $(objpfx) +else +csu-objpfx = $(..)csu +endif ifndef LD LD := ld -X diff --git a/Rules b/Rules index 2d33edcbc4..c40e9b2f30 100644 --- a/Rules +++ b/Rules @@ -36,7 +36,7 @@ export subdir := $(subdir) # This is the default target; it makes the library and auxiliary programs. .PHONY: all -all: lib others +all: objs lib others ifneq "$(findstring env,$(origin headers))" "" headers := @@ -55,7 +55,7 @@ endif include ../Makerules .PHONY: subdir_lib -subdir_lib: lib-noranlib +subdir_lib: objs lib-noranlib # Some subdirs need to install a dummy library. # They can use "$(objpfx)libfnord.a: $(dep-dummy-lib); $(make-dummy-lib)". |