Kbuild updates for v4.17 (2nd)
- pass HOSTLDFLAGS when compiling single .c host programs - build genksyms lexer and parser files instead of using shipped versions - rename *-asn1.[ch] to *.asn1.[ch] for suffix consistency - let the top .gitignore globally ignore artifacts generated by flex, bison, and asn1_compiler - let the top Makefile globally clean artifacts generated by flex, bison, and asn1_compiler - use safer .SECONDARY marker instead of .PRECIOUS to prevent intermediate files from being removed - support -fmacro-prefix-map option to make __FILE__ a relative path - fix # escaping to prepare for the future GNU Make release - clean up deb-pkg by using debian tools instead of handrolled source/changes generation - improve rpm-pkg portability by supporting kernel-install as a fallback of new-kernel-pkg - extend Kconfig listnewconfig target to provide more information -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJa0krLAAoJED2LAQed4NsGyCAP/3Vsb8A4sea7sE3LV6/aFUJp WcAm6PXcip1MXy7GI5yxFciwen3Z3ghQUer7fJKDcHR5c4mRSfKaqWp+TLHd6uux 7I4pV0FNx2PapcPu5T7wNZHN96p3xZC0Z66sq9BCZ/+gNyYmZLIDcBUSIOEk0nzJ IsvD46zy6R6KtEnycShKVscg4JyPXJIw1UBqsPDEFHg5l16ARkghND7e5zTW62Fi 2MqQxNXAksIKpxxoxPH/fIcNp1kFKVxYBH2CW4LQtOjC3GmrozdeV5PUc7yTezPc dpqOuEcIAbMH91bkvhhF+ZBi34YrxRoT4S8B3G9iCXRz+2LRZZaitqO4dAH8Kjbn 0KjkqzNc5TosJXQ8RPTcQlRBi+JmE1bHxICvTx3XNJcqJMqIH0vs3ez/LJKOwhB4 DbAROoxQNfVcOdouHcx2EuCSdHn24BEyzaGFhi04LACpbRLxr8IJS7hSGXRloBYp K3ydRvG/dCZjFRTS+xWWSi3Nzjih2mCctQlH3D4nf4M3vtCX+/k5B9IMEYFfHlvL KoNlK4/1vP/dAJZj0iOqd2ksCA1G6iLoHrFp3E5pdtmb4sVe2Ez3gMt+pxz3htR9 XvjuHOzkWE9eiihs1NsFgQuyP/o3UmNKpDDW0irQ06IFEPXkA/y1mVmeTU3qtrII ZDiwGozIkMMEy/MLkcjE =tD6R -----END PGP SIGNATURE----- Merge tag 'kbuild-v4.17-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild Pull more Kbuild updates from Masahiro Yamada: - pass HOSTLDFLAGS when compiling single .c host programs - build genksyms lexer and parser files instead of using shipped versions - rename *-asn1.[ch] to *.asn1.[ch] for suffix consistency - let the top .gitignore globally ignore artifacts generated by flex, bison, and asn1_compiler - let the top Makefile globally clean artifacts generated by flex, bison, and asn1_compiler - use safer .SECONDARY marker instead of .PRECIOUS to prevent intermediate files from being removed - support -fmacro-prefix-map option to make __FILE__ a relative path - fix # escaping to prepare for the future GNU Make release - clean up deb-pkg by using debian tools instead of handrolled source/changes generation - improve rpm-pkg portability by supporting kernel-install as a fallback of new-kernel-pkg - extend Kconfig listnewconfig target to provide more information * tag 'kbuild-v4.17-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: kconfig: extend output of 'listnewconfig' kbuild: rpm-pkg: use kernel-install as a fallback for new-kernel-pkg Kbuild: fix # escaping in .cmd files for future Make kbuild: deb-pkg: split generating packaging and build kbuild: use -fmacro-prefix-map to make __FILE__ a relative path kbuild: mark $(targets) as .SECONDARY and remove .PRECIOUS markers kbuild: rename *-asn1.[ch] to *.asn1.[ch] kbuild: clean up *-asn1.[ch] patterns from top-level Makefile .gitignore: move *-asn1.[ch] patterns to the top-level .gitignore kbuild: add %.dtb.S and %.dtb to 'targets' automatically kbuild: add %.lex.c and %.tab.[ch] to 'targets' automatically genksyms: generate lexer and parser during build instead of shipping kbuild: clean up *.lex.c and *.tab.[ch] patterns from top-level Makefile .gitignore: move *.lex.c *.tab.[ch] patterns to the top-level .gitignore kbuild: use HOSTLDFLAGS for single .c executables
This commit is contained in:
commit
ca71b3ba4c
41 changed files with 315 additions and 5163 deletions
7
.gitignore
vendored
7
.gitignore
vendored
|
@ -11,6 +11,7 @@
|
|||
#
|
||||
.*
|
||||
*.a
|
||||
*.asn1.[ch]
|
||||
*.bin
|
||||
*.bz2
|
||||
*.c.[012]*.*
|
||||
|
@ -22,6 +23,7 @@
|
|||
*.gz
|
||||
*.i
|
||||
*.ko
|
||||
*.lex.c
|
||||
*.ll
|
||||
*.lst
|
||||
*.lz4
|
||||
|
@ -37,6 +39,7 @@
|
|||
*.so.dbg
|
||||
*.su
|
||||
*.symtypes
|
||||
*.tab.[ch]
|
||||
*.tar
|
||||
*.xz
|
||||
Module.symvers
|
||||
|
@ -129,7 +132,3 @@ all.config
|
|||
|
||||
# Kdevelop4
|
||||
*.kdev4
|
||||
|
||||
#Automatically generated by ASN.1 compiler
|
||||
net/ipv4/netfilter/nf_nat_snmp_basic-asn1.c
|
||||
net/ipv4/netfilter/nf_nat_snmp_basic-asn1.h
|
||||
|
|
5
Makefile
5
Makefile
|
@ -846,6 +846,9 @@ KBUILD_CFLAGS += $(call cc-option,-Werror=incompatible-pointer-types)
|
|||
# Require designated initializers for all marked structures
|
||||
KBUILD_CFLAGS += $(call cc-option,-Werror=designated-init)
|
||||
|
||||
# change __FILE__ to the relative path from the srctree
|
||||
KBUILD_CFLAGS += $(call cc-option,-fmacro-prefix-map=$(srctree)/=)
|
||||
|
||||
# use the deterministic mode of AR if available
|
||||
KBUILD_ARFLAGS := $(call ar-option,D)
|
||||
|
||||
|
@ -1615,6 +1618,8 @@ clean: $(clean-dirs)
|
|||
-o -name '*.dwo' -o -name '*.lst' \
|
||||
-o -name '*.su' \
|
||||
-o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
|
||||
-o -name '*.lex.c' -o -name '*.tab.[ch]' \
|
||||
-o -name '*.asn1.[ch]' \
|
||||
-o -name '*.symtypes' -o -name 'modules.order' \
|
||||
-o -name modules.builtin -o -name '.tmp_*.o.*' \
|
||||
-o -name .cache.mk \
|
||||
|
|
|
@ -9,8 +9,6 @@ endif
|
|||
obj-y += $(builtindtb-y).dtb.o
|
||||
dtb-y := $(builtindtb-y).dtb
|
||||
|
||||
.SECONDARY: $(obj)/$(builtindtb-y).dtb.S
|
||||
|
||||
# for CONFIG_OF_ALL_DTBS test
|
||||
dtstree := $(srctree)/$(src)
|
||||
dtb- := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
|
||||
|
|
|
@ -67,4 +67,4 @@ $(src)/sha512-core.S_shipped: $(src)/sha512-armv4.pl
|
|||
$(call cmd,perl)
|
||||
endif
|
||||
|
||||
.PRECIOUS: $(obj)/sha256-core.S $(obj)/sha512-core.S
|
||||
targets += sha256-core.S sha512-core.S
|
||||
|
|
|
@ -78,4 +78,4 @@ $(src)/sha512-core.S_shipped: $(src)/sha512-armv8.pl
|
|||
$(call cmd,perlasm)
|
||||
endif
|
||||
|
||||
.PRECIOUS: $(obj)/sha256-core.S $(obj)/sha512-core.S
|
||||
targets += sha256-core.S sha512-core.S
|
||||
|
|
|
@ -29,9 +29,7 @@ vdso_img_cfiles := $(vdso_img-y:%=vdso-image-%.c)
|
|||
vdso_img_sodbg := $(vdso_img-y:%=vdso%.so.dbg)
|
||||
obj-y += $(vdso_img_objs)
|
||||
targets += $(vdso_img_cfiles)
|
||||
targets += $(vdso_img_sodbg)
|
||||
.SECONDARY: $(vdso_img-y:%=$(obj)/vdso-image-%.c) \
|
||||
$(vdso_img-y:%=$(obj)/vdso%.so)
|
||||
targets += $(vdso_img_sodbg) $(vdso_img-y:%=vdso%.so)
|
||||
|
||||
export CPPFLAGS_vdso.lds += -P -C
|
||||
|
||||
|
|
|
@ -42,9 +42,7 @@ vdso_img_cfiles := $(vdso_img-y:%=vdso-image-%.c)
|
|||
vdso_img_sodbg := $(vdso_img-y:%=vdso%.so.dbg)
|
||||
obj-y += $(vdso_img_objs)
|
||||
targets += $(vdso_img_cfiles)
|
||||
targets += $(vdso_img_sodbg)
|
||||
.SECONDARY: $(vdso_img-y:%=$(obj)/vdso-image-%.c) \
|
||||
$(vdso_img-y:%=$(obj)/vdso%.so)
|
||||
targets += $(vdso_img_sodbg) $(vdso_img-y:%=vdso%.so)
|
||||
|
||||
export CPPFLAGS_vdso.lds += -P -C
|
||||
|
||||
|
|
1
crypto/.gitignore
vendored
1
crypto/.gitignore
vendored
|
@ -1 +0,0 @@
|
|||
*-asn1.[ch]
|
|
@ -35,14 +35,12 @@ dh_generic-y := dh.o
|
|||
dh_generic-y += dh_helper.o
|
||||
obj-$(CONFIG_CRYPTO_DH) += dh_generic.o
|
||||
|
||||
$(obj)/rsapubkey-asn1.o: $(obj)/rsapubkey-asn1.c $(obj)/rsapubkey-asn1.h
|
||||
$(obj)/rsaprivkey-asn1.o: $(obj)/rsaprivkey-asn1.c $(obj)/rsaprivkey-asn1.h
|
||||
$(obj)/rsa_helper.o: $(obj)/rsapubkey-asn1.h $(obj)/rsaprivkey-asn1.h
|
||||
clean-files += rsapubkey-asn1.c rsapubkey-asn1.h
|
||||
clean-files += rsaprivkey-asn1.c rsaprivkey-asn1.h
|
||||
$(obj)/rsapubkey.asn1.o: $(obj)/rsapubkey.asn1.c $(obj)/rsapubkey.asn1.h
|
||||
$(obj)/rsaprivkey.asn1.o: $(obj)/rsaprivkey.asn1.c $(obj)/rsaprivkey.asn1.h
|
||||
$(obj)/rsa_helper.o: $(obj)/rsapubkey.asn1.h $(obj)/rsaprivkey.asn1.h
|
||||
|
||||
rsa_generic-y := rsapubkey-asn1.o
|
||||
rsa_generic-y += rsaprivkey-asn1.o
|
||||
rsa_generic-y := rsapubkey.asn1.o
|
||||
rsa_generic-y += rsaprivkey.asn1.o
|
||||
rsa_generic-y += rsa.o
|
||||
rsa_generic-y += rsa_helper.o
|
||||
rsa_generic-y += rsa-pkcs1pad.o
|
||||
|
|
1
crypto/asymmetric_keys/.gitignore
vendored
1
crypto/asymmetric_keys/.gitignore
vendored
|
@ -1 +0,0 @@
|
|||
*-asn1.[ch]
|
|
@ -17,35 +17,30 @@ obj-$(CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE) += public_key.o
|
|||
#
|
||||
obj-$(CONFIG_X509_CERTIFICATE_PARSER) += x509_key_parser.o
|
||||
x509_key_parser-y := \
|
||||
x509-asn1.o \
|
||||
x509_akid-asn1.o \
|
||||
x509.asn1.o \
|
||||
x509_akid.asn1.o \
|
||||
x509_cert_parser.o \
|
||||
x509_public_key.o
|
||||
|
||||
$(obj)/x509_cert_parser.o: \
|
||||
$(obj)/x509-asn1.h \
|
||||
$(obj)/x509_akid-asn1.h
|
||||
$(obj)/x509.asn1.h \
|
||||
$(obj)/x509_akid.asn1.h
|
||||
|
||||
$(obj)/x509-asn1.o: $(obj)/x509-asn1.c $(obj)/x509-asn1.h
|
||||
$(obj)/x509_akid-asn1.o: $(obj)/x509_akid-asn1.c $(obj)/x509_akid-asn1.h
|
||||
|
||||
clean-files += x509-asn1.c x509-asn1.h
|
||||
clean-files += x509_akid-asn1.c x509_akid-asn1.h
|
||||
$(obj)/x509.asn1.o: $(obj)/x509.asn1.c $(obj)/x509.asn1.h
|
||||
$(obj)/x509_akid.asn1.o: $(obj)/x509_akid.asn1.c $(obj)/x509_akid.asn1.h
|
||||
|
||||
#
|
||||
# PKCS#7 message handling
|
||||
#
|
||||
obj-$(CONFIG_PKCS7_MESSAGE_PARSER) += pkcs7_message.o
|
||||
pkcs7_message-y := \
|
||||
pkcs7-asn1.o \
|
||||
pkcs7.asn1.o \
|
||||
pkcs7_parser.o \
|
||||
pkcs7_trust.o \
|
||||
pkcs7_verify.o
|
||||
|
||||
$(obj)/pkcs7_parser.o: $(obj)/pkcs7-asn1.h
|
||||
$(obj)/pkcs7-asn1.o: $(obj)/pkcs7-asn1.c $(obj)/pkcs7-asn1.h
|
||||
|
||||
clean-files += pkcs7-asn1.c pkcs7-asn1.h
|
||||
$(obj)/pkcs7_parser.o: $(obj)/pkcs7.asn1.h
|
||||
$(obj)/pkcs7.asn1.o: $(obj)/pkcs7.asn1.c $(obj)/pkcs7.asn1.h
|
||||
|
||||
#
|
||||
# PKCS#7 parser testing key
|
||||
|
@ -62,9 +57,7 @@ obj-$(CONFIG_SIGNED_PE_FILE_VERIFICATION) += verify_signed_pefile.o
|
|||
verify_signed_pefile-y := \
|
||||
verify_pefile.o \
|
||||
mscode_parser.o \
|
||||
mscode-asn1.o
|
||||
mscode.asn1.o
|
||||
|
||||
$(obj)/mscode_parser.o: $(obj)/mscode-asn1.h $(obj)/mscode-asn1.h
|
||||
$(obj)/mscode-asn1.o: $(obj)/mscode-asn1.c $(obj)/mscode-asn1.h
|
||||
|
||||
clean-files += mscode-asn1.c mscode-asn1.h
|
||||
$(obj)/mscode_parser.o: $(obj)/mscode.asn1.h $(obj)/mscode.asn1.h
|
||||
$(obj)/mscode.asn1.o: $(obj)/mscode.asn1.c $(obj)/mscode.asn1.h
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
#include <linux/oid_registry.h>
|
||||
#include <crypto/pkcs7.h>
|
||||
#include "verify_pefile.h"
|
||||
#include "mscode-asn1.h"
|
||||
#include "mscode.asn1.h"
|
||||
|
||||
/*
|
||||
* Parse a Microsoft Individual Code Signing blob
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
#include <linux/oid_registry.h>
|
||||
#include <crypto/public_key.h>
|
||||
#include "pkcs7_parser.h"
|
||||
#include "pkcs7-asn1.h"
|
||||
#include "pkcs7.asn1.h"
|
||||
|
||||
MODULE_DESCRIPTION("PKCS#7 parser");
|
||||
MODULE_AUTHOR("Red Hat, Inc.");
|
||||
|
|
|
@ -17,8 +17,8 @@
|
|||
#include <linux/oid_registry.h>
|
||||
#include <crypto/public_key.h>
|
||||
#include "x509_parser.h"
|
||||
#include "x509-asn1.h"
|
||||
#include "x509_akid-asn1.h"
|
||||
#include "x509.asn1.h"
|
||||
#include "x509_akid.asn1.h"
|
||||
|
||||
struct x509_parse_context {
|
||||
struct x509_certificate *cert; /* Certificate being constructed */
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
#include <linux/err.h>
|
||||
#include <linux/fips.h>
|
||||
#include <crypto/internal/rsa.h>
|
||||
#include "rsapubkey-asn1.h"
|
||||
#include "rsaprivkey-asn1.h"
|
||||
#include "rsapubkey.asn1.h"
|
||||
#include "rsaprivkey.asn1.h"
|
||||
|
||||
int rsa_get_n(void *context, size_t hdrlen, unsigned char tag,
|
||||
const void *value, size_t vlen)
|
||||
|
|
1
drivers/crypto/qat/qat_common/.gitignore
vendored
1
drivers/crypto/qat/qat_common/.gitignore
vendored
|
@ -1 +0,0 @@
|
|||
*-asn1.[ch]
|
|
@ -21,8 +21,6 @@ obj-$(CONFIG_OF_OVERLAY) += overlay.dtb.o \
|
|||
overlay_bad_symbol.dtb.o \
|
||||
overlay_base.dtb.o
|
||||
|
||||
targets += $(foreach suffix, dtb dtb.S, $(patsubst %.dtb.o,%.$(suffix),$(obj-y)))
|
||||
|
||||
# enable creation of __symbols__ node
|
||||
DTC_FLAGS_overlay += -@
|
||||
DTC_FLAGS_overlay_bad_phandle += -@
|
||||
|
@ -32,7 +30,3 @@ DTC_FLAGS_testcases += -@
|
|||
|
||||
# suppress warnings about intentional errors
|
||||
DTC_FLAGS_testcases += -Wno-interrupts_property
|
||||
|
||||
.PRECIOUS: \
|
||||
$(obj)/%.dtb.S \
|
||||
$(obj)/%.dtb
|
||||
|
|
|
@ -28,10 +28,9 @@ obj-$(CONFIG_NF_REJECT_IPV4) += nf_reject_ipv4.o
|
|||
obj-$(CONFIG_NF_NAT_H323) += nf_nat_h323.o
|
||||
obj-$(CONFIG_NF_NAT_PPTP) += nf_nat_pptp.o
|
||||
|
||||
nf_nat_snmp_basic-y := nf_nat_snmp_basic-asn1.o nf_nat_snmp_basic_main.o
|
||||
$(obj)/nf_nat_snmp_basic_main.o: $(obj)/nf_nat_snmp_basic-asn1.h
|
||||
nf_nat_snmp_basic-y := nf_nat_snmp_basic.asn1.o nf_nat_snmp_basic_main.o
|
||||
$(obj)/nf_nat_snmp_basic_main.o: $(obj)/nf_nat_snmp_basic.asn1.h
|
||||
obj-$(CONFIG_NF_NAT_SNMP_BASIC) += nf_nat_snmp_basic.o
|
||||
clean-files := nf_nat_snmp_basic-asn1.c nf_nat_snmp_basic-asn1.h
|
||||
|
||||
obj-$(CONFIG_NF_NAT_MASQUERADE_IPV4) += nf_nat_masquerade_ipv4.o
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@
|
|||
#include <net/netfilter/nf_conntrack_expect.h>
|
||||
#include <net/netfilter/nf_conntrack_helper.h>
|
||||
#include <linux/netfilter/nf_conntrack_snmp.h>
|
||||
#include "nf_nat_snmp_basic-asn1.h"
|
||||
#include "nf_nat_snmp_basic.asn1.h"
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("James Morris <jmorris@intercode.com.au>");
|
||||
|
|
|
@ -10,6 +10,7 @@ space := $(empty) $(empty)
|
|||
space_escape := _-_SPACE_-_
|
||||
right_paren := )
|
||||
left_paren := (
|
||||
pound := \#
|
||||
|
||||
###
|
||||
# Name of target with a '.' as filename prefix. foo/bar.o => foo/.bar.o
|
||||
|
@ -322,11 +323,11 @@ endif
|
|||
|
||||
# Replace >$< with >$$< to preserve $ when reloading the .cmd file
|
||||
# (needed for make)
|
||||
# Replace >#< with >\#< to avoid starting a comment in the .cmd file
|
||||
# Replace >#< with >$(pound)< to avoid starting a comment in the .cmd file
|
||||
# (needed for make)
|
||||
# Replace >'< with >'\''< to be able to enclose the whole string in '...'
|
||||
# (needed for the shell)
|
||||
make-cmd = $(call escsq,$(subst \#,\\\#,$(subst $$,$$$$,$(cmd_$(1)))))
|
||||
make-cmd = $(call escsq,$(subst $(pound),$$(pound),$(subst $$,$$$$,$(cmd_$(1)))))
|
||||
|
||||
# Find any prerequisites that is newer than target or that does not exist.
|
||||
# PHONY targets skipped in both cases.
|
||||
|
|
|
@ -430,9 +430,7 @@ quiet_cmd_asn1_compiler = ASN.1 $@
|
|||
cmd_asn1_compiler = $(objtree)/scripts/asn1_compiler $< \
|
||||
$(subst .h,.c,$@) $(subst .c,.h,$@)
|
||||
|
||||
.PRECIOUS: $(objtree)/$(obj)/%-asn1.c $(objtree)/$(obj)/%-asn1.h
|
||||
|
||||
$(obj)/%-asn1.c $(obj)/%-asn1.h: $(src)/%.asn1 $(objtree)/scripts/asn1_compiler
|
||||
$(obj)/%.asn1.c $(obj)/%.asn1.h: $(src)/%.asn1 $(objtree)/scripts/asn1_compiler
|
||||
$(call cmd,asn1_compiler)
|
||||
|
||||
# Build the compiled-in targets
|
||||
|
@ -538,6 +536,21 @@ $(call multi_depend, $(multi-used-m), .o, -objs -y -m)
|
|||
targets += $(multi-used-m)
|
||||
targets := $(filter-out $(PHONY), $(targets))
|
||||
|
||||
# Add intermediate targets:
|
||||
# When building objects with specific suffix patterns, add intermediate
|
||||
# targets that the final targets are derived from.
|
||||
intermediate_targets = $(foreach sfx, $(2), \
|
||||
$(patsubst %$(strip $(1)),%$(sfx), \
|
||||
$(filter %$(strip $(1)), $(targets))))
|
||||
# %.asn1.o <- %.asn1.[ch] <- %.asn1
|
||||
# %.dtb.o <- %.dtb.S <- %.dtb <- %.dts
|
||||
# %.lex.o <- %.lex.c <- %.l
|
||||
# %.tab.o <- %.tab.[ch] <- %.y
|
||||
targets += $(call intermediate_targets, .asn1.o, .asn1.c .asn1.h) \
|
||||
$(call intermediate_targets, .dtb.o, .dtb.S .dtb) \
|
||||
$(call intermediate_targets, .lex.o, .lex.c) \
|
||||
$(call intermediate_targets, .tab.o, .tab.c .tab.h)
|
||||
|
||||
# Descending
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
|
@ -574,6 +587,10 @@ $(shell mkdir -p $(obj-dirs))
|
|||
endif
|
||||
endif
|
||||
|
||||
# Some files contained in $(targets) are intermediate artifacts.
|
||||
# We never want them to be removed automatically.
|
||||
.SECONDARY: $(targets)
|
||||
|
||||
# Declare the contents of the .PHONY variable as phony. We keep that
|
||||
# information in a variable se we can use it in if_changed and friends.
|
||||
|
||||
|
|
|
@ -84,7 +84,7 @@ hostcxx_flags = -Wp,-MD,$(depfile) $(__hostcxx_flags)
|
|||
# Create executable from a single .c file
|
||||
# host-csingle -> Executable
|
||||
quiet_cmd_host-csingle = HOSTCC $@
|
||||
cmd_host-csingle = $(HOSTCC) $(hostc_flags) -o $@ $< \
|
||||
cmd_host-csingle = $(HOSTCC) $(hostc_flags) $(HOSTLDFLAGS) -o $@ $< \
|
||||
$(HOST_LOADLIBES) $(HOSTLOADLIBES_$(@F))
|
||||
$(host-csingle): $(obj)/%: $(src)/%.c FORCE
|
||||
$(call if_changed_dep,host-csingle)
|
||||
|
|
|
@ -184,14 +184,7 @@ endef
|
|||
quiet_cmd_flex = LEX $@
|
||||
cmd_flex = $(LEX) -o$@ -L $<
|
||||
|
||||
ifdef REGENERATE_PARSERS
|
||||
.PRECIOUS: $(src)/%.lex.c_shipped
|
||||
$(src)/%.lex.c_shipped: $(src)/%.l
|
||||
$(call cmd,flex)
|
||||
endif
|
||||
|
||||
.PRECIOUS: $(obj)/%.lex.c
|
||||
$(filter %.lex.c,$(targets)): $(obj)/%.lex.c: $(src)/%.l FORCE
|
||||
$(obj)/%.lex.c: $(src)/%.l FORCE
|
||||
$(call if_changed,flex)
|
||||
|
||||
# YACC
|
||||
|
@ -199,27 +192,13 @@ $(filter %.lex.c,$(targets)): $(obj)/%.lex.c: $(src)/%.l FORCE
|
|||
quiet_cmd_bison = YACC $@
|
||||
cmd_bison = $(YACC) -o$@ -t -l $<
|
||||
|
||||
ifdef REGENERATE_PARSERS
|
||||
.PRECIOUS: $(src)/%.tab.c_shipped
|
||||
$(src)/%.tab.c_shipped: $(src)/%.y
|
||||
$(call cmd,bison)
|
||||
endif
|
||||
|
||||
.PRECIOUS: $(obj)/%.tab.c
|
||||
$(filter %.tab.c,$(targets)): $(obj)/%.tab.c: $(src)/%.y FORCE
|
||||
$(obj)/%.tab.c: $(src)/%.y FORCE
|
||||
$(call if_changed,bison)
|
||||
|
||||
quiet_cmd_bison_h = YACC $@
|
||||
cmd_bison_h = bison -o/dev/null --defines=$@ -t -l $<
|
||||
|
||||
ifdef REGENERATE_PARSERS
|
||||
.PRECIOUS: $(src)/%.tab.h_shipped
|
||||
$(src)/%.tab.h_shipped: $(src)/%.y
|
||||
$(call cmd,bison_h)
|
||||
endif
|
||||
|
||||
.PRECIOUS: $(obj)/%.tab.h
|
||||
$(filter %.tab.h,$(targets)): $(obj)/%.tab.h: $(src)/%.y FORCE
|
||||
$(obj)/%.tab.h: $(src)/%.y FORCE
|
||||
$(call if_changed,bison_h)
|
||||
|
||||
# Shipped files
|
||||
|
@ -297,8 +276,8 @@ cmd_dt_S_dtb= \
|
|||
echo '.balign STRUCT_ALIGNMENT'; \
|
||||
) > $@
|
||||
|
||||
$(obj)/%.dtb.S: $(obj)/%.dtb
|
||||
$(call cmd,dt_S_dtb)
|
||||
$(obj)/%.dtb.S: $(obj)/%.dtb FORCE
|
||||
$(call if_changed,dt_S_dtb)
|
||||
|
||||
quiet_cmd_dtc = DTC $@
|
||||
cmd_dtc = mkdir -p $(dir ${dtc-tmp}) ; \
|
||||
|
|
|
@ -1319,7 +1319,7 @@ static void render(FILE *out, FILE *hdr)
|
|||
fprintf(out, " * ASN.1 parser for %s\n", grammar_name);
|
||||
fprintf(out, " */\n");
|
||||
fprintf(out, "#include <linux/asn1_ber_bytecode.h>\n");
|
||||
fprintf(out, "#include \"%s-asn1.h\"\n", grammar_name);
|
||||
fprintf(out, "#include \"%s.asn1.h\"\n", grammar_name);
|
||||
fprintf(out, "\n");
|
||||
if (ferror(out)) {
|
||||
perror(outputname);
|
||||
|
|
3
scripts/dtc/.gitignore
vendored
3
scripts/dtc/.gitignore
vendored
|
@ -1,4 +1 @@
|
|||
dtc
|
||||
dtc-lexer.lex.c
|
||||
dtc-parser.tab.c
|
||||
dtc-parser.tab.h
|
||||
|
|
|
@ -27,8 +27,3 @@ HOSTCFLAGS_dtc-parser.tab.o := $(HOSTCFLAGS_DTC)
|
|||
|
||||
# dependencies on generated files need to be listed explicitly
|
||||
$(obj)/dtc-lexer.lex.o: $(obj)/dtc-parser.tab.h
|
||||
|
||||
# generated files need to include *.cmd and be cleaned explicitly
|
||||
generated-files := dtc-lexer.lex.c dtc-parser.tab.c dtc-parser.tab.h
|
||||
targets := $(generated-files)
|
||||
clean-files := $(generated-files)
|
||||
|
|
3
scripts/genksyms/.gitignore
vendored
3
scripts/genksyms/.gitignore
vendored
|
@ -1,4 +1 @@
|
|||
*.lex.c
|
||||
*.tab.c
|
||||
*.tab.h
|
||||
genksyms
|
||||
|
|
|
@ -5,11 +5,34 @@ always := $(hostprogs-y)
|
|||
|
||||
genksyms-objs := genksyms.o parse.tab.o lex.lex.o
|
||||
|
||||
# FIXME: fix the ambiguous grammar in parse.y and delete this hack
|
||||
#
|
||||
# Suppress shift/reduce, reduce/reduce conflicts warnings
|
||||
# unless W=1 is specified.
|
||||
#
|
||||
# Just in case, run "$(YACC) --version" without suppressing stderr
|
||||
# so that 'bison: not found' will be displayed if it is missing.
|
||||
ifeq ($(findstring 1,$(KBUILD_ENABLE_EXTRA_GCC_CHECKS)),)
|
||||
|
||||
quiet_cmd_bison_no_warn = $(quet_cmd_bison)
|
||||
cmd_bison_no_warn = $(YACC) --version >/dev/null; \
|
||||
$(cmd_bison) 2>/dev/null
|
||||
|
||||
$(obj)/parse.tab.c: $(src)/parse.y FORCE
|
||||
$(call if_changed,bison_no_warn)
|
||||
|
||||
quiet_cmd_bison_h_no_warn = $(quet_cmd_bison_h)
|
||||
cmd_bison_h_no_warn = $(YACC) --version >/dev/null; \
|
||||
$(cmd_bison_h) 2>/dev/null
|
||||
|
||||
$(obj)/parse.tab.h: $(src)/parse.y FORCE
|
||||
$(call if_changed,bison_h_no_warn)
|
||||
|
||||
endif
|
||||
|
||||
# -I needed for generated C source (shipped source)
|
||||
HOSTCFLAGS_parse.tab.o := -I$(src)
|
||||
HOSTCFLAGS_lex.lex.o := -I$(src)
|
||||
|
||||
# dependencies on generated files need to be listed explicitly
|
||||
$(obj)/lex.lex.o: $(obj)/parse.tab.h
|
||||
|
||||
clean-files := lex.lex.c parse.tab.c parse.tab.h
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,119 +0,0 @@
|
|||
/* A Bison parser, made by GNU Bison 2.7. */
|
||||
|
||||
/* Bison interface for Yacc-like parsers in C
|
||||
|
||||
Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* As a special exception, you may create a larger work that contains
|
||||
part or all of the Bison parser skeleton and distribute that work
|
||||
under terms of your choice, so long as that work isn't itself a
|
||||
parser generator using the skeleton or a modified version thereof
|
||||
as a parser skeleton. Alternatively, if you modify or redistribute
|
||||
the parser skeleton itself, you may (at your option) remove this
|
||||
special exception, which will cause the skeleton and the resulting
|
||||
Bison output files to be licensed under the GNU General Public
|
||||
License without this special exception.
|
||||
|
||||
This special exception was added by the Free Software Foundation in
|
||||
version 2.2 of Bison. */
|
||||
|
||||
#ifndef YY_YY_SCRIPTS_GENKSYMS_PARSE_TAB_H_SHIPPED_INCLUDED
|
||||
# define YY_YY_SCRIPTS_GENKSYMS_PARSE_TAB_H_SHIPPED_INCLUDED
|
||||
/* Enabling traces. */
|
||||
#ifndef YYDEBUG
|
||||
# define YYDEBUG 1
|
||||
#endif
|
||||
#if YYDEBUG
|
||||
extern int yydebug;
|
||||
#endif
|
||||
|
||||
/* Tokens. */
|
||||
#ifndef YYTOKENTYPE
|
||||
# define YYTOKENTYPE
|
||||
/* Put the tokens into the symbol table, so that GDB and other debuggers
|
||||
know about them. */
|
||||
enum yytokentype {
|
||||
ASM_KEYW = 258,
|
||||
ATTRIBUTE_KEYW = 259,
|
||||
AUTO_KEYW = 260,
|
||||
BOOL_KEYW = 261,
|
||||
CHAR_KEYW = 262,
|
||||
CONST_KEYW = 263,
|
||||
DOUBLE_KEYW = 264,
|
||||
ENUM_KEYW = 265,
|
||||
EXTERN_KEYW = 266,
|
||||
EXTENSION_KEYW = 267,
|
||||
FLOAT_KEYW = 268,
|
||||
INLINE_KEYW = 269,
|
||||
INT_KEYW = 270,
|
||||
LONG_KEYW = 271,
|
||||
REGISTER_KEYW = 272,
|
||||
RESTRICT_KEYW = 273,
|
||||
SHORT_KEYW = 274,
|
||||
SIGNED_KEYW = 275,
|
||||
STATIC_KEYW = 276,
|
||||
STRUCT_KEYW = 277,
|
||||
TYPEDEF_KEYW = 278,
|
||||
UNION_KEYW = 279,
|
||||
UNSIGNED_KEYW = 280,
|
||||
VOID_KEYW = 281,
|
||||
VOLATILE_KEYW = 282,
|
||||
TYPEOF_KEYW = 283,
|
||||
VA_LIST_KEYW = 284,
|
||||
EXPORT_SYMBOL_KEYW = 285,
|
||||
ASM_PHRASE = 286,
|
||||
ATTRIBUTE_PHRASE = 287,
|
||||
TYPEOF_PHRASE = 288,
|
||||
BRACE_PHRASE = 289,
|
||||
BRACKET_PHRASE = 290,
|
||||
EXPRESSION_PHRASE = 291,
|
||||
CHAR = 292,
|
||||
DOTS = 293,
|
||||
IDENT = 294,
|
||||
INT = 295,
|
||||
REAL = 296,
|
||||
STRING = 297,
|
||||
TYPE = 298,
|
||||
OTHER = 299,
|
||||
FILENAME = 300
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
|
||||
typedef int YYSTYPE;
|
||||
# define YYSTYPE_IS_TRIVIAL 1
|
||||
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
|
||||
# define YYSTYPE_IS_DECLARED 1
|
||||
#endif
|
||||
|
||||
extern YYSTYPE yylval;
|
||||
|
||||
#ifdef YYPARSE_PARAM
|
||||
#if defined __STDC__ || defined __cplusplus
|
||||
int yyparse (void *YYPARSE_PARAM);
|
||||
#else
|
||||
int yyparse ();
|
||||
#endif
|
||||
#else /* ! YYPARSE_PARAM */
|
||||
#if defined __STDC__ || defined __cplusplus
|
||||
int yyparse (void);
|
||||
#else
|
||||
int yyparse ();
|
||||
#endif
|
||||
#endif /* ! YYPARSE_PARAM */
|
||||
|
||||
#endif /* !YY_YY_SCRIPTS_GENKSYMS_PARSE_TAB_H_SHIPPED_INCLUDED */
|
3
scripts/kconfig/.gitignore
vendored
3
scripts/kconfig/.gitignore
vendored
|
@ -1,9 +1,6 @@
|
|||
#
|
||||
# Generated files
|
||||
#
|
||||
*.lex.c
|
||||
*.tab.c
|
||||
*.tab.h
|
||||
*.moc
|
||||
gconf.glade.h
|
||||
*.pot
|
||||
|
|
|
@ -207,9 +207,9 @@ gconf-objs := gconf.o zconf.tab.o
|
|||
|
||||
hostprogs-y := conf nconf mconf kxgettext qconf gconf
|
||||
|
||||
targets += zconf.tab.c zconf.lex.c
|
||||
targets += zconf.lex.c
|
||||
clean-files := qconf.moc .tmp_qtcheck .tmp_gtkcheck
|
||||
clean-files += zconf.tab.c zconf.lex.c gconf.glade.h
|
||||
clean-files += gconf.glade.h
|
||||
clean-files += config.pot linux.pot
|
||||
|
||||
# Check that we have the required ncurses stuff installed for lxdialog (menuconfig)
|
||||
|
|
|
@ -422,8 +422,18 @@ static void check_conf(struct menu *menu)
|
|||
if (sym_is_changable(sym) ||
|
||||
(sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) {
|
||||
if (input_mode == listnewconfig) {
|
||||
if (sym->name && !sym_is_choice_value(sym)) {
|
||||
printf("%s%s\n", CONFIG_, sym->name);
|
||||
if (sym->name) {
|
||||
const char *str;
|
||||
|
||||
if (sym->type == S_STRING) {
|
||||
str = sym_get_string_value(sym);
|
||||
str = sym_escape_string_value(str);
|
||||
printf("%s%s=%s\n", CONFIG_, sym->name, str);
|
||||
free((void *)str);
|
||||
} else {
|
||||
str = sym_get_string_value(sym);
|
||||
printf("%s%s=%s\n", CONFIG_, sym->name, str);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (!conf_cnt++)
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
# Remove hyphens since they have special meaning in RPM filenames
|
||||
KERNELPATH := kernel-$(subst -,_,$(KERNELRELEASE))
|
||||
KDEB_SOURCENAME ?= linux-$(KERNELRELEASE)
|
||||
KBUILD_PKG_ROOTCMD ?="fakeroot -u"
|
||||
export KDEB_SOURCENAME
|
||||
# Include only those top-level files that are needed by make, plus the GPL copy
|
||||
TAR_CONTENT := $(KBUILD_ALLDIRS) .config .scmversion Makefile \
|
||||
|
@ -66,35 +67,20 @@ binrpm-pkg: FORCE
|
|||
|
||||
clean-files += $(objtree)/*.spec
|
||||
|
||||
# Deb target
|
||||
# ---------------------------------------------------------------------------
|
||||
quiet_cmd_builddeb = BUILDDEB
|
||||
cmd_builddeb = set -e; \
|
||||
test `id -u` = 0 || \
|
||||
test -n "$(KBUILD_PKG_ROOTCMD)" || { \
|
||||
which fakeroot >/dev/null 2>&1 && \
|
||||
KBUILD_PKG_ROOTCMD="fakeroot -u"; \
|
||||
} || { \
|
||||
echo; \
|
||||
echo "builddeb must be run as root (or using fakeroot)."; \
|
||||
echo "KBUILD_PKG_ROOTCMD is unset and fakeroot not found."; \
|
||||
echo "Try setting KBUILD_PKG_ROOTCMD to a command to acquire"; \
|
||||
echo "root privileges (e.g., 'fakeroot -u' or 'sudo')."; \
|
||||
false; \
|
||||
} && \
|
||||
\
|
||||
$$KBUILD_PKG_ROOTCMD $(CONFIG_SHELL) \
|
||||
$(srctree)/scripts/package/builddeb $@
|
||||
|
||||
deb-pkg: FORCE
|
||||
$(MAKE) clean
|
||||
$(CONFIG_SHELL) $(srctree)/scripts/package/mkdebian
|
||||
$(call cmd,src_tar,$(KDEB_SOURCENAME))
|
||||
$(MAKE) KBUILD_SRC=
|
||||
+$(call cmd,builddeb)
|
||||
origversion=$$(dpkg-parsechangelog -SVersion |sed 's/-[^-]*$$//');\
|
||||
mv $(KDEB_SOURCENAME).tar.gz ../$(KDEB_SOURCENAME)_$${origversion}.orig.tar.gz
|
||||
+dpkg-buildpackage -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch) -i.git -us -uc
|
||||
|
||||
bindeb-pkg: FORCE
|
||||
$(MAKE) KBUILD_SRC=
|
||||
+$(call cmd,builddeb)
|
||||
$(CONFIG_SHELL) $(srctree)/scripts/package/mkdebian
|
||||
+dpkg-buildpackage -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch) -b -nc -uc
|
||||
|
||||
intdeb-pkg: FORCE
|
||||
+$(CONFIG_SHELL) $(srctree)/scripts/package/builddeb
|
||||
|
||||
clean-dirs += $(objtree)/debian/
|
||||
|
||||
|
|
|
@ -30,67 +30,11 @@ create_package() {
|
|||
chmod -R a+rX "$pdir"
|
||||
|
||||
# Create the package
|
||||
dpkg-gencontrol $forcearch -Vkernel:debarch="${debarch}" -p$pname -P"$pdir"
|
||||
dpkg-gencontrol -p$pname -P"$pdir"
|
||||
dpkg --build "$pdir" ..
|
||||
}
|
||||
|
||||
set_debarch() {
|
||||
# Attempt to find the correct Debian architecture
|
||||
case "$UTS_MACHINE" in
|
||||
i386|ia64|alpha)
|
||||
debarch="$UTS_MACHINE" ;;
|
||||
x86_64)
|
||||
debarch=amd64 ;;
|
||||
sparc*)
|
||||
debarch=sparc ;;
|
||||
s390*)
|
||||
debarch=s390$(grep -q CONFIG_64BIT=y $KCONFIG_CONFIG && echo x || true) ;;
|
||||
ppc*)
|
||||
debarch=$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo ppc64el || echo powerpc) ;;
|
||||
parisc*)
|
||||
debarch=hppa ;;
|
||||
mips*)
|
||||
debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el || true) ;;
|
||||
aarch64|arm64)
|
||||
debarch=arm64 ;;
|
||||
arm*)
|
||||
if grep -q CONFIG_AEABI=y $KCONFIG_CONFIG; then
|
||||
if grep -q CONFIG_VFP=y $KCONFIG_CONFIG; then
|
||||
debarch=armhf
|
||||
else
|
||||
debarch=armel
|
||||
fi
|
||||
else
|
||||
debarch=arm
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
debarch=$(dpkg --print-architecture)
|
||||
echo "" >&2
|
||||
echo "** ** ** WARNING ** ** **" >&2
|
||||
echo "" >&2
|
||||
echo "Your architecture doesn't have its equivalent" >&2
|
||||
echo "Debian userspace architecture defined!" >&2
|
||||
echo "Falling back to using your current userspace instead!" >&2
|
||||
echo "Please add support for $UTS_MACHINE to ${0} ..." >&2
|
||||
echo "" >&2
|
||||
esac
|
||||
if [ -n "$KBUILD_DEBARCH" ] ; then
|
||||
debarch="$KBUILD_DEBARCH"
|
||||
fi
|
||||
forcearch="-DArchitecture=$debarch"
|
||||
|
||||
}
|
||||
|
||||
# Some variables and settings used throughout the script
|
||||
version=$KERNELRELEASE
|
||||
revision=$(cat .version)
|
||||
if [ -n "$KDEB_PKGVERSION" ]; then
|
||||
packageversion=$KDEB_PKGVERSION
|
||||
else
|
||||
packageversion=$version-$revision
|
||||
fi
|
||||
sourcename=$KDEB_SOURCENAME
|
||||
tmpdir="$objtree/debian/tmp"
|
||||
kernel_headers_dir="$objtree/debian/hdrtmp"
|
||||
libc_headers_dir="$objtree/debian/headertmp"
|
||||
|
@ -99,9 +43,6 @@ packagename=linux-image-$version
|
|||
kernel_headers_packagename=linux-headers-$version
|
||||
libc_headers_packagename=linux-libc-dev
|
||||
dbg_packagename=$packagename-dbg
|
||||
debarch=
|
||||
forcearch=
|
||||
set_debarch
|
||||
|
||||
if [ "$ARCH" = "um" ] ; then
|
||||
packagename=user-mode-linux-$version
|
||||
|
@ -212,105 +153,6 @@ EOF
|
|||
chmod 755 "$tmpdir/DEBIAN/$script"
|
||||
done
|
||||
|
||||
# Try to determine maintainer and email values
|
||||
if [ -n "$DEBEMAIL" ]; then
|
||||
email=$DEBEMAIL
|
||||
elif [ -n "$EMAIL" ]; then
|
||||
email=$EMAIL
|
||||
else
|
||||
email=$(id -nu)@$(hostname -f 2>/dev/null || hostname)
|
||||
fi
|
||||
if [ -n "$DEBFULLNAME" ]; then
|
||||
name=$DEBFULLNAME
|
||||
elif [ -n "$NAME" ]; then
|
||||
name=$NAME
|
||||
else
|
||||
name="Anonymous"
|
||||
fi
|
||||
maintainer="$name <$email>"
|
||||
|
||||
# Try to determine distribution
|
||||
if [ -n "$KDEB_CHANGELOG_DIST" ]; then
|
||||
distribution=$KDEB_CHANGELOG_DIST
|
||||
# In some cases lsb_release returns the codename as n/a, which breaks dpkg-parsechangelog
|
||||
elif distribution=$(lsb_release -cs 2>/dev/null) && [ -n "$distribution" ] && [ "$distribution" != "n/a" ]; then
|
||||
: # nothing to do in this case
|
||||
else
|
||||
distribution="unstable"
|
||||
echo >&2 "Using default distribution of 'unstable' in the changelog"
|
||||
echo >&2 "Install lsb-release or set \$KDEB_CHANGELOG_DIST explicitly"
|
||||
fi
|
||||
|
||||
# Generate a simple changelog template
|
||||
cat <<EOF > debian/changelog
|
||||
$sourcename ($packageversion) $distribution; urgency=low
|
||||
|
||||
* Custom built Linux kernel.
|
||||
|
||||
-- $maintainer $(date -R)
|
||||
EOF
|
||||
|
||||
# Generate copyright file
|
||||
cat <<EOF > debian/copyright
|
||||
This is a packacked upstream version of the Linux kernel.
|
||||
|
||||
The sources may be found at most Linux archive sites, including:
|
||||
https://www.kernel.org/pub/linux/kernel
|
||||
|
||||
Copyright: 1991 - 2017 Linus Torvalds and others.
|
||||
|
||||
The git repository for mainline kernel development is at:
|
||||
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; version 2 dated June, 1991.
|
||||
|
||||
On Debian GNU/Linux systems, the complete text of the GNU General Public
|
||||
License version 2 can be found in \`/usr/share/common-licenses/GPL-2'.
|
||||
EOF
|
||||
|
||||
|
||||
build_depends="bc, kmod, cpio "
|
||||
|
||||
# Generate a control file
|
||||
cat <<EOF > debian/control
|
||||
Source: $sourcename
|
||||
Section: kernel
|
||||
Priority: optional
|
||||
Maintainer: $maintainer
|
||||
Build-Depends: $build_depends
|
||||
Homepage: http://www.kernel.org/
|
||||
EOF
|
||||
|
||||
if [ "$ARCH" = "um" ]; then
|
||||
cat <<EOF >> debian/control
|
||||
|
||||
Package: $packagename
|
||||
Architecture: any
|
||||
Description: User Mode Linux kernel, version $version
|
||||
User-mode Linux is a port of the Linux kernel to its own system call
|
||||
interface. It provides a kind of virtual machine, which runs Linux
|
||||
as a user process under another Linux kernel. This is useful for
|
||||
kernel development, sandboxes, jails, experimentation, and
|
||||
many other things.
|
||||
.
|
||||
This package contains the Linux kernel, modules and corresponding other
|
||||
files, version: $version.
|
||||
EOF
|
||||
|
||||
else
|
||||
cat <<EOF >> debian/control
|
||||
|
||||
Package: $packagename
|
||||
Architecture: any
|
||||
Description: Linux kernel, version $version
|
||||
This package contains the Linux kernel, modules and corresponding other
|
||||
files, version: $version.
|
||||
EOF
|
||||
|
||||
fi
|
||||
|
||||
# Build kernel header package
|
||||
(cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl) > "$objtree/debian/hdrsrcfiles"
|
||||
(cd $srctree; find arch/*/include include scripts -type f -o -type l) >> "$objtree/debian/hdrsrcfiles"
|
||||
|
@ -331,27 +173,6 @@ mkdir -p "$destdir"
|
|||
ln -sf "/usr/src/linux-headers-$version" "$kernel_headers_dir/lib/modules/$version/build"
|
||||
rm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles"
|
||||
|
||||
cat <<EOF >> debian/control
|
||||
|
||||
Package: $kernel_headers_packagename
|
||||
Architecture: any
|
||||
Description: Linux kernel headers for $KERNELRELEASE on \${kernel:debarch}
|
||||
This package provides kernel header files for $KERNELRELEASE on \${kernel:debarch}
|
||||
.
|
||||
This is useful for people who need to build external modules
|
||||
EOF
|
||||
|
||||
cat <<EOF >> debian/control
|
||||
|
||||
Package: $libc_headers_packagename
|
||||
Section: devel
|
||||
Provides: linux-kernel-headers
|
||||
Architecture: any
|
||||
Description: Linux support headers for userspace development
|
||||
This package provides userspaces headers from the Linux kernel. These headers
|
||||
are used by the installed headers for GNU glibc and other system libraries.
|
||||
EOF
|
||||
|
||||
if [ "$ARCH" != "um" ]; then
|
||||
create_package "$kernel_headers_packagename" "$kernel_headers_dir"
|
||||
create_package "$libc_headers_packagename" "$libc_headers_dir"
|
||||
|
@ -370,47 +191,7 @@ if [ -n "$BUILD_DEBUG" ] ; then
|
|||
ln -s ../lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/boot/vmlinux-$version
|
||||
# kdump-tools
|
||||
ln -s lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/vmlinux-$version
|
||||
|
||||
cat <<EOF >> debian/control
|
||||
|
||||
Package: $dbg_packagename
|
||||
Section: debug
|
||||
Architecture: any
|
||||
Description: Linux kernel debugging symbols for $version
|
||||
This package will come in handy if you need to debug the kernel. It provides
|
||||
all the necessary debug symbols for the kernel and its modules.
|
||||
EOF
|
||||
|
||||
create_package "$dbg_packagename" "$dbg_dir"
|
||||
fi
|
||||
|
||||
if [ "x$1" = "xdeb-pkg" ]
|
||||
then
|
||||
cat <<EOF > debian/rules
|
||||
#!/usr/bin/make -f
|
||||
|
||||
build:
|
||||
\$(MAKE)
|
||||
|
||||
binary-arch:
|
||||
\$(MAKE) KDEB_SOURCENAME=${sourcename} KDEB_PKGVERSION=${packageversion} bindeb-pkg
|
||||
|
||||
clean:
|
||||
rm -rf debian/*tmp debian/files
|
||||
mv debian/ debian.backup # debian/ might be cleaned away
|
||||
\$(MAKE) clean
|
||||
mv debian.backup debian
|
||||
|
||||
binary: binary-arch
|
||||
EOF
|
||||
mv ${sourcename}.tar.gz ../${sourcename}_${version}.orig.tar.gz
|
||||
tar caf ../${sourcename}_${packageversion}.debian.tar.gz debian/{copyright,rules,changelog,control}
|
||||
dpkg-source -cdebian/control -ldebian/changelog --format="3.0 (custom)" --target-format="3.0 (quilt)" \
|
||||
-b / ../${sourcename}_${version}.orig.tar.gz ../${sourcename}_${packageversion}.debian.tar.gz
|
||||
mv ${sourcename}_${packageversion}*dsc ..
|
||||
dpkg-genchanges -Vkernel:debarch="${debarch}" > ../${sourcename}_${packageversion}_${debarch}.changes
|
||||
else
|
||||
dpkg-genchanges -b -Vkernel:debarch="${debarch}" > ../${sourcename}_${packageversion}_${debarch}.changes
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
|
189
scripts/package/mkdebian
Executable file
189
scripts/package/mkdebian
Executable file
|
@ -0,0 +1,189 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Copyright 2003 Wichert Akkerman <wichert@wiggy.net>
|
||||
#
|
||||
# Simple script to generate a debian/ directory for a Linux kernel.
|
||||
|
||||
set -e
|
||||
|
||||
set_debarch() {
|
||||
# Attempt to find the correct Debian architecture
|
||||
case "$UTS_MACHINE" in
|
||||
i386|ia64|alpha)
|
||||
debarch="$UTS_MACHINE" ;;
|
||||
x86_64)
|
||||
debarch=amd64 ;;
|
||||
sparc*)
|
||||
debarch=sparc ;;
|
||||
s390*)
|
||||
debarch=s390$(grep -q CONFIG_64BIT=y $KCONFIG_CONFIG && echo x || true) ;;
|
||||
ppc*)
|
||||
debarch=$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo ppc64el || echo powerpc) ;;
|
||||
parisc*)
|
||||
debarch=hppa ;;
|
||||
mips*)
|
||||
debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el || true) ;;
|
||||
aarch64|arm64)
|
||||
debarch=arm64 ;;
|
||||
arm*)
|
||||
if grep -q CONFIG_AEABI=y $KCONFIG_CONFIG; then
|
||||
if grep -q CONFIG_VFP=y $KCONFIG_CONFIG; then
|
||||
debarch=armhf
|
||||
else
|
||||
debarch=armel
|
||||
fi
|
||||
else
|
||||
debarch=arm
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
debarch=$(dpkg --print-architecture)
|
||||
echo "" >&2
|
||||
echo "** ** ** WARNING ** ** **" >&2
|
||||
echo "" >&2
|
||||
echo "Your architecture doesn't have its equivalent" >&2
|
||||
echo "Debian userspace architecture defined!" >&2
|
||||
echo "Falling back to using your current userspace instead!" >&2
|
||||
echo "Please add support for $UTS_MACHINE to ${0} ..." >&2
|
||||
echo "" >&2
|
||||
esac
|
||||
if [ -n "$KBUILD_DEBARCH" ] ; then
|
||||
debarch="$KBUILD_DEBARCH"
|
||||
fi
|
||||
}
|
||||
|
||||
# Some variables and settings used throughout the script
|
||||
version=$KERNELRELEASE
|
||||
if [ -n "$KDEB_PKGVERSION" ]; then
|
||||
packageversion=$KDEB_PKGVERSION
|
||||
else
|
||||
revision=$(cat .version 2>/dev/null||echo 1)
|
||||
packageversion=$version-$revision
|
||||
fi
|
||||
sourcename=$KDEB_SOURCENAME
|
||||
packagename=linux-image-$version
|
||||
kernel_headers_packagename=linux-headers-$version
|
||||
dbg_packagename=$packagename-dbg
|
||||
debarch=
|
||||
set_debarch
|
||||
|
||||
if [ "$ARCH" = "um" ] ; then
|
||||
packagename=user-mode-linux-$version
|
||||
fi
|
||||
|
||||
# Try to determine maintainer and email values
|
||||
if [ -n "$DEBEMAIL" ]; then
|
||||
email=$DEBEMAIL
|
||||
elif [ -n "$EMAIL" ]; then
|
||||
email=$EMAIL
|
||||
else
|
||||
email=$(id -nu)@$(hostname -f 2>/dev/null || hostname)
|
||||
fi
|
||||
if [ -n "$DEBFULLNAME" ]; then
|
||||
name=$DEBFULLNAME
|
||||
elif [ -n "$NAME" ]; then
|
||||
name=$NAME
|
||||
else
|
||||
name="Anonymous"
|
||||
fi
|
||||
maintainer="$name <$email>"
|
||||
|
||||
# Try to determine distribution
|
||||
if [ -n "$KDEB_CHANGELOG_DIST" ]; then
|
||||
distribution=$KDEB_CHANGELOG_DIST
|
||||
# In some cases lsb_release returns the codename as n/a, which breaks dpkg-parsechangelog
|
||||
elif distribution=$(lsb_release -cs 2>/dev/null) && [ -n "$distribution" ] && [ "$distribution" != "n/a" ]; then
|
||||
: # nothing to do in this case
|
||||
else
|
||||
distribution="unstable"
|
||||
echo >&2 "Using default distribution of 'unstable' in the changelog"
|
||||
echo >&2 "Install lsb-release or set \$KDEB_CHANGELOG_DIST explicitly"
|
||||
fi
|
||||
|
||||
mkdir -p debian/
|
||||
echo $debarch > debian/arch
|
||||
|
||||
# Generate a simple changelog template
|
||||
cat <<EOF > debian/changelog
|
||||
$sourcename ($packageversion) $distribution; urgency=low
|
||||
|
||||
* Custom built Linux kernel.
|
||||
|
||||
-- $maintainer $(date -R)
|
||||
EOF
|
||||
|
||||
# Generate copyright file
|
||||
cat <<EOF > debian/copyright
|
||||
This is a packacked upstream version of the Linux kernel.
|
||||
|
||||
The sources may be found at most Linux archive sites, including:
|
||||
https://www.kernel.org/pub/linux/kernel
|
||||
|
||||
Copyright: 1991 - 2018 Linus Torvalds and others.
|
||||
|
||||
The git repository for mainline kernel development is at:
|
||||
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; version 2 dated June, 1991.
|
||||
|
||||
On Debian GNU/Linux systems, the complete text of the GNU General Public
|
||||
License version 2 can be found in \`/usr/share/common-licenses/GPL-2'.
|
||||
EOF
|
||||
|
||||
# Generate a control file
|
||||
cat <<EOF > debian/control
|
||||
Source: $sourcename
|
||||
Section: kernel
|
||||
Priority: optional
|
||||
Maintainer: $maintainer
|
||||
Build-Depends: bc, kmod, cpio
|
||||
Homepage: http://www.kernel.org/
|
||||
|
||||
Package: $packagename
|
||||
Architecture: $debarch
|
||||
Description: Linux kernel, version $version
|
||||
This package contains the Linux kernel, modules and corresponding other
|
||||
files, version: $version.
|
||||
|
||||
Package: $kernel_headers_packagename
|
||||
Architecture: $debarch
|
||||
Description: Linux kernel headers for $version on $debarch
|
||||
This package provides kernel header files for $version on $debarch
|
||||
.
|
||||
This is useful for people who need to build external modules
|
||||
|
||||
Package: linux-libc-dev
|
||||
Section: devel
|
||||
Provides: linux-kernel-headers
|
||||
Architecture: $debarch
|
||||
Description: Linux support headers for userspace development
|
||||
This package provides userspaces headers from the Linux kernel. These headers
|
||||
are used by the installed headers for GNU glibc and other system libraries.
|
||||
|
||||
Package: $dbg_packagename
|
||||
Section: debug
|
||||
Architecture: $debarch
|
||||
Description: Linux kernel debugging symbols for $version
|
||||
This package will come in handy if you need to debug the kernel. It provides
|
||||
all the necessary debug symbols for the kernel and its modules.
|
||||
EOF
|
||||
|
||||
cat <<EOF > debian/rules
|
||||
#!$(command -v $MAKE) -f
|
||||
|
||||
build:
|
||||
\$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} KBUILD_SRC=
|
||||
|
||||
binary-arch:
|
||||
\$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} KBUILD_SRC= intdeb-pkg
|
||||
|
||||
clean:
|
||||
rm -rf debian/*tmp debian/files
|
||||
\$(MAKE) clean
|
||||
|
||||
binary: binary-arch
|
||||
EOF
|
||||
|
||||
exit 0
|
|
@ -118,6 +118,8 @@ $S$M ln -sf /usr/src/kernels/$KERNELRELEASE source
|
|||
%preun
|
||||
if [ -x /sbin/new-kernel-pkg ]; then
|
||||
new-kernel-pkg --remove $KERNELRELEASE --rminitrd --initrdfile=/boot/initramfs-$KERNELRELEASE.img
|
||||
elif [ -x /usr/bin/kernel-install ]; then
|
||||
kernel-install remove $KERNELRELEASE
|
||||
fi
|
||||
|
||||
%postun
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
# Convenient variables
|
||||
comma := ,
|
||||
squote := '
|
||||
pound := \#
|
||||
|
||||
###
|
||||
# Name of target with a '.' as filename prefix. foo/bar.o => foo/.bar.o
|
||||
|
@ -43,11 +44,11 @@ echo-cmd = $(if $($(quiet)cmd_$(1)),\
|
|||
###
|
||||
# Replace >$< with >$$< to preserve $ when reloading the .cmd file
|
||||
# (needed for make)
|
||||
# Replace >#< with >\#< to avoid starting a comment in the .cmd file
|
||||
# Replace >#< with >$(pound)< to avoid starting a comment in the .cmd file
|
||||
# (needed for make)
|
||||
# Replace >'< with >'\''< to be able to enclose the whole string in '...'
|
||||
# (needed for the shell)
|
||||
make-cmd = $(call escsq,$(subst \#,\\\#,$(subst $$,$$$$,$(cmd_$(1)))))
|
||||
make-cmd = $(call escsq,$(subst $(pound),$$(pound),$(subst $$,$$$$,$(cmd_$(1)))))
|
||||
|
||||
###
|
||||
# Find any prerequisites that is newer than target or that does not exist.
|
||||
|
|
|
@ -35,7 +35,7 @@ CFLAGS += -Wall -Werror $(WARNINGS) -fomit-frame-pointer -O2 -g $(INCLUDES)
|
|||
LDFLAGS += -lelf $(LIBSUBCMD)
|
||||
|
||||
# Allow old libelf to be used:
|
||||
elfshdr := $(shell echo '\#include <libelf.h>' | $(CC) $(CFLAGS) -x c -E - | grep elf_getshdr)
|
||||
elfshdr := $(shell echo '$(pound)include <libelf.h>' | $(CC) $(CFLAGS) -x c -E - | grep elf_getshdr)
|
||||
CFLAGS += $(if $(elfshdr),,-DLIBELF_USE_DEPRECATED)
|
||||
|
||||
AWK = awk
|
||||
|
|
|
@ -120,3 +120,5 @@ ifneq ($(silent),1)
|
|||
QUIET_UNINST = @printf ' UNINST %s\n' $1;
|
||||
endif
|
||||
endif
|
||||
|
||||
pound := \#
|
||||
|
|
Loading…
Reference in a new issue