Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
Pull kbuild changes from Michal Marek: "Kbuild commits for v3.10-rc1: - Fix make mrproper after mod/file2alias rework - Fix ld-option Makefile function - Rewrite headers_install to shell to drop Perl dependency. There are some more patches I have to look at, so I might send another pull request later. Or just queue them for 3.11." * 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild: Fix cleaning in scripts/mod headers_install.pl: convert to headers_install.sh kbuild: fix ld-option function
This commit is contained in:
Коммит
57c29bd3cd
|
@ -593,7 +593,7 @@ more details, with real examples.
|
|||
|
||||
Example:
|
||||
#Makefile
|
||||
LDFLAGS_vmlinux += $(call really-ld-option, -X)
|
||||
LDFLAGS_vmlinux += $(call ld-option, -X)
|
||||
|
||||
|
||||
=== 4 Host Program support
|
||||
|
|
|
@ -148,7 +148,7 @@ cc-ldoption = $(call try-run,\
|
|||
# ld-option
|
||||
# Usage: LDFLAGS += $(call ld-option, -X)
|
||||
ld-option = $(call try-run,\
|
||||
$(CC) /dev/null -c -o "$$TMPO" ; $(LD) $(1) "$$TMPO" -o "$$TMP",$(1),$(2))
|
||||
$(CC) -x c /dev/null -c -o "$$TMPO" ; $(LD) $(1) "$$TMPO" -o "$$TMP",$(1),$(2))
|
||||
|
||||
# ar-option
|
||||
# Usage: KBUILD_ARFLAGS := $(call ar-option,D)
|
||||
|
|
|
@ -72,7 +72,7 @@ printdir = $(patsubst $(INSTALL_HDR_PATH)/%/,%,$(dir $@))
|
|||
quiet_cmd_install = INSTALL $(printdir) ($(words $(all-files))\
|
||||
file$(if $(word 2, $(all-files)),s))
|
||||
cmd_install = \
|
||||
$(PERL) $< $(installdir) $(SRCARCH) $(input-files); \
|
||||
$(CONFIG_SHELL) $< $(installdir) $(input-files); \
|
||||
for F in $(wrapper-files); do \
|
||||
echo "\#include <asm-generic/$$F>" > $(installdir)/$$F; \
|
||||
done; \
|
||||
|
@ -98,7 +98,7 @@ __headersinst: $(subdirs) $(install-file)
|
|||
@:
|
||||
|
||||
targets += $(install-file)
|
||||
$(install-file): scripts/headers_install.pl $(input-files) FORCE
|
||||
$(install-file): scripts/headers_install.sh $(input-files) FORCE
|
||||
$(if $(unwanted),$(call cmd,remove),)
|
||||
$(if $(wildcard $(dir $@)),,$(shell mkdir -p $(dir $@)))
|
||||
$(call if_changed,install)
|
||||
|
|
|
@ -1,63 +0,0 @@
|
|||
#!/usr/bin/perl -w
|
||||
#
|
||||
# headers_install prepare the listed header files for use in
|
||||
# user space and copy the files to their destination.
|
||||
#
|
||||
# Usage: headers_install.pl readdir installdir arch [files...]
|
||||
# installdir: dir to install the files to
|
||||
# arch: current architecture
|
||||
# arch is used to force a reinstallation when the arch
|
||||
# changes because kbuild then detect a command line change.
|
||||
# files: list of files to check
|
||||
#
|
||||
# Step in preparation for users space:
|
||||
# 1) Drop all use of compiler.h definitions
|
||||
# 2) Drop include of compiler.h
|
||||
# 3) Drop all sections defined out by __KERNEL__ (using unifdef)
|
||||
|
||||
use strict;
|
||||
|
||||
my ($installdir, $arch, @files) = @ARGV;
|
||||
|
||||
my $unifdef = "scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__";
|
||||
|
||||
foreach my $filename (@files) {
|
||||
my $file = $filename;
|
||||
$file =~ s!^.*/!!;
|
||||
|
||||
my $tmpfile = "$installdir/$file.tmp";
|
||||
|
||||
open(my $in, '<', $filename)
|
||||
or die "$filename: $!\n";
|
||||
open(my $out, '>', $tmpfile)
|
||||
or die "$tmpfile: $!\n";
|
||||
while (my $line = <$in>) {
|
||||
$line =~ s/([\s(])__user\s/$1/g;
|
||||
$line =~ s/([\s(])__force\s/$1/g;
|
||||
$line =~ s/([\s(])__iomem\s/$1/g;
|
||||
$line =~ s/\s__attribute_const__\s/ /g;
|
||||
$line =~ s/\s__attribute_const__$//g;
|
||||
$line =~ s/\b__packed\b/__attribute__((packed))/g;
|
||||
$line =~ s/^#include <linux\/compiler.h>//;
|
||||
$line =~ s/(^|\s)(inline)\b/$1__$2__/g;
|
||||
$line =~ s/(^|\s)(asm)\b(\s|[(]|$)/$1__$2__$3/g;
|
||||
$line =~ s/(^|\s|[(])(volatile)\b(\s|[(]|$)/$1__$2__$3/g;
|
||||
$line =~ s/#ifndef\s+_UAPI/#ifndef /;
|
||||
$line =~ s/#define\s+_UAPI/#define /;
|
||||
$line =~ s!#endif\s+/[*]\s*_UAPI!#endif /* !;
|
||||
printf {$out} "%s", $line;
|
||||
}
|
||||
close $out;
|
||||
close $in;
|
||||
|
||||
system $unifdef . " $tmpfile > $installdir/$file";
|
||||
# unifdef will exit 0 on success, and will exit 1 when the
|
||||
# file was processed successfully but no changes were made,
|
||||
# so abort only when it's higher than that.
|
||||
my $e = $? >> 8;
|
||||
if ($e > 1) {
|
||||
die "$tmpfile: $!\n";
|
||||
}
|
||||
unlink $tmpfile;
|
||||
}
|
||||
exit 0;
|
|
@ -0,0 +1,43 @@
|
|||
#!/bin/sh
|
||||
|
||||
if [ $# -lt 1 ]
|
||||
then
|
||||
echo "Usage: headers_install.sh OUTDIR [FILES...]
|
||||
echo
|
||||
echo "Prepares kernel header files for use by user space, by removing"
|
||||
echo "all compiler.h definitions and #includes, removing any"
|
||||
echo "#ifdef __KERNEL__ sections, and putting __underscores__ around"
|
||||
echo "asm/inline/volatile keywords."
|
||||
echo
|
||||
echo "OUTDIR: directory to write each userspace header FILE to."
|
||||
echo "FILES: list of header files to operate on."
|
||||
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Grab arguments
|
||||
|
||||
OUTDIR="$1"
|
||||
shift
|
||||
|
||||
# Iterate through files listed on command line
|
||||
|
||||
FILE=
|
||||
trap 'rm -f "$OUTDIR/$FILE" "$OUTDIR/$FILE.sed"' EXIT
|
||||
for i in "$@"
|
||||
do
|
||||
FILE="$(basename "$i")"
|
||||
sed -r \
|
||||
-e 's/([ \t(])(__user|__force|__iomem)[ \t]/\1/g' \
|
||||
-e 's/__attribute_const__([ \t]|$)/\1/g' \
|
||||
-e 's@^#include <linux/compiler.h>@@' \
|
||||
-e 's/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\1__attribute__((packed))\2/g' \
|
||||
-e 's/(^|[ \t(])(inline|asm|volatile)([ \t(]|$)/\1__\2__\3/g' \
|
||||
-e 's@#(ifndef|define|endif[ \t]*/[*])[ \t]*_UAPI@#\1 @' \
|
||||
"$i" > "$OUTDIR/$FILE.sed" || exit 1
|
||||
scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__ "$OUTDIR/$FILE.sed" \
|
||||
> "$OUTDIR/$FILE"
|
||||
[ $? -gt 1 ] && exit 1
|
||||
rm -f "$OUTDIR/$FILE.sed"
|
||||
done
|
||||
trap - EXIT
|
|
@ -37,6 +37,8 @@ scripts/mod/devicetable-offsets.s: scripts/mod/devicetable-offsets.c FORCE
|
|||
$(obj)/$(devicetable-offsets-file): scripts/mod/devicetable-offsets.s
|
||||
$(call cmd,offsets)
|
||||
|
||||
targets += $(devicetable-offsets-file)
|
||||
|
||||
# dependencies on generated files need to be listed explicitly
|
||||
|
||||
$(obj)/modpost.o $(obj)/file2alias.o $(obj)/sumversion.o: $(obj)/elfconfig.h
|
||||
|
|
Загрузка…
Ссылка в новой задаче