aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2005-03-03 20:40:39 +0000
committerH. Peter Anvin <hpa@zytor.com>2005-03-03 20:40:39 +0000
commit32f3670c1655369d88bcbb723e54cdcc4b7c6732 (patch)
tree267a990769d9294794edacbda68866a3bd90bbc6
parent251cabd48c8188736f3a6f5346646c221163132f (diff)
downloadklibc-32f3670c1655369d88bcbb723e54cdcc4b7c6732.tar.gz
Split CROSS and KCROSS; x86-64 needs asm-i386 in addition to asm-x86_64;klibc-0.206
some architectures need to reference their own asm-$(ARCH) by name.
-rw-r--r--MCONFIG9
-rw-r--r--Makefile24
-rw-r--r--klcc.in14
-rw-r--r--klibc/arch/x86_64/MCONFIG3
4 files changed, 31 insertions, 19 deletions
diff --git a/MCONFIG b/MCONFIG
index a7b2cb1bf36865..c83349948354e5 100644
--- a/MCONFIG
+++ b/MCONFIG
@@ -3,6 +3,14 @@
# Makefile configuration, without explicit rules
#
+# CROSS is the prefix used for system tools like gcc, ld etc.
+CROSS =
+
+# KCROSS is the prefix we use for klibc installations. This is usually
+# the same as CROSS, but may be different, e.g. to install an i386
+# cross-compilation suite on an x86-64 system, using the same gcc/binutils.
+KCROSS ?= $(CROSS)
+
# Location for installation
prefix = /usr
bindir = $(prefix)/bin
@@ -22,7 +30,6 @@ KRNLSRC = $(SRCROOT)/linux
KRNLOBJ = $(SRCROOT)/linux
ARCH = $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)
-CROSS =
CC = $(CROSS)gcc
LD = $(CROSS)ld
KLIBSRC = $(SRCROOT)/klibc
diff --git a/Makefile b/Makefile
index eb8f55570d15c4..6c0c472286c282 100644
--- a/Makefile
+++ b/Makefile
@@ -17,6 +17,7 @@ $(CROSS)klibc.config: Makefile
rm -f $@
echo 'ARCH=$(ARCH)' >> $@
echo 'CROSS=$(CROSS)' >> $@
+ echo 'KCROSS=$(KCROSS)' >> $@
echo "CC=$(shell bash -c 'type -p $(CC)')" >> $@
echo "LD=$(shell bash -c 'type -p $(LD)')" >> $@
echo 'REQFLAGS=$(filter-out -I%,$(REQFLAGS))' >> $@
@@ -49,19 +50,20 @@ local-install: $(CROSS)klcc
mkdir -p $(INSTALLROOT)$(mandir)/man1
mkdir -p $(INSTALLROOT)$(SHLIBDIR)
mkdir -p $(INSTALLROOT)$(INSTALLDIR)
- -rm -rf $(INSTALLROOT)$(INSTALLDIR)/$(CROSS)include
- mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(CROSS)include
- mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(CROSS)lib
- mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(CROSS)bin
- set -xe ; for d in linux asm asm-generic ; do \
+ -rm -rf $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include
+ mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include
+ mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)lib
+ mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)bin
+ set -xe ; for d in linux asm-$(ARCH) asm-generic $(ASMARCH); do \
mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(CROSS)include/$$d ; \
- cp -rfL $(KRNLSRC)/include/$$d/. $(INSTALLROOT)$(INSTALLDIR)/$(CROSS)include/$$d/. ; \
- cp -rfL $(KRNLOBJ)/include/$$d/. $(INSTALLROOT)$(INSTALLDIR)/$(CROSS)include/$$d/. ; \
+ cp -rfL $(KRNLSRC)/include/$$d/. $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/$$d/. ; \
+ cp -rfL $(KRNLOBJ)/include/$$d/. $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/$$d/. ; \
[ ! -d $(KRNLOBJ)/include2/$$d ] || \
- cp -rfL $(KRNLOBJ)/include2/$$d/. $(INSTALLROOT)$(INSTALLDIR)/$(CROSS)include/$$d/. ; \
+ cp -rfL $(KRNLOBJ)/include2/$$d/. $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/$$d/. ; \
done
- cp -rf include/. $(INSTALLROOT)$(INSTALLDIR)/$(CROSS)include/.
- $(INSTALL_DATA) klcc.1 $(INSTALLROOT)$(mandir)/man1/$(CROSS)klcc.1
- $(INSTALL_EXEC) $(CROSS)klcc $(INSTALLROOT)$(bindir)
+ cd $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include && ln -sf asm-$(ARCH) asm
+ cp -rf include/. $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/.
+ $(INSTALL_DATA) klcc.1 $(INSTALLROOT)$(mandir)/man1/$(KCROSS)klcc.1
+ $(INSTALL_EXEC) $(KCROSS)klcc $(INSTALLROOT)$(bindir)
-include MCONFIG
diff --git a/klcc.in b/klcc.in
index 713843c37c4bf4..bdd03e73b33996 100644
--- a/klcc.in
+++ b/klcc.in
@@ -1,19 +1,19 @@
# -*- perl -*-
# Standard includes
-@includes = ("-I${INSTALLDIR}/${CROSS}include/arch/${ARCH}",
- "-I${INSTALLDIR}/${CROSS}include/bits${BITSIZE}",
- "-I${INSTALLDIR}/${CROSS}include");
+@includes = ("-I${INSTALLDIR}/${KCROSS}include/arch/${ARCH}",
+ "-I${INSTALLDIR}/${KCROSS}include/bits${BITSIZE}",
+ "-I${INSTALLDIR}/${KCROSS}include");
# Default optimization options (for compiles without -g)
@optopt = @OPTFLAGS;
@goptopt = ('-O');
# Options and libraries to pass to ld; shared versus static
-@staticopt = ("$INSTALLDIR/${CROSS}lib/crt0.o");
-@staticlib = ("$INSTALLDIR/${CROSS}lib/libc.a");
-@sharedopt = (@EMAIN, "$INSTALLDIR/${CROSS}lib/interp.o");
-@sharedlib = ('-R', "$INSTALLDIR/lib/${CROSS}libc.so");
+@staticopt = ("$INSTALLDIR/${KCROSS}lib/crt0.o");
+@staticlib = ("$INSTALLDIR/${KCROSS}lib/libc.a");
+@sharedopt = (@EMAIN, "$INSTALLDIR/${KCROSS}lib/interp.o");
+@sharedlib = ('-R', "$INSTALLDIR/${KCROSS}lib/libc.so");
# Returns the language (-x option string) for a specific extension.
sub filename2lang($) {
diff --git a/klibc/arch/x86_64/MCONFIG b/klibc/arch/x86_64/MCONFIG
index a2a23676336b8a..13b6e391f9910e 100644
--- a/klibc/arch/x86_64/MCONFIG
+++ b/klibc/arch/x86_64/MCONFIG
@@ -26,3 +26,6 @@ LDFLAGS = -m elf_x86_64
# 2 MB - normal binaries start at 4 MB
SHAREDFLAGS = -Ttext 0x00200200
+# Additional asm- directories needed during installation
+ASMARCH = asm-i386
+