mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-03-31 11:24:37 +00:00
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:
commit
57c29bd3cd
6 changed files with 49 additions and 67 deletions
|
@ -593,7 +593,7 @@ more details, with real examples.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
#Makefile
|
#Makefile
|
||||||
LDFLAGS_vmlinux += $(call really-ld-option, -X)
|
LDFLAGS_vmlinux += $(call ld-option, -X)
|
||||||
|
|
||||||
|
|
||||||
=== 4 Host Program support
|
=== 4 Host Program support
|
||||||
|
|
|
@ -148,7 +148,7 @@ cc-ldoption = $(call try-run,\
|
||||||
# ld-option
|
# ld-option
|
||||||
# Usage: LDFLAGS += $(call ld-option, -X)
|
# Usage: LDFLAGS += $(call ld-option, -X)
|
||||||
ld-option = $(call try-run,\
|
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
|
# ar-option
|
||||||
# Usage: KBUILD_ARFLAGS := $(call ar-option,D)
|
# 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))\
|
quiet_cmd_install = INSTALL $(printdir) ($(words $(all-files))\
|
||||||
file$(if $(word 2, $(all-files)),s))
|
file$(if $(word 2, $(all-files)),s))
|
||||||
cmd_install = \
|
cmd_install = \
|
||||||
$(PERL) $< $(installdir) $(SRCARCH) $(input-files); \
|
$(CONFIG_SHELL) $< $(installdir) $(input-files); \
|
||||||
for F in $(wrapper-files); do \
|
for F in $(wrapper-files); do \
|
||||||
echo "\#include <asm-generic/$$F>" > $(installdir)/$$F; \
|
echo "\#include <asm-generic/$$F>" > $(installdir)/$$F; \
|
||||||
done; \
|
done; \
|
||||||
|
@ -98,7 +98,7 @@ __headersinst: $(subdirs) $(install-file)
|
||||||
@:
|
@:
|
||||||
|
|
||||||
targets += $(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 $(unwanted),$(call cmd,remove),)
|
||||||
$(if $(wildcard $(dir $@)),,$(shell mkdir -p $(dir $@)))
|
$(if $(wildcard $(dir $@)),,$(shell mkdir -p $(dir $@)))
|
||||||
$(call if_changed,install)
|
$(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;
|
|
43
scripts/headers_install.sh
Normal file
43
scripts/headers_install.sh
Normal file
|
@ -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
|
$(obj)/$(devicetable-offsets-file): scripts/mod/devicetable-offsets.s
|
||||||
$(call cmd,offsets)
|
$(call cmd,offsets)
|
||||||
|
|
||||||
|
targets += $(devicetable-offsets-file)
|
||||||
|
|
||||||
# dependencies on generated files need to be listed explicitly
|
# dependencies on generated files need to be listed explicitly
|
||||||
|
|
||||||
$(obj)/modpost.o $(obj)/file2alias.o $(obj)/sumversion.o: $(obj)/elfconfig.h
|
$(obj)/modpost.o $(obj)/file2alias.o $(obj)/sumversion.o: $(obj)/elfconfig.h
|
||||||
|
|
Loading…
Add table
Reference in a new issue