mirror of
https://github.com/systemd/systemd.git
synced 2025-03-19 22:50:17 +03:00
[PATCH] klibc: version 1.0.3
This commit is contained in:
parent
08183c4b90
commit
cb948532ff
@ -29,6 +29,10 @@ OBJROOT = $(SRCROOT)
|
||||
KRNLSRC = $(SRCROOT)/linux
|
||||
KRNLOBJ = $(SRCROOT)/linux
|
||||
|
||||
# klibc version information
|
||||
KLIBCVER = -D__KLIBC__=$(shell cut -d. -f1 < $(SRCROOT)/version) \
|
||||
-D__KLIBC_MINOR__=$(shell cut -d. -f2 < $(SRCROOT)/version)
|
||||
|
||||
ARCH = $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)
|
||||
CC = $(CROSS)gcc
|
||||
LD = $(CROSS)ld
|
||||
@ -38,7 +42,7 @@ INCLUDE = -I$(SRCROOT)/include/arch/$(ARCH) \
|
||||
-I$(SRCROOT)/include/bits$(BITSIZE) \
|
||||
-I$(SRCROOT)/include \
|
||||
-I$(KRNLOBJ)/include -I$(KRNLOBJ)/include2 -I$(KRNLSRC)/include
|
||||
REQFLAGS = $(ARCHREQFLAGS) -nostdinc -iwithprefix include -D__KLIBC__ \
|
||||
REQFLAGS = $(ARCHREQFLAGS) $(KLIBCVER) -nostdinc -iwithprefix include \
|
||||
$(INCLUDE)
|
||||
LDFLAGS =
|
||||
AR = $(CROSS)ar
|
||||
|
@ -27,7 +27,10 @@ $(CROSS)klibc.config: Makefile
|
||||
echo 'STRIPFLAGS=$(STRIPFLAGS)' >> $@
|
||||
echo 'EMAIN=$(EMAIN)' >> $@
|
||||
echo 'BITSIZE=$(BITSIZE)' >> $@
|
||||
echo 'INSTALLDIR=$(INSTALLDIR)' >> $@
|
||||
echo 'prefix=$(INSTALLDIR)' >> $@
|
||||
echo 'bindir=$(INSTALLDIR)/$(KCROSS)bin' >> $@
|
||||
echo 'libdir=$(INSTALLDIR)/$(KCROSS)lib' >> $@
|
||||
echo 'includedir=$(INSTALLDIR)/$(KCROSS)include' >> $@
|
||||
|
||||
$(CROSS)klcc: klcc.in $(CROSS)klibc.config makeklcc.pl
|
||||
$(PERL) makeklcc.pl klcc.in $(CROSS)klibc.config \
|
||||
|
@ -6,7 +6,7 @@
|
||||
#define _STDDEF_H
|
||||
|
||||
#ifndef __KLIBC__
|
||||
# define __KLIBC__ 1
|
||||
# error "__KLIBC__ not defined, compiler invocation error!"
|
||||
#endif
|
||||
|
||||
#include <bitsize/stddef.h>
|
||||
|
@ -1,19 +1,22 @@
|
||||
# -*- perl -*-
|
||||
|
||||
# Standard includes
|
||||
@includes = ("-I${INSTALLDIR}/${KCROSS}include/arch/${ARCH}",
|
||||
"-I${INSTALLDIR}/${KCROSS}include/bits${BITSIZE}",
|
||||
"-I${INSTALLDIR}/${KCROSS}include");
|
||||
@includes = ("-I${prefix}/${KCROSS}include/arch/${ARCH}",
|
||||
"-I${prefix}/${KCROSS}include/bits${BITSIZE}",
|
||||
"-I${prefix}/${KCROSS}include");
|
||||
|
||||
# Default optimization options (for compiles without -g)
|
||||
@optopt = @OPTFLAGS;
|
||||
@goptopt = ('-O');
|
||||
|
||||
# Standard library directories
|
||||
@stdlibpath = ("-L${prefix}/${KCROSS}lib");
|
||||
|
||||
# Options and libraries to pass to ld; shared versus static
|
||||
@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");
|
||||
@staticopt = ("${prefix}/${KCROSS}lib/crt0.o");
|
||||
@staticlib = ("${prefix}/${KCROSS}lib/libc.a");
|
||||
@sharedopt = (@EMAIN, "${prefix}/${KCROSS}lib/interp.o");
|
||||
@sharedlib = ('-R', "${prefix}/${KCROSS}lib/libc.so");
|
||||
|
||||
# Returns the language (-x option string) for a specific extension.
|
||||
sub filename2lang($) {
|
||||
@ -51,13 +54,15 @@ sub files_with_lang($$) {
|
||||
|
||||
foreach $f ( @{$files} ) {
|
||||
$need = ${$flang}{$f};
|
||||
$need = 'none' if ( $need eq 'obj' );
|
||||
unless ( $xopt eq $need ||
|
||||
($xopt eq 'none' && filename2lang($f) eq $need) ) {
|
||||
push(@as, '-x', $need);
|
||||
$xopt = $need;
|
||||
|
||||
# Skip object files
|
||||
if ( $need ne 'obj' ) {
|
||||
unless ( $xopt eq $need ) {
|
||||
push(@as, '-x', $need);
|
||||
$xopt = $need;
|
||||
}
|
||||
push(@as, $f);
|
||||
}
|
||||
push(@as, $f);
|
||||
}
|
||||
|
||||
return @as;
|
||||
@ -88,6 +93,7 @@ open(NULL, '+<', '/dev/null') or die "$0: cannot open /dev/null\n";
|
||||
|
||||
@ccopt = ();
|
||||
@ldopt = ();
|
||||
@libs = ();
|
||||
|
||||
@files = (); # List of files
|
||||
%flang = (); # Languages for files
|
||||
@ -111,13 +117,26 @@ while ( defined($a = shift(@ARGV)) ) {
|
||||
# Not an option. Must be a filename then.
|
||||
push(@files, $a);
|
||||
$flang{$a} = $lang || filename2lang($a);
|
||||
} elsif ( $a =~ /^-print-klibc-(.*)$/ ) {
|
||||
# This test must precede -print
|
||||
if ( defined($conf{$1}) ) {
|
||||
print ${$conf{$1}}, "\n";
|
||||
exit 0;
|
||||
} else {
|
||||
die "$0: unknown option: $a\n";
|
||||
}
|
||||
} elsif ( $a =~ /^(-print|-dump|--help|--version)/ ) {
|
||||
# These share prefixes with some other options, so put this test early!
|
||||
# Pseudo-operations; just pass to gcc and don't do anything else
|
||||
push(@ccopt, $a);
|
||||
$operation = 'c' if ( $operation eq '' );
|
||||
} elsif ( $a =~ /^-Wl,(.*)$/ ) {
|
||||
# -Wl used to pass options to the linker
|
||||
push(@ldopt, split(/,/, $1));
|
||||
} elsif ( $a =~ /^-([fmwWQdO]|std=|ansi|pedantic)/ ) {
|
||||
} elsif ( $a =~ /^-([fmwWQdO]|std=|ansi|pedantic|M[GPD]|MMD)/ ) {
|
||||
# Options to gcc
|
||||
push(@ccopt, $a);
|
||||
} elsif ( $a =~ /^-([DUI])(.*)$/ ) {
|
||||
} elsif ( $a =~ /^-([DUI]|M[FQT])(.*)$/ ) {
|
||||
# Options to gcc, which can take either a conjoined argument
|
||||
# (-DFOO) or a disjoint argument (-D FOO)
|
||||
push(@ccopt, $a);
|
||||
@ -125,10 +144,13 @@ while ( defined($a = shift(@ARGV)) ) {
|
||||
} elsif ( $a eq '-include' ) {
|
||||
# Options to gcc which always take a disjoint argument
|
||||
push(@ccopt, $a, shift(@ARGV));
|
||||
} elsif ( $a =~ /^-[gp]/ ) {
|
||||
# Debugging options to gcc *and* ld
|
||||
} elsif ( $a eq '-M' || $a eq '-MM' ) {
|
||||
# gcc options, that force preprocessing mode
|
||||
push(@ccopt, $a);
|
||||
$operation = 'E';
|
||||
} elsif ( $a =~ /^-[gp]/ || $a eq '-p' ) {
|
||||
# Debugging options to gcc
|
||||
push(@ccopt, $a);
|
||||
push(@ldopt, $a);
|
||||
$debugging = 1;
|
||||
} elsif ( $a eq '-v' ) {
|
||||
push(@ccopt, $a);
|
||||
@ -147,13 +169,15 @@ while ( defined($a = shift(@ARGV)) ) {
|
||||
$strip = 1;
|
||||
} elsif ( $a eq '-o' ) {
|
||||
$output = shift(@ARGV);
|
||||
} elsif ( $a eq '-x' ) {
|
||||
$lang = shift(@ARGV);
|
||||
} elsif ( $a eq '-nostdinc' ) {
|
||||
push(@ccopt, $a);
|
||||
@includes = ();
|
||||
} elsif ( $a =~ /^(-print|--help)/ ) {
|
||||
# Pseudo-operations; just pass to gcc and don't do anything else
|
||||
push(@ccopt, $a);
|
||||
$operation = 'c' if ( $operation eq '' );
|
||||
} elsif ( $a =~ /^-([lL])(.*)$/ ) {
|
||||
# Libraries
|
||||
push(@libs, $a);
|
||||
push(@libs, shift(@ARGV)) if ( $2 eq '' );
|
||||
} else {
|
||||
die "$0: unknown option: $a\n";
|
||||
}
|
||||
@ -170,6 +194,10 @@ if ( $operation ne '' ) {
|
||||
@outopt = ('-o', $output) if ( defined($output) );
|
||||
$rv = mysystem($CC, @ccopt, @outopt, files_with_lang(\@files, \%flang));
|
||||
} else {
|
||||
if ( scalar(@files) == 0 ) {
|
||||
die "$0: No input files!\n";
|
||||
}
|
||||
|
||||
@outopt = ('-o', $output || 'a.out');
|
||||
|
||||
@objs = ();
|
||||
@ -204,9 +232,9 @@ if ( $operation ne '' ) {
|
||||
close(LIBGCC);
|
||||
|
||||
if ( $shared ) {
|
||||
$rv = mysystem($LD, @LDFLAGS, @sharedopt, @ldopt, @outopt, @objs, @sharedlib, $libgcc);
|
||||
$rv = mysystem($LD, @LDFLAGS, @sharedopt, @ldopt, @outopt, @objs, @libs, @stdlibpath, @sharedlib, $libgcc);
|
||||
} else {
|
||||
$rv = mysystem($LD, @LDFLAGS, @staticopt, @ldopt, @outopt, @objs, @staticlib, $libgcc);
|
||||
$rv = mysystem($LD, @LDFLAGS, @staticopt, @ldopt, @outopt, @objs, @libs, @stdlibpath, @staticlib, $libgcc);
|
||||
}
|
||||
|
||||
unlink(@rmobjs);
|
||||
|
@ -7,23 +7,16 @@
|
||||
|
||||
($klccin, $klibcconf, $perlpath) = @ARGV;
|
||||
|
||||
# This should probably handle quotes and escapes...
|
||||
sub string2list($)
|
||||
{
|
||||
my($s) = @_;
|
||||
|
||||
$s =~ s/\s+/\',\'/g;
|
||||
return "(\'".$s."\')";
|
||||
}
|
||||
|
||||
print "#!${perlpath}\n";
|
||||
|
||||
open(KLIBCCONF, '<', $klibcconf) or die "$0: cannot open $klibcconf: $!\n";
|
||||
while ( defined($l = <KLIBCCONF>) ) {
|
||||
chomp $l;
|
||||
if ( $l =~ /=/ ) {
|
||||
print "\$$` = \"\Q$'\E\";\n";
|
||||
print "\@$` = ", string2list("$'"), ";\n";
|
||||
if ( $l =~ /^([^=]+)\=(.*)$/ ) {
|
||||
$n = $1; $s = $2;
|
||||
print "\$$n = \"\Q$s\E\";\n";
|
||||
print "\@$n = qw($s);\n";
|
||||
print "\$conf{\'\L$n\E\'} = \\\$$n;\n";
|
||||
}
|
||||
}
|
||||
close(KLIBCCONF);
|
||||
|
@ -1 +1 @@
|
||||
0.214
|
||||
1.0.3
|
||||
|
Loading…
x
Reference in New Issue
Block a user