mirror of
https://github.com/adulau/aha.git
synced 2024-12-26 18:56:14 +00:00
Merge branch 'for-33' of git://repo.or.cz/linux-kbuild
* 'for-33' of git://repo.or.cz/linux-kbuild: (29 commits) net: fix for utsrelease.h moving to generated gen_init_cpio: fixed fwrite warning kbuild: fix make clean after mismerge kbuild: generate modules.builtin genksyms: properly consider EXPORT_UNUSED_SYMBOL{,_GPL}() score: add asm/asm-offsets.h wrapper unifdef: update to upstream revision 1.190 kbuild: specify absolute paths for cscope kbuild: create include/generated in silentoldconfig scripts/package: deb-pkg: use fakeroot if available scripts/package: add KBUILD_PKG_ROOTCMD variable scripts/package: tar-pkg: use tar --owner=root Kbuild: clean up marker net: add net_tstamp.h to headers_install kbuild: move utsrelease.h to include/generated kbuild: move autoconf.h to include/generated drop explicit include of autoconf.h kbuild: move compile.h to include/generated kbuild: drop include/asm kbuild: do not check for include/asm-$ARCH ... Fixed non-conflicting clean merge of modpost.c as per comments from Stephen Rothwell (modpost.c had grown an include of linux/autoconf.h that needed to be changed to generated/autoconf.h)
This commit is contained in:
commit
5a865c0606
90 changed files with 577 additions and 422 deletions
7
.gitignore
vendored
7
.gitignore
vendored
|
@ -22,6 +22,7 @@
|
|||
*.lst
|
||||
*.symtypes
|
||||
*.order
|
||||
modules.builtin
|
||||
*.elf
|
||||
*.bin
|
||||
*.gz
|
||||
|
@ -45,14 +46,8 @@ Module.symvers
|
|||
#
|
||||
# Generated include files
|
||||
#
|
||||
include/asm
|
||||
include/asm-*/asm-offsets.h
|
||||
include/config
|
||||
include/linux/autoconf.h
|
||||
include/linux/compile.h
|
||||
include/linux/version.h
|
||||
include/linux/utsrelease.h
|
||||
include/linux/bounds.h
|
||||
include/generated
|
||||
|
||||
# stgit generated dirs
|
||||
|
|
|
@ -103,6 +103,7 @@ gconf
|
|||
gen-devlist
|
||||
gen_crc32table
|
||||
gen_init_cpio
|
||||
generated
|
||||
genheaders
|
||||
genksyms
|
||||
*_gray256.c
|
||||
|
|
|
@ -1,3 +1,17 @@
|
|||
Output files
|
||||
|
||||
modules.order
|
||||
--------------------------------------------------
|
||||
This file records the order in which modules appear in Makefiles. This
|
||||
is used by modprobe to deterministically resolve aliases that match
|
||||
multiple modules.
|
||||
|
||||
modules.builtin
|
||||
--------------------------------------------------
|
||||
This file lists all modules that are built into the kernel. This is used
|
||||
by modprobe to not fail when trying to load something builtin.
|
||||
|
||||
|
||||
Environment variables
|
||||
|
||||
KCPPFLAGS
|
||||
|
|
|
@ -103,10 +103,16 @@ KCONFIG_AUTOCONFIG
|
|||
This environment variable can be set to specify the path & name of the
|
||||
"auto.conf" file. Its default value is "include/config/auto.conf".
|
||||
|
||||
KCONFIG_TRISTATE
|
||||
--------------------------------------------------
|
||||
This environment variable can be set to specify the path & name of the
|
||||
"tristate.conf" file. Its default value is "include/config/tristate.conf".
|
||||
|
||||
KCONFIG_AUTOHEADER
|
||||
--------------------------------------------------
|
||||
This environment variable can be set to specify the path & name of the
|
||||
"autoconf.h" (header) file. Its default value is "include/linux/autoconf.h".
|
||||
"autoconf.h" (header) file.
|
||||
Its default value is "include/generated/autoconf.h".
|
||||
|
||||
|
||||
======================================================================
|
||||
|
|
4
Kbuild
4
Kbuild
|
@ -8,7 +8,7 @@
|
|||
#####
|
||||
# 1) Generate bounds.h
|
||||
|
||||
bounds-file := include/linux/bounds.h
|
||||
bounds-file := include/generated/bounds.h
|
||||
|
||||
always := $(bounds-file)
|
||||
targets := $(bounds-file) kernel/bounds.s
|
||||
|
@ -43,7 +43,7 @@ $(obj)/$(bounds-file): kernel/bounds.s Kbuild
|
|||
# 2) Generate asm-offsets.h
|
||||
#
|
||||
|
||||
offsets-file := include/asm/asm-offsets.h
|
||||
offsets-file := include/generated/asm-offsets.h
|
||||
|
||||
always += $(offsets-file)
|
||||
targets += $(offsets-file)
|
||||
|
|
|
@ -5434,6 +5434,12 @@ F: drivers/uwb/*
|
|||
F: include/linux/uwb.h
|
||||
F: include/linux/uwb/
|
||||
|
||||
UNIFDEF
|
||||
M: Tony Finch <dot@dotat.at>
|
||||
W: http://dotat.at/prog/unifdef
|
||||
S: Maintained
|
||||
F: scripts/unifdef.c
|
||||
|
||||
UNIFORM CDROM DRIVER
|
||||
M: Jens Axboe <axboe@kernel.dk>
|
||||
W: http://www.kernel.dk
|
||||
|
|
96
Makefile
96
Makefile
|
@ -334,10 +334,9 @@ CFLAGS_GCOV = -fprofile-arcs -ftest-coverage
|
|||
|
||||
# Use LINUXINCLUDE when you must reference the include/ directory.
|
||||
# Needed to be compatible with the O= option
|
||||
LINUXINCLUDE := -Iinclude \
|
||||
$(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) \
|
||||
-I$(srctree)/arch/$(hdr-arch)/include \
|
||||
-include include/linux/autoconf.h
|
||||
LINUXINCLUDE := -I$(srctree)/arch/$(hdr-arch)/include -Iinclude \
|
||||
$(if $(KBUILD_SRC), -I$(srctree)/include) \
|
||||
-include include/generated/autoconf.h
|
||||
|
||||
KBUILD_CPPFLAGS := -D__KERNEL__
|
||||
|
||||
|
@ -465,7 +464,7 @@ ifeq ($(KBUILD_EXTMOD),)
|
|||
# Carefully list dependencies so we do not try to build scripts twice
|
||||
# in parallel
|
||||
PHONY += scripts
|
||||
scripts: scripts_basic include/config/auto.conf
|
||||
scripts: scripts_basic include/config/auto.conf include/config/tristate.conf
|
||||
$(Q)$(MAKE) $(build)=$(@)
|
||||
|
||||
# Objects we will link into vmlinux / subdirs we need to visit
|
||||
|
@ -492,18 +491,18 @@ $(KCONFIG_CONFIG) include/config/auto.conf.cmd: ;
|
|||
# with it and forgot to run make oldconfig.
|
||||
# if auto.conf.cmd is missing then we are probably in a cleaned tree so
|
||||
# we execute the config step to be sure to catch updated Kconfig files
|
||||
include/config/auto.conf: $(KCONFIG_CONFIG) include/config/auto.conf.cmd
|
||||
include/config/%.conf: $(KCONFIG_CONFIG) include/config/auto.conf.cmd
|
||||
$(Q)$(MAKE) -f $(srctree)/Makefile silentoldconfig
|
||||
else
|
||||
# external modules needs include/linux/autoconf.h and include/config/auto.conf
|
||||
# external modules needs include/generated/autoconf.h and include/config/auto.conf
|
||||
# but do not care if they are up-to-date. Use auto.conf to trigger the test
|
||||
PHONY += include/config/auto.conf
|
||||
|
||||
include/config/auto.conf:
|
||||
$(Q)test -e include/linux/autoconf.h -a -e $@ || ( \
|
||||
$(Q)test -e include/generated/autoconf.h -a -e $@ || ( \
|
||||
echo; \
|
||||
echo " ERROR: Kernel configuration is invalid."; \
|
||||
echo " include/linux/autoconf.h or $@ are missing."; \
|
||||
echo " include/generated/autoconf.h or $@ are missing.";\
|
||||
echo " Run 'make oldconfig && make prepare' on kernel src to fix it."; \
|
||||
echo; \
|
||||
/bin/false)
|
||||
|
@ -877,6 +876,9 @@ $(sort $(vmlinux-init) $(vmlinux-main)) $(vmlinux-lds): $(vmlinux-dirs) ;
|
|||
PHONY += $(vmlinux-dirs)
|
||||
$(vmlinux-dirs): prepare scripts
|
||||
$(Q)$(MAKE) $(build)=$@
|
||||
ifdef CONFIG_MODULES
|
||||
$(Q)$(MAKE) $(modbuiltin)=$@
|
||||
endif
|
||||
|
||||
# Build the kernel release string
|
||||
#
|
||||
|
@ -955,7 +957,6 @@ PHONY += prepare archprepare prepare0 prepare1 prepare2 prepare3
|
|||
# prepare3 is used to check if we are building in a separate output directory,
|
||||
# and if so do:
|
||||
# 1) Check that make has not been executed in the kernel src $(srctree)
|
||||
# 2) Create the include2 directory, used for the second asm symlink
|
||||
prepare3: include/config/kernel.release
|
||||
ifneq ($(KBUILD_SRC),)
|
||||
@$(kecho) ' Using $(srctree) as source for kernel'
|
||||
|
@ -964,17 +965,13 @@ ifneq ($(KBUILD_SRC),)
|
|||
echo " in the '$(srctree)' directory.";\
|
||||
/bin/false; \
|
||||
fi;
|
||||
$(Q)if [ ! -d include2 ]; then \
|
||||
mkdir -p include2; \
|
||||
ln -fsn $(srctree)/include/asm-$(SRCARCH) include2/asm; \
|
||||
fi
|
||||
endif
|
||||
|
||||
# prepare2 creates a makefile if using a separate output directory
|
||||
prepare2: prepare3 outputmakefile
|
||||
|
||||
prepare1: prepare2 include/linux/version.h include/linux/utsrelease.h \
|
||||
include/asm include/config/auto.conf
|
||||
prepare1: prepare2 include/linux/version.h include/generated/utsrelease.h \
|
||||
include/config/auto.conf
|
||||
$(cmd_crmodverdir)
|
||||
|
||||
archprepare: prepare1 scripts_basic
|
||||
|
@ -986,42 +983,6 @@ prepare0: archprepare FORCE
|
|||
# All the preparing..
|
||||
prepare: prepare0
|
||||
|
||||
# The asm symlink changes when $(ARCH) changes.
|
||||
# Detect this and ask user to run make mrproper
|
||||
# If asm is a stale symlink (point to dir that does not exist) remove it
|
||||
define check-symlink
|
||||
set -e; \
|
||||
if [ -L include/asm ]; then \
|
||||
asmlink=`readlink include/asm | cut -d '-' -f 2`; \
|
||||
if [ "$$asmlink" != "$(SRCARCH)" ]; then \
|
||||
echo "ERROR: the symlink $@ points to asm-$$asmlink but asm-$(SRCARCH) was expected"; \
|
||||
echo " set ARCH or save .config and run 'make mrproper' to fix it"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
test -e $$asmlink || rm include/asm; \
|
||||
elif [ -d include/asm ]; then \
|
||||
echo "ERROR: $@ is a directory but a symlink was expected";\
|
||||
exit 1; \
|
||||
fi
|
||||
endef
|
||||
|
||||
# We create the target directory of the symlink if it does
|
||||
# not exist so the test in check-symlink works and we have a
|
||||
# directory for generated filesas used by some architectures.
|
||||
define create-symlink
|
||||
if [ ! -L include/asm ]; then \
|
||||
$(kecho) ' SYMLINK $@ -> include/asm-$(SRCARCH)'; \
|
||||
if [ ! -d include/asm-$(SRCARCH) ]; then \
|
||||
mkdir -p include/asm-$(SRCARCH); \
|
||||
fi; \
|
||||
ln -fsn asm-$(SRCARCH) $@; \
|
||||
fi
|
||||
endef
|
||||
|
||||
include/asm: FORCE
|
||||
$(Q)$(check-symlink)
|
||||
$(Q)$(create-symlink)
|
||||
|
||||
# Generate some files
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
|
@ -1046,7 +1007,7 @@ endef
|
|||
include/linux/version.h: $(srctree)/Makefile FORCE
|
||||
$(call filechk,version.h)
|
||||
|
||||
include/linux/utsrelease.h: include/config/kernel.release FORCE
|
||||
include/generated/utsrelease.h: include/config/kernel.release FORCE
|
||||
$(call filechk,utsrelease.h)
|
||||
|
||||
PHONY += headerdep
|
||||
|
@ -1076,11 +1037,6 @@ firmware_install: FORCE
|
|||
export INSTALL_HDR_PATH = $(objtree)/usr
|
||||
|
||||
hdr-inst := -rR -f $(srctree)/scripts/Makefile.headersinst obj
|
||||
# Find out where the Kbuild file is located to support
|
||||
# arch/$(ARCH)/include/asm
|
||||
hdr-dir = $(strip \
|
||||
$(if $(wildcard $(srctree)/arch/$(hdr-arch)/include/asm/Kbuild), \
|
||||
arch/$(hdr-arch)/include/asm, include/asm-$(hdr-arch)))
|
||||
|
||||
# If we do an all arch process set dst to asm-$(hdr-arch)
|
||||
hdr-dst = $(if $(KBUILD_HEADERS), dst=include/asm-$(hdr-arch), dst=include/asm)
|
||||
|
@ -1095,10 +1051,10 @@ headers_install_all:
|
|||
|
||||
PHONY += headers_install
|
||||
headers_install: __headers
|
||||
$(if $(wildcard $(srctree)/$(hdr-dir)/Kbuild),, \
|
||||
$(if $(wildcard $(srctree)/arch/$(hdr-arch)/include/asm/Kbuild),, \
|
||||
$(error Headers not exportable for the $(SRCARCH) architecture))
|
||||
$(Q)$(MAKE) $(hdr-inst)=include
|
||||
$(Q)$(MAKE) $(hdr-inst)=$(hdr-dir) $(hdr-dst)
|
||||
$(Q)$(MAKE) $(hdr-inst)=arch/$(hdr-arch)/include/asm $(hdr-dst)
|
||||
|
||||
PHONY += headers_check_all
|
||||
headers_check_all: headers_install_all
|
||||
|
@ -1107,7 +1063,7 @@ headers_check_all: headers_install_all
|
|||
PHONY += headers_check
|
||||
headers_check: headers_install
|
||||
$(Q)$(MAKE) $(hdr-inst)=include HDRCHECK=1
|
||||
$(Q)$(MAKE) $(hdr-inst)=$(hdr-dir) $(hdr-dst) HDRCHECK=1
|
||||
$(Q)$(MAKE) $(hdr-inst)=arch/$(hdr-arch)/include/asm $(hdr-dst) HDRCHECK=1
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Modules
|
||||
|
@ -1127,6 +1083,7 @@ all: modules
|
|||
PHONY += modules
|
||||
modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux)
|
||||
$(Q)$(AWK) '!x[$$0]++' $(vmlinux-dirs:%=$(objtree)/%/modules.order) > $(objtree)/modules.order
|
||||
$(Q)$(AWK) '!x[$$0]++' $(vmlinux-dirs:%=$(objtree)/%/modules.builtin) > $(objtree)/modules.builtin
|
||||
@$(kecho) ' Building modules, stage 2.';
|
||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
|
||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.fwinst obj=firmware __fw_modbuild
|
||||
|
@ -1156,6 +1113,7 @@ _modinst_:
|
|||
ln -s $(objtree) $(MODLIB)/build ; \
|
||||
fi
|
||||
@cp -f $(objtree)/modules.order $(MODLIB)/
|
||||
@cp -f $(objtree)/modules.builtin $(MODLIB)/
|
||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst
|
||||
|
||||
# This depmod is only for convenience to give the initial
|
||||
|
@ -1194,12 +1152,10 @@ CLEAN_FILES += vmlinux System.map \
|
|||
.tmp_kallsyms* .tmp_version .tmp_vmlinux* .tmp_System.map
|
||||
|
||||
# Directories & files removed with 'make mrproper'
|
||||
MRPROPER_DIRS += include/config include2 usr/include include/generated
|
||||
MRPROPER_FILES += .config .config.old include/asm .version .old_version \
|
||||
include/linux/autoconf.h include/linux/version.h \
|
||||
include/linux/utsrelease.h \
|
||||
include/linux/bounds.h include/asm*/asm-offsets.h \
|
||||
Module.symvers Module.markers tags TAGS cscope*
|
||||
MRPROPER_DIRS += include/config usr/include include/generated
|
||||
MRPROPER_FILES += .config .config.old .version .old_version \
|
||||
include/linux/version.h \
|
||||
Module.symvers tags TAGS cscope*
|
||||
|
||||
# clean - Delete most, but leave enough to build external modules
|
||||
#
|
||||
|
@ -1218,7 +1174,7 @@ clean: archclean $(clean-dirs)
|
|||
\( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
|
||||
-o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
|
||||
-o -name '*.symtypes' -o -name 'modules.order' \
|
||||
-o -name 'Module.markers' -o -name '.tmp_*.o.*' \
|
||||
-o -name modules.builtin -o -name '.tmp_*.o.*' \
|
||||
-o -name '*.gcno' \) -type f -print | xargs rm -f
|
||||
|
||||
# mrproper - Delete all generated files, including .config
|
||||
|
@ -1416,8 +1372,8 @@ $(clean-dirs):
|
|||
|
||||
clean: rm-dirs := $(MODVERDIR)
|
||||
clean: rm-files := $(KBUILD_EXTMOD)/Module.symvers \
|
||||
$(KBUILD_EXTMOD)/Module.markers \
|
||||
$(KBUILD_EXTMOD)/modules.order
|
||||
$(KBUILD_EXTMOD)/modules.order \
|
||||
$(KBUILD_EXTMOD)/modules.builtin
|
||||
clean: $(clean-dirs)
|
||||
$(call cmd,rmdirs)
|
||||
$(call cmd,rmfiles)
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
*/
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/utsrelease.h>
|
||||
#include <generated/utsrelease.h>
|
||||
#include <linux/mm.h>
|
||||
|
||||
#include <asm/system.h>
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
*/
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/utsrelease.h>
|
||||
#include <generated/utsrelease.h>
|
||||
#include <linux/mm.h>
|
||||
|
||||
#include <asm/system.h>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
*/
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/utsrelease.h>
|
||||
#include <generated/utsrelease.h>
|
||||
#include <linux/mm.h>
|
||||
|
||||
#include <asm/system.h>
|
||||
|
|
1
arch/alpha/include/asm/asm-offsets.h
Normal file
1
arch/alpha/include/asm/asm-offsets.h
Normal file
|
@ -0,0 +1 @@
|
|||
#include <generated/asm-offsets.h>
|
|
@ -242,15 +242,8 @@ all: $(KBUILD_IMAGE)
|
|||
|
||||
boot := arch/arm/boot
|
||||
|
||||
# Update machine arch and proc symlinks if something which affects
|
||||
# them changed. We use .arch to indicate when they were updated
|
||||
# last, otherwise make uses the target directory mtime.
|
||||
|
||||
archprepare: maketools
|
||||
|
||||
PHONY += maketools FORCE
|
||||
maketools: include/linux/version.h FORCE
|
||||
$(Q)$(MAKE) $(build)=arch/arm/tools include/asm-arm/mach-types.h
|
||||
archprepare:
|
||||
$(Q)$(MAKE) $(build)=arch/arm/tools include/generated/mach-types.h
|
||||
|
||||
# Convert bzImage to zImage
|
||||
bzImage: zImage
|
||||
|
@ -261,9 +254,6 @@ zImage Image xipImage bootpImage uImage: vmlinux
|
|||
zinstall install: vmlinux
|
||||
$(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $@
|
||||
|
||||
CLEAN_FILES += include/asm-arm/mach-types.h \
|
||||
include/asm-arm/arch include/asm-arm/.arch
|
||||
|
||||
# We use MRPROPER_FILES and CLEAN_FILES now
|
||||
archclean:
|
||||
$(Q)$(MAKE) $(clean)=$(boot)
|
||||
|
|
1
arch/arm/include/asm/asm-offsets.h
Normal file
1
arch/arm/include/asm/asm-offsets.h
Normal file
|
@ -0,0 +1 @@
|
|||
#include <generated/asm-offsets.h>
|
1
arch/arm/include/asm/mach-types.h
Normal file
1
arch/arm/include/asm/mach-types.h
Normal file
|
@ -0,0 +1 @@
|
|||
#include <generated/mach-types.h>
|
|
@ -4,7 +4,7 @@
|
|||
# Copyright (C) 2001 Russell King
|
||||
#
|
||||
|
||||
include/asm-arm/mach-types.h: $(src)/gen-mach-types $(src)/mach-types
|
||||
include/generated/mach-types.h: $(src)/gen-mach-types $(src)/mach-types
|
||||
@echo ' Generating $@'
|
||||
@mkdir -p $(dir $@)
|
||||
$(Q)$(AWK) -f $^ > $@ || { rm -f $@; /bin/false; }
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/awk
|
||||
#
|
||||
# Awk script to generate include/asm-arm/mach-types.h
|
||||
# Awk script to generate include/generated/mach-types.h
|
||||
#
|
||||
BEGIN { nr = 0 }
|
||||
/^#/ { next }
|
||||
|
|
1
arch/avr32/include/asm/asm-offsets.h
Normal file
1
arch/avr32/include/asm/asm-offsets.h
Normal file
|
@ -0,0 +1 @@
|
|||
#include <generated/asm-offsets.h>
|
1
arch/blackfin/include/asm/asm-offsets.h
Normal file
1
arch/blackfin/include/asm/asm-offsets.h
Normal file
|
@ -0,0 +1 @@
|
|||
#include <generated/asm-offsets.h>
|
|
@ -10,7 +10,6 @@
|
|||
* The macros found in mmu_defs_asm.h uses the ## concatenation operator, so
|
||||
* -traditional must not be used when assembling this file.
|
||||
*/
|
||||
#include <linux/autoconf.h>
|
||||
#include <arch/memmap.h>
|
||||
#include <hwregs/reg_rdwr.h>
|
||||
#include <hwregs/intr_vect.h>
|
||||
|
|
1
arch/cris/include/asm/asm-offsets.h
Normal file
1
arch/cris/include/asm/asm-offsets.h
Normal file
|
@ -0,0 +1 @@
|
|||
#include <generated/asm-offsets.h>
|
|
@ -1,6 +1,5 @@
|
|||
#include <linux/sched.h>
|
||||
#include <asm/thread_info.h>
|
||||
#include <linux/autoconf.h>
|
||||
|
||||
/*
|
||||
* Generate definitions needed by assembly language modules.
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
* the kernel has booted.
|
||||
*/
|
||||
|
||||
#include <linux/autoconf.h>
|
||||
#include <asm-generic/vmlinux.lds.h>
|
||||
#include <asm/page.h>
|
||||
|
||||
|
|
1
arch/frv/include/asm/asm-offsets.h
Normal file
1
arch/frv/include/asm/asm-offsets.h
Normal file
|
@ -0,0 +1 @@
|
|||
#include <generated/asm-offsets.h>
|
|
@ -10,7 +10,7 @@
|
|||
* 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#include <linux/utsrelease.h>
|
||||
#include <generated/utsrelease.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/delay.h>
|
||||
|
|
1
arch/h8300/include/asm/asm-offsets.h
Normal file
1
arch/h8300/include/asm/asm-offsets.h
Normal file
|
@ -0,0 +1 @@
|
|||
#include <generated/asm-offsets.h>
|
|
@ -103,4 +103,4 @@ archprepare: make_nr_irqs_h FORCE
|
|||
PHONY += make_nr_irqs_h FORCE
|
||||
|
||||
make_nr_irqs_h: FORCE
|
||||
$(Q)$(MAKE) $(build)=arch/ia64/kernel include/asm-ia64/nr-irqs.h
|
||||
$(Q)$(MAKE) $(build)=arch/ia64/kernel include/generated/nr-irqs.h
|
||||
|
|
1
arch/ia64/include/asm/asm-offsets.h
Normal file
1
arch/ia64/include/asm/asm-offsets.h
Normal file
|
@ -0,0 +1 @@
|
|||
#include <generated/asm-offsets.h>
|
|
@ -13,7 +13,7 @@
|
|||
|
||||
#include <linux/types.h>
|
||||
#include <linux/cpumask.h>
|
||||
#include <asm-ia64/nr-irqs.h>
|
||||
#include <generated/nr-irqs.h>
|
||||
|
||||
static __inline__ int
|
||||
irq_canonicalize (int irq)
|
||||
|
|
|
@ -81,17 +81,14 @@ define cmd_nr_irqs
|
|||
endef
|
||||
|
||||
# We use internal kbuild rules to avoid the "is up to date" message from make
|
||||
arch/$(SRCARCH)/kernel/nr-irqs.s: $(srctree)/arch/$(SRCARCH)/kernel/nr-irqs.c \
|
||||
$(wildcard $(srctree)/include/asm-ia64/*/irq.h)
|
||||
arch/$(SRCARCH)/kernel/nr-irqs.s: arch/$(SRCARCH)/kernel/nr-irqs.c
|
||||
$(Q)mkdir -p $(dir $@)
|
||||
$(call if_changed_dep,cc_s_c)
|
||||
|
||||
include/asm-ia64/nr-irqs.h: arch/$(SRCARCH)/kernel/nr-irqs.s
|
||||
include/generated/nr-irqs.h: arch/$(SRCARCH)/kernel/nr-irqs.s
|
||||
$(Q)mkdir -p $(dir $@)
|
||||
$(call cmd,nr_irqs)
|
||||
|
||||
clean-files += $(objtree)/include/asm-ia64/nr-irqs.h
|
||||
|
||||
#
|
||||
# native ivt.S, entry.S and fsys.S
|
||||
#
|
||||
|
|
|
@ -22,7 +22,6 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#include <linux/autoconf.h>
|
||||
#include <linux/kvm_host.h>
|
||||
#include <linux/kbuild.h>
|
||||
|
||||
|
|
1
arch/m68k/include/asm/asm-offsets.h
Normal file
1
arch/m68k/include/asm/asm-offsets.h
Normal file
|
@ -0,0 +1 @@
|
|||
#include <generated/asm-offsets.h>
|
|
@ -196,7 +196,7 @@
|
|||
* for them and trying to understand what they mean.
|
||||
*
|
||||
* CONFIG_xxx: These are the obvious machine configuration defines created
|
||||
* during configuration. These are defined in include/linux/autoconf.h.
|
||||
* during configuration. These are defined in autoconf.h.
|
||||
*
|
||||
* CONSOLE: There is support for head.S console in this file. This
|
||||
* console can talk to a Mac frame buffer, but could easily be extrapolated
|
||||
|
|
1
arch/microblaze/include/asm/asm-offsets.h
Normal file
1
arch/microblaze/include/asm/asm-offsets.h
Normal file
|
@ -0,0 +1 @@
|
|||
#include <generated/asm-offsets.h>
|
1
arch/mips/include/asm/asm-offsets.h
Normal file
1
arch/mips/include/asm/asm-offsets.h
Normal file
|
@ -0,0 +1 @@
|
|||
#include <generated/asm-offsets.h>
|
1
arch/mn10300/include/asm/asm-offsets.h
Normal file
1
arch/mn10300/include/asm/asm-offsets.h
Normal file
|
@ -0,0 +1 @@
|
|||
#include <generated/asm-offsets.h>
|
1
arch/parisc/include/asm/asm-offsets.h
Normal file
1
arch/parisc/include/asm/asm-offsets.h
Normal file
|
@ -0,0 +1 @@
|
|||
#include <generated/asm-offsets.h>
|
1
arch/powerpc/include/asm/asm-offsets.h
Normal file
1
arch/powerpc/include/asm/asm-offsets.h
Normal file
|
@ -0,0 +1 @@
|
|||
#include <generated/asm-offsets.h>
|
|
@ -10,7 +10,7 @@
|
|||
*/
|
||||
|
||||
#include <linux/init.h>
|
||||
#include <linux/utsrelease.h>
|
||||
#include <generated/utsrelease.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/of.h>
|
||||
#include <asm/prom.h>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/utsrelease.h>
|
||||
#include <generated/utsrelease.h>
|
||||
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/cputable.h>
|
||||
|
|
|
@ -13,10 +13,8 @@ SPU_CC := $(SPU_CROSS)gcc
|
|||
SPU_AS := $(SPU_CROSS)gcc
|
||||
SPU_LD := $(SPU_CROSS)ld
|
||||
SPU_OBJCOPY := $(SPU_CROSS)objcopy
|
||||
SPU_CFLAGS := -O2 -Wall -I$(srctree)/include \
|
||||
-I$(objtree)/include2 -D__KERNEL__
|
||||
SPU_AFLAGS := -c -D__ASSEMBLY__ -I$(srctree)/include \
|
||||
-I$(objtree)/include2 -D__KERNEL__
|
||||
SPU_CFLAGS := -O2 -Wall -I$(srctree)/include -D__KERNEL__
|
||||
SPU_AFLAGS := -c -D__ASSEMBLY__ -I$(srctree)/include -D__KERNEL__
|
||||
SPU_LDFLAGS := -N -Ttext=0x0
|
||||
|
||||
$(obj)/switch.o: $(obj)/spu_save_dump.h $(obj)/spu_restore_dump.h
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
#include <linux/reboot.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/utsrelease.h>
|
||||
#include <generated/utsrelease.h>
|
||||
#include <linux/adb.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/delay.h>
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
#include <linux/kernel.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/utsrelease.h>
|
||||
#include <generated/utsrelease.h>
|
||||
#include <asm/sections.h>
|
||||
#include <asm/prom.h>
|
||||
#include <asm/page.h>
|
||||
|
|
1
arch/s390/include/asm/asm-offsets.h
Normal file
1
arch/s390/include/asm/asm-offsets.h
Normal file
|
@ -0,0 +1 @@
|
|||
#include <generated/asm-offsets.h>
|
1
arch/score/include/asm/asm-offsets.h
Normal file
1
arch/score/include/asm/asm-offsets.h
Normal file
|
@ -0,0 +1 @@
|
|||
#include <generated/asm-offsets.h>
|
|
@ -205,10 +205,7 @@ libs-$(CONFIG_SUPERH64) := arch/sh/lib64/ $(libs-y)
|
|||
|
||||
BOOT_TARGETS = uImage uImage.bz2 uImage.gz uImage.lzma uImage.srec uImage.bin \
|
||||
zImage vmlinux.srec romImage
|
||||
PHONY += maketools $(BOOT_TARGETS) FORCE
|
||||
|
||||
maketools: include/linux/version.h FORCE
|
||||
$(Q)$(MAKE) $(build)=arch/sh/tools include/asm-sh/machtypes.h
|
||||
PHONY += $(BOOT_TARGETS)
|
||||
|
||||
all: $(KBUILD_IMAGE)
|
||||
|
||||
|
@ -217,7 +214,8 @@ $(BOOT_TARGETS): vmlinux
|
|||
|
||||
compressed: zImage
|
||||
|
||||
archprepare: maketools
|
||||
archprepare:
|
||||
$(Q)$(MAKE) $(build)=arch/sh/tools include/generated/machtypes.h
|
||||
|
||||
archclean:
|
||||
$(Q)$(MAKE) $(clean)=$(boot)
|
||||
|
@ -234,5 +232,3 @@ define archhelp
|
|||
@echo ' uImage.bz2 - Kernel-only image for U-Boot (bzip2)'
|
||||
@echo ' uImage.lzma - Kernel-only image for U-Boot (lzma)'
|
||||
endef
|
||||
|
||||
CLEAN_FILES += include/asm-sh/machtypes.h
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
#include <mach/lboxre2.h>
|
||||
#include <mach/r2d.h>
|
||||
#include "pci-sh4.h"
|
||||
#include <asm/machtypes.h>
|
||||
#include <generated/machtypes.h>
|
||||
|
||||
#define PCIMCR_MRSET_OFF 0xBFFFFFFF
|
||||
#define PCIMCR_RFSH_OFF 0xFFFFFFFB
|
||||
|
|
1
arch/sh/include/asm/.gitignore
vendored
1
arch/sh/include/asm/.gitignore
vendored
|
@ -1 +0,0 @@
|
|||
machtypes.h
|
1
arch/sh/include/asm/asm-offsets.h
Normal file
1
arch/sh/include/asm/asm-offsets.h
Normal file
|
@ -0,0 +1 @@
|
|||
#include <generated/asm-offsets.h>
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
#include <linux/types.h>
|
||||
#include <linux/time.h>
|
||||
#include <asm/machtypes.h>
|
||||
#include <generated/machtypes.h>
|
||||
|
||||
struct sh_machine_vector {
|
||||
void (*mv_setup)(char **cmdline_p);
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
# Shamelessly cloned from ARM.
|
||||
#
|
||||
|
||||
include/asm-sh/machtypes.h: $(src)/gen-mach-types $(src)/mach-types
|
||||
include/generated/machtypes.h: $(src)/gen-mach-types $(src)/mach-types
|
||||
@echo ' Generating $@'
|
||||
$(Q)if [ ! -d include/asm-sh ]; then mkdir -p include/asm-sh; fi
|
||||
$(Q)mkdir -p $(dir $@)
|
||||
$(Q)$(AWK) -f $^ > $@ || { rm -f $@; /bin/false; }
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/awk
|
||||
#
|
||||
# Awk script to generate include/asm-sh/machtypes.h
|
||||
# Awk script to generate include/generated/machtypes.h
|
||||
# Heavily based on arch/arm/tools/gen-mach-types
|
||||
#
|
||||
BEGIN { nr = 0 }
|
||||
|
|
1
arch/sparc/include/asm/asm-offsets.h
Normal file
1
arch/sparc/include/asm/asm-offsets.h
Normal file
|
@ -0,0 +1 @@
|
|||
#include <generated/asm-offsets.h>
|
|
@ -149,6 +149,6 @@ $(SHARED_HEADERS)/user_constants.h: $(ARCH_DIR)/sys-$(SUBARCH)/user-offsets.s
|
|||
|
||||
$(SHARED_HEADERS)/kern_constants.h:
|
||||
$(Q)mkdir -p $(dir $@)
|
||||
$(Q)echo '#include "../../../../include/asm/asm-offsets.h"' >$@
|
||||
$(Q)echo '#include "../../../../include/generated/asm-offsets.h"' >$@
|
||||
|
||||
export SUBARCH USER_CFLAGS CFLAGS_NO_HARDENING OS HEADER_ARCH DEV_NULL_PATH
|
||||
|
|
1
arch/um/include/asm/asm-offsets.h
Normal file
1
arch/um/include/asm/asm-offsets.h
Normal file
|
@ -0,0 +1 @@
|
|||
#include <generated/asm-offsets.h>
|
|
@ -16,7 +16,7 @@
|
|||
*/
|
||||
|
||||
#include <asm/segment.h>
|
||||
#include <linux/utsrelease.h>
|
||||
#include <generated/utsrelease.h>
|
||||
#include <asm/boot.h>
|
||||
#include <asm/e820.h>
|
||||
#include <asm/page_types.h>
|
||||
|
|
|
@ -13,8 +13,8 @@
|
|||
*/
|
||||
|
||||
#include "boot.h"
|
||||
#include <linux/utsrelease.h>
|
||||
#include <linux/compile.h>
|
||||
#include <generated/utsrelease.h>
|
||||
#include <generated/compile.h>
|
||||
|
||||
const char kernel_version[] =
|
||||
UTS_RELEASE " (" LINUX_COMPILE_BY "@" LINUX_COMPILE_HOST ") "
|
||||
|
|
1
arch/x86/include/asm/asm-offsets.h
Normal file
1
arch/x86/include/asm/asm-offsets.h
Normal file
|
@ -0,0 +1 @@
|
|||
#include <generated/asm-offsets.h>
|
1
arch/xtensa/include/asm/asm-offsets.h
Normal file
1
arch/xtensa/include/asm/asm-offsets.h
Normal file
|
@ -0,0 +1 @@
|
|||
#include <generated/asm-offsets.h>
|
|
@ -21,7 +21,6 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#include <linux/autoconf.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/moduleparam.h>
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
#ifndef __HID_LG_H
|
||||
#define __HID_LG_H
|
||||
|
||||
#include <linux/autoconf.h>
|
||||
|
||||
#ifdef CONFIG_LOGITECH_FF
|
||||
int lgff_init(struct hid_device *hdev);
|
||||
#else
|
||||
|
|
|
@ -63,7 +63,7 @@
|
|||
#ifndef __iwl_core_h__
|
||||
#define __iwl_core_h__
|
||||
|
||||
#include <linux/utsrelease.h>
|
||||
#include <generated/utsrelease.h>
|
||||
|
||||
/************************
|
||||
* forward declarations *
|
||||
|
|
|
@ -51,7 +51,6 @@
|
|||
#include <linux/dmi.h>
|
||||
#include <linux/backlight.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/autoconf.h>
|
||||
|
||||
#define COMPAL_DRIVER_VERSION "0.2.6"
|
||||
|
||||
|
|
|
@ -29,7 +29,6 @@
|
|||
* driver requests - some may support multiple options */
|
||||
|
||||
|
||||
#include <linux/autoconf.h>
|
||||
#include "iio.h"
|
||||
#include "ring_generic.h"
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@
|
|||
#include <linux/list.h>
|
||||
#include <linux/notifier.h>
|
||||
#include <linux/reboot.h>
|
||||
#include <linux/utsrelease.h>
|
||||
#include <generated/utsrelease.h>
|
||||
|
||||
#include <linux/io.h>
|
||||
#include <asm/uaccess.h>
|
||||
|
|
|
@ -118,6 +118,7 @@ header-y += mtio.h
|
|||
header-y += ncp_no.h
|
||||
header-y += neighbour.h
|
||||
header-y += net_dropmon.h
|
||||
header-y += net_tstamp.h
|
||||
header-y += netfilter_arp.h
|
||||
header-y += netrom.h
|
||||
header-y += nfs2.h
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
#ifndef LINUX_MM_DEBUG_H
|
||||
#define LINUX_MM_DEBUG_H 1
|
||||
|
||||
#include <linux/autoconf.h>
|
||||
|
||||
#ifdef CONFIG_DEBUG_VM
|
||||
#define VM_BUG_ON(cond) BUG_ON(cond)
|
||||
#else
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
#include <linux/seqlock.h>
|
||||
#include <linux/nodemask.h>
|
||||
#include <linux/pageblock-flags.h>
|
||||
#include <linux/bounds.h>
|
||||
#include <generated/bounds.h>
|
||||
#include <asm/atomic.h>
|
||||
#include <asm/page.h>
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
#include <linux/types.h>
|
||||
#ifndef __GENERATING_BOUNDS_H
|
||||
#include <linux/mm_types.h>
|
||||
#include <linux/bounds.h>
|
||||
#include <generated/bounds.h>
|
||||
#endif /* !__GENERATING_BOUNDS_H */
|
||||
|
||||
/*
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#include <linux/utsrelease.h>
|
||||
#include <generated/utsrelease.h>
|
||||
#include <linux/module.h>
|
||||
|
||||
/* Simply sanity version stamp for modules. */
|
||||
|
|
|
@ -15,12 +15,8 @@ mounts-$(CONFIG_BLK_DEV_RAM) += do_mounts_rd.o
|
|||
mounts-$(CONFIG_BLK_DEV_INITRD) += do_mounts_initrd.o
|
||||
mounts-$(CONFIG_BLK_DEV_MD) += do_mounts_md.o
|
||||
|
||||
# files to be removed upon make clean
|
||||
clean-files := ../include/linux/compile.h
|
||||
|
||||
# dependencies on generated files need to be listed explicitly
|
||||
|
||||
$(obj)/version.o: include/linux/compile.h
|
||||
$(obj)/version.o: include/generated/compile.h
|
||||
|
||||
# compile.h changes depending on hostname, generation number, etc,
|
||||
# so we regenerate it always.
|
||||
|
@ -30,7 +26,7 @@ $(obj)/version.o: include/linux/compile.h
|
|||
chk_compile.h = :
|
||||
quiet_chk_compile.h = echo ' CHK $@'
|
||||
silent_chk_compile.h = :
|
||||
include/linux/compile.h: FORCE
|
||||
include/generated/compile.h: FORCE
|
||||
@$($(quiet)chk_compile.h)
|
||||
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkcompile_h $@ \
|
||||
"$(UTS_MACHINE)" "$(CONFIG_SMP)" "$(CONFIG_PREEMPT)" "$(CC) $(KBUILD_CFLAGS)"
|
||||
|
|
|
@ -6,11 +6,11 @@
|
|||
* May be freely distributed as part of Linux.
|
||||
*/
|
||||
|
||||
#include <linux/compile.h>
|
||||
#include <generated/compile.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/uts.h>
|
||||
#include <linux/utsname.h>
|
||||
#include <linux/utsrelease.h>
|
||||
#include <generated/utsrelease.h>
|
||||
#include <linux/version.h>
|
||||
|
||||
#ifndef CONFIG_KALLSYMS
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
void foo(void)
|
||||
{
|
||||
/* The enum constants to put into include/linux/bounds.h */
|
||||
/* The enum constants to put into include/generated/bounds.h */
|
||||
DEFINE(NR_PAGEFLAGS, __NR_PAGEFLAGS);
|
||||
DEFINE(MAX_NR_ZONES, __MAX_NR_ZONES);
|
||||
/* End of constants */
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
#include <linux/hardirq.h>
|
||||
#include <linux/elf.h>
|
||||
#include <linux/elfcore.h>
|
||||
#include <linux/utsrelease.h>
|
||||
#include <generated/utsrelease.h>
|
||||
#include <linux/utsname.h>
|
||||
#include <linux/numa.h>
|
||||
#include <linux/suspend.h>
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
* Copyright (C) 2004 William Lee Irwin III
|
||||
*/
|
||||
#include <linux/ring_buffer.h>
|
||||
#include <linux/utsrelease.h>
|
||||
#include <generated/utsrelease.h>
|
||||
#include <linux/stacktrace.h>
|
||||
#include <linux/writeback.h>
|
||||
#include <linux/kallsyms.h>
|
||||
|
|
|
@ -149,6 +149,12 @@ ld-option = $(call try-run,\
|
|||
# $(Q)$(MAKE) $(build)=dir
|
||||
build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
|
||||
|
||||
###
|
||||
# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.modbuiltin obj=
|
||||
# Usage:
|
||||
# $(Q)$(MAKE) $(modbuiltin)=dir
|
||||
modbuiltin := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.modbuiltin obj
|
||||
|
||||
# Prefix -I with $(srctree) if it is not an absolute path.
|
||||
# skip if -I has no parameter
|
||||
addtree = $(if $(patsubst -I%,%,$(1)), \
|
||||
|
|
|
@ -213,7 +213,7 @@ cmd_gzip = (cat $(filter-out FORCE,$^) | gzip -f -9 > $@) || \
|
|||
|
||||
# Bzip2 and LZMA do not include size in file... so we have to fake that;
|
||||
# append the size as a 32-bit littleendian number as gzip does.
|
||||
size_append = /bin/echo -ne $(shell \
|
||||
size_append = printf $(shell \
|
||||
dec_size=0; \
|
||||
for F in $1; do \
|
||||
fsize=$$(stat -c "%s" $$F); \
|
||||
|
|
55
scripts/Makefile.modbuiltin
Normal file
55
scripts/Makefile.modbuiltin
Normal file
|
@ -0,0 +1,55 @@
|
|||
# ==========================================================================
|
||||
# Generating modules.builtin
|
||||
# ==========================================================================
|
||||
|
||||
src := $(obj)
|
||||
|
||||
PHONY := __modbuiltin
|
||||
__modbuiltin:
|
||||
|
||||
-include include/config/auto.conf
|
||||
# tristate.conf sets tristate variables to uppercase 'Y' or 'M'
|
||||
# That way, we get the list of built-in modules in obj-Y
|
||||
-include include/config/tristate.conf
|
||||
|
||||
include scripts/Kbuild.include
|
||||
|
||||
# The filename Kbuild has precedence over Makefile
|
||||
kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))
|
||||
kbuild-file := $(if $(wildcard $(kbuild-dir)/Kbuild),$(kbuild-dir)/Kbuild,$(kbuild-dir)/Makefile)
|
||||
include $(kbuild-file)
|
||||
|
||||
include scripts/Makefile.lib
|
||||
__subdir-Y := $(patsubst %/,%,$(filter %/, $(obj-Y)))
|
||||
subdir-Y += $(__subdir-Y)
|
||||
subdir-ym := $(sort $(subdir-y) $(subdir-Y) $(subdir-m))
|
||||
subdir-ym := $(addprefix $(obj)/,$(subdir-ym))
|
||||
obj-Y := $(addprefix $(obj)/,$(obj-Y))
|
||||
|
||||
modbuiltin-subdirs := $(patsubst %,%/modules.builtin, $(subdir-ym))
|
||||
modbuiltin-mods := $(filter %.ko, $(obj-Y:.o=.ko))
|
||||
modbuiltin-target := $(obj)/modules.builtin
|
||||
|
||||
__modbuiltin: $(modbuiltin-target) $(subdir-ym)
|
||||
@:
|
||||
|
||||
$(modbuiltin-target): $(subdir-ym) FORCE
|
||||
$(Q)(for m in $(modbuiltin-mods); do echo kernel/$$m; done; \
|
||||
cat /dev/null $(modbuiltin-subdirs)) > $@
|
||||
|
||||
PHONY += FORCE
|
||||
|
||||
FORCE:
|
||||
|
||||
# Descending
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
PHONY += $(subdir-ym)
|
||||
$(subdir-ym):
|
||||
$(Q)$(MAKE) $(modbuiltin)=$@
|
||||
|
||||
|
||||
# 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.
|
||||
|
||||
.PHONY: $(PHONY)
|
|
@ -16,15 +16,15 @@
|
|||
* tells make when to remake a file.
|
||||
*
|
||||
* To use this list as-is however has the drawback that virtually
|
||||
* every file in the kernel includes <linux/autoconf.h>.
|
||||
* every file in the kernel includes autoconf.h.
|
||||
*
|
||||
* If the user re-runs make *config, linux/autoconf.h will be
|
||||
* If the user re-runs make *config, autoconf.h will be
|
||||
* regenerated. make notices that and will rebuild every file which
|
||||
* includes autoconf.h, i.e. basically all files. This is extremely
|
||||
* annoying if the user just changed CONFIG_HIS_DRIVER from n to m.
|
||||
*
|
||||
* So we play the same trick that "mkdep" played before. We replace
|
||||
* the dependency on linux/autoconf.h by a dependency on every config
|
||||
* the dependency on autoconf.h by a dependency on every config
|
||||
* option which is mentioned in any of the listed prequisites.
|
||||
*
|
||||
* kconfig populates a tree in include/config/ with an empty file
|
||||
|
@ -73,7 +73,7 @@
|
|||
* cmd_<target> = <cmdline>
|
||||
*
|
||||
* and then basically copies the .<target>.d file to stdout, in the
|
||||
* process filtering out the dependency on linux/autoconf.h and adding
|
||||
* process filtering out the dependency on autoconf.h and adding
|
||||
* dependencies on include/config/my/option.h for every
|
||||
* CONFIG_MY_OPTION encountered in any of the prequisites.
|
||||
*
|
||||
|
@ -324,7 +324,7 @@ static void parse_dep_file(void *map, size_t len)
|
|||
p++;
|
||||
}
|
||||
memcpy(s, m, p-m); s[p-m] = 0;
|
||||
if (strrcmp(s, "include/linux/autoconf.h") &&
|
||||
if (strrcmp(s, "include/generated/autoconf.h") &&
|
||||
strrcmp(s, "arch/um/include/uml-config.h") &&
|
||||
strrcmp(s, ".ver")) {
|
||||
printf(" %s \\\n", s);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* ANSI-C code produced by gperf version 3.0.3 */
|
||||
/* ANSI-C code produced by gperf version 3.0.4 */
|
||||
/* Command-line: gperf -L ANSI-C -a -C -E -g -H is_reserved_hash -k '1,3,$' -N is_reserved_word -p -t scripts/genksyms/keywords.gperf */
|
||||
|
||||
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
|
||||
|
@ -34,7 +34,7 @@ struct resword;
|
|||
static const struct resword *is_reserved_word(register const char *str, register unsigned int len);
|
||||
#line 5 "scripts/genksyms/keywords.gperf"
|
||||
struct resword { const char *name; int token; };
|
||||
/* maximum key range = 62, duplicates = 0 */
|
||||
/* maximum key range = 64, duplicates = 0 */
|
||||
|
||||
#ifdef __GNUC__
|
||||
__inline
|
||||
|
@ -48,39 +48,39 @@ is_reserved_hash (register const char *str, register unsigned int len)
|
|||
{
|
||||
static const unsigned char asso_values[] =
|
||||
{
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 5,
|
||||
65, 65, 65, 65, 65, 65, 35, 65, 65, 65,
|
||||
0, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 0, 65, 0, 65, 5,
|
||||
20, 15, 10, 30, 65, 15, 65, 65, 20, 0,
|
||||
10, 35, 20, 65, 10, 5, 0, 10, 5, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
|
||||
65, 65, 65, 65, 65, 65
|
||||
67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
|
||||
67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
|
||||
67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
|
||||
67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
|
||||
67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
|
||||
67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
|
||||
67, 67, 67, 67, 67, 67, 67, 67, 67, 0,
|
||||
67, 67, 67, 67, 67, 67, 15, 67, 67, 67,
|
||||
0, 67, 67, 67, 67, 67, 67, 67, 67, 67,
|
||||
67, 67, 67, 67, 67, 0, 67, 0, 67, 5,
|
||||
25, 20, 15, 30, 67, 15, 67, 67, 10, 0,
|
||||
10, 40, 20, 67, 10, 5, 0, 10, 15, 67,
|
||||
67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
|
||||
67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
|
||||
67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
|
||||
67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
|
||||
67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
|
||||
67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
|
||||
67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
|
||||
67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
|
||||
67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
|
||||
67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
|
||||
67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
|
||||
67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
|
||||
67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
|
||||
67, 67, 67, 67, 67, 67
|
||||
};
|
||||
return len + asso_values[(unsigned char)str[2]] + asso_values[(unsigned char)str[0]] + asso_values[(unsigned char)str[len - 1]];
|
||||
}
|
||||
|
||||
#ifdef __GNUC__
|
||||
__inline
|
||||
#ifdef __GNUC_STDC_INLINE__
|
||||
#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
|
||||
__attribute__ ((__gnu_inline__))
|
||||
#endif
|
||||
#endif
|
||||
|
@ -89,116 +89,119 @@ is_reserved_word (register const char *str, register unsigned int len)
|
|||
{
|
||||
enum
|
||||
{
|
||||
TOTAL_KEYWORDS = 43,
|
||||
TOTAL_KEYWORDS = 45,
|
||||
MIN_WORD_LENGTH = 3,
|
||||
MAX_WORD_LENGTH = 24,
|
||||
MIN_HASH_VALUE = 3,
|
||||
MAX_HASH_VALUE = 64
|
||||
MAX_HASH_VALUE = 66
|
||||
};
|
||||
|
||||
static const struct resword wordlist[] =
|
||||
{
|
||||
{""}, {""}, {""},
|
||||
#line 28 "scripts/genksyms/keywords.gperf"
|
||||
#line 30 "scripts/genksyms/keywords.gperf"
|
||||
{"asm", ASM_KEYW},
|
||||
{""},
|
||||
#line 10 "scripts/genksyms/keywords.gperf"
|
||||
#line 12 "scripts/genksyms/keywords.gperf"
|
||||
{"__asm", ASM_KEYW},
|
||||
{""},
|
||||
#line 11 "scripts/genksyms/keywords.gperf"
|
||||
#line 13 "scripts/genksyms/keywords.gperf"
|
||||
{"__asm__", ASM_KEYW},
|
||||
{""}, {""},
|
||||
#line 54 "scripts/genksyms/keywords.gperf"
|
||||
#line 56 "scripts/genksyms/keywords.gperf"
|
||||
{"__typeof__", TYPEOF_KEYW},
|
||||
{""},
|
||||
#line 14 "scripts/genksyms/keywords.gperf"
|
||||
{"__const", CONST_KEYW},
|
||||
#line 13 "scripts/genksyms/keywords.gperf"
|
||||
{"__attribute__", ATTRIBUTE_KEYW},
|
||||
#line 15 "scripts/genksyms/keywords.gperf"
|
||||
{"__const__", CONST_KEYW},
|
||||
#line 20 "scripts/genksyms/keywords.gperf"
|
||||
{"__signed__", SIGNED_KEYW},
|
||||
#line 46 "scripts/genksyms/keywords.gperf"
|
||||
{"static", STATIC_KEYW},
|
||||
#line 22 "scripts/genksyms/keywords.gperf"
|
||||
{"__volatile__", VOLATILE_KEYW},
|
||||
#line 41 "scripts/genksyms/keywords.gperf"
|
||||
{"int", INT_KEYW},
|
||||
#line 34 "scripts/genksyms/keywords.gperf"
|
||||
{"char", CHAR_KEYW},
|
||||
#line 35 "scripts/genksyms/keywords.gperf"
|
||||
{"const", CONST_KEYW},
|
||||
#line 47 "scripts/genksyms/keywords.gperf"
|
||||
{"struct", STRUCT_KEYW},
|
||||
#line 26 "scripts/genksyms/keywords.gperf"
|
||||
{"__restrict__", RESTRICT_KEYW},
|
||||
#line 27 "scripts/genksyms/keywords.gperf"
|
||||
{"restrict", RESTRICT_KEYW},
|
||||
#line 25 "scripts/genksyms/keywords.gperf"
|
||||
{"_restrict", RESTRICT_KEYW},
|
||||
#line 18 "scripts/genksyms/keywords.gperf"
|
||||
{"__inline__", INLINE_KEYW},
|
||||
#line 12 "scripts/genksyms/keywords.gperf"
|
||||
{"__attribute", ATTRIBUTE_KEYW},
|
||||
{""},
|
||||
#line 16 "scripts/genksyms/keywords.gperf"
|
||||
{"__extension__", EXTENSION_KEYW},
|
||||
#line 37 "scripts/genksyms/keywords.gperf"
|
||||
{"enum", ENUM_KEYW},
|
||||
#line 21 "scripts/genksyms/keywords.gperf"
|
||||
{"__volatile", VOLATILE_KEYW},
|
||||
#line 38 "scripts/genksyms/keywords.gperf"
|
||||
{"extern", EXTERN_KEYW},
|
||||
{"__const", CONST_KEYW},
|
||||
#line 15 "scripts/genksyms/keywords.gperf"
|
||||
{"__attribute__", ATTRIBUTE_KEYW},
|
||||
#line 17 "scripts/genksyms/keywords.gperf"
|
||||
{"__const__", CONST_KEYW},
|
||||
#line 22 "scripts/genksyms/keywords.gperf"
|
||||
{"__signed__", SIGNED_KEYW},
|
||||
#line 48 "scripts/genksyms/keywords.gperf"
|
||||
{"static", STATIC_KEYW},
|
||||
{""},
|
||||
#line 19 "scripts/genksyms/keywords.gperf"
|
||||
{"__signed", SIGNED_KEYW},
|
||||
#line 43 "scripts/genksyms/keywords.gperf"
|
||||
{"int", INT_KEYW},
|
||||
#line 36 "scripts/genksyms/keywords.gperf"
|
||||
{"char", CHAR_KEYW},
|
||||
#line 37 "scripts/genksyms/keywords.gperf"
|
||||
{"const", CONST_KEYW},
|
||||
#line 49 "scripts/genksyms/keywords.gperf"
|
||||
{"struct", STRUCT_KEYW},
|
||||
#line 28 "scripts/genksyms/keywords.gperf"
|
||||
{"__restrict__", RESTRICT_KEYW},
|
||||
#line 29 "scripts/genksyms/keywords.gperf"
|
||||
{"restrict", RESTRICT_KEYW},
|
||||
#line 9 "scripts/genksyms/keywords.gperf"
|
||||
{"EXPORT_SYMBOL_GPL_FUTURE", EXPORT_SYMBOL_KEYW},
|
||||
{""},
|
||||
#line 53 "scripts/genksyms/keywords.gperf"
|
||||
{"typeof", TYPEOF_KEYW},
|
||||
#line 48 "scripts/genksyms/keywords.gperf"
|
||||
{"typedef", TYPEDEF_KEYW},
|
||||
#line 17 "scripts/genksyms/keywords.gperf"
|
||||
{"__inline", INLINE_KEYW},
|
||||
#line 33 "scripts/genksyms/keywords.gperf"
|
||||
{"auto", AUTO_KEYW},
|
||||
#line 49 "scripts/genksyms/keywords.gperf"
|
||||
{"union", UNION_KEYW},
|
||||
{""}, {""},
|
||||
#line 50 "scripts/genksyms/keywords.gperf"
|
||||
{"unsigned", UNSIGNED_KEYW},
|
||||
#line 51 "scripts/genksyms/keywords.gperf"
|
||||
{"void", VOID_KEYW},
|
||||
#line 44 "scripts/genksyms/keywords.gperf"
|
||||
{"short", SHORT_KEYW},
|
||||
{""}, {""},
|
||||
#line 52 "scripts/genksyms/keywords.gperf"
|
||||
{"volatile", VOLATILE_KEYW},
|
||||
{""},
|
||||
#line 39 "scripts/genksyms/keywords.gperf"
|
||||
{"float", FLOAT_KEYW},
|
||||
#line 36 "scripts/genksyms/keywords.gperf"
|
||||
{"double", DOUBLE_KEYW},
|
||||
{""},
|
||||
#line 7 "scripts/genksyms/keywords.gperf"
|
||||
{"EXPORT_SYMBOL", EXPORT_SYMBOL_KEYW},
|
||||
{""}, {""},
|
||||
#line 40 "scripts/genksyms/keywords.gperf"
|
||||
{"inline", INLINE_KEYW},
|
||||
#line 8 "scripts/genksyms/keywords.gperf"
|
||||
{"EXPORT_SYMBOL_GPL", EXPORT_SYMBOL_KEYW},
|
||||
#line 43 "scripts/genksyms/keywords.gperf"
|
||||
{"register", REGISTER_KEYW},
|
||||
#line 20 "scripts/genksyms/keywords.gperf"
|
||||
{"__inline__", INLINE_KEYW},
|
||||
{""},
|
||||
#line 24 "scripts/genksyms/keywords.gperf"
|
||||
{"_Bool", BOOL_KEYW},
|
||||
#line 45 "scripts/genksyms/keywords.gperf"
|
||||
{"signed", SIGNED_KEYW},
|
||||
{"__volatile__", VOLATILE_KEYW},
|
||||
#line 7 "scripts/genksyms/keywords.gperf"
|
||||
{"EXPORT_SYMBOL", EXPORT_SYMBOL_KEYW},
|
||||
#line 27 "scripts/genksyms/keywords.gperf"
|
||||
{"_restrict", RESTRICT_KEYW},
|
||||
{""},
|
||||
#line 14 "scripts/genksyms/keywords.gperf"
|
||||
{"__attribute", ATTRIBUTE_KEYW},
|
||||
#line 8 "scripts/genksyms/keywords.gperf"
|
||||
{"EXPORT_SYMBOL_GPL", EXPORT_SYMBOL_KEYW},
|
||||
#line 18 "scripts/genksyms/keywords.gperf"
|
||||
{"__extension__", EXTENSION_KEYW},
|
||||
#line 39 "scripts/genksyms/keywords.gperf"
|
||||
{"enum", ENUM_KEYW},
|
||||
#line 10 "scripts/genksyms/keywords.gperf"
|
||||
{"EXPORT_UNUSED_SYMBOL", EXPORT_SYMBOL_KEYW},
|
||||
#line 40 "scripts/genksyms/keywords.gperf"
|
||||
{"extern", EXTERN_KEYW},
|
||||
{""},
|
||||
#line 21 "scripts/genksyms/keywords.gperf"
|
||||
{"__signed", SIGNED_KEYW},
|
||||
#line 11 "scripts/genksyms/keywords.gperf"
|
||||
{"EXPORT_UNUSED_SYMBOL_GPL", EXPORT_SYMBOL_KEYW},
|
||||
#line 51 "scripts/genksyms/keywords.gperf"
|
||||
{"union", UNION_KEYW},
|
||||
#line 55 "scripts/genksyms/keywords.gperf"
|
||||
{"typeof", TYPEOF_KEYW},
|
||||
#line 50 "scripts/genksyms/keywords.gperf"
|
||||
{"typedef", TYPEDEF_KEYW},
|
||||
#line 19 "scripts/genksyms/keywords.gperf"
|
||||
{"__inline", INLINE_KEYW},
|
||||
#line 35 "scripts/genksyms/keywords.gperf"
|
||||
{"auto", AUTO_KEYW},
|
||||
#line 23 "scripts/genksyms/keywords.gperf"
|
||||
{"__volatile", VOLATILE_KEYW},
|
||||
{""}, {""},
|
||||
#line 52 "scripts/genksyms/keywords.gperf"
|
||||
{"unsigned", UNSIGNED_KEYW},
|
||||
{""},
|
||||
#line 46 "scripts/genksyms/keywords.gperf"
|
||||
{"short", SHORT_KEYW},
|
||||
#line 42 "scripts/genksyms/keywords.gperf"
|
||||
{"long", LONG_KEYW}
|
||||
{"inline", INLINE_KEYW},
|
||||
{""},
|
||||
#line 54 "scripts/genksyms/keywords.gperf"
|
||||
{"volatile", VOLATILE_KEYW},
|
||||
#line 44 "scripts/genksyms/keywords.gperf"
|
||||
{"long", LONG_KEYW},
|
||||
#line 26 "scripts/genksyms/keywords.gperf"
|
||||
{"_Bool", BOOL_KEYW},
|
||||
{""}, {""},
|
||||
#line 45 "scripts/genksyms/keywords.gperf"
|
||||
{"register", REGISTER_KEYW},
|
||||
#line 53 "scripts/genksyms/keywords.gperf"
|
||||
{"void", VOID_KEYW},
|
||||
#line 41 "scripts/genksyms/keywords.gperf"
|
||||
{"float", FLOAT_KEYW},
|
||||
#line 38 "scripts/genksyms/keywords.gperf"
|
||||
{"double", DOUBLE_KEYW},
|
||||
{""}, {""}, {""}, {""},
|
||||
#line 47 "scripts/genksyms/keywords.gperf"
|
||||
{"signed", SIGNED_KEYW}
|
||||
};
|
||||
|
||||
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
|
||||
|
|
|
@ -7,6 +7,8 @@ struct resword { const char *name; int token; }
|
|||
EXPORT_SYMBOL, EXPORT_SYMBOL_KEYW
|
||||
EXPORT_SYMBOL_GPL, EXPORT_SYMBOL_KEYW
|
||||
EXPORT_SYMBOL_GPL_FUTURE, EXPORT_SYMBOL_KEYW
|
||||
EXPORT_UNUSED_SYMBOL, EXPORT_SYMBOL_KEYW
|
||||
EXPORT_UNUSED_SYMBOL_GPL, EXPORT_SYMBOL_KEYW
|
||||
__asm, ASM_KEYW
|
||||
__asm__, ASM_KEYW
|
||||
__attribute, ATTRIBUTE_KEYW
|
||||
|
|
|
@ -8,8 +8,6 @@ do_command()
|
|||
{
|
||||
if [ -f ${srctree}/arch/$2/include/asm/Kbuild ]; then
|
||||
make ARCH=$2 KBUILD_HEADERS=$1 headers_$1
|
||||
elif [ -f ${srctree}/include/asm-$2/Kbuild ]; then
|
||||
make ARCH=$2 KBUILD_HEADERS=$1 headers_$1
|
||||
else
|
||||
printf "Ignoring arch: %s\n" ${arch}
|
||||
fi
|
||||
|
|
|
@ -27,6 +27,7 @@ oldconfig: $(obj)/conf
|
|||
$< -o $(Kconfig)
|
||||
|
||||
silentoldconfig: $(obj)/conf
|
||||
$(Q)mkdir -p include/generated
|
||||
$< -s $(Kconfig)
|
||||
|
||||
localmodconfig: $(obj)/streamline_config.pl $(obj)/conf
|
||||
|
|
|
@ -677,7 +677,7 @@ int conf_write_autoconf(void)
|
|||
struct symbol *sym;
|
||||
const char *str;
|
||||
const char *name;
|
||||
FILE *out, *out_h;
|
||||
FILE *out, *tristate, *out_h;
|
||||
time_t now;
|
||||
int i, l;
|
||||
|
||||
|
@ -692,9 +692,16 @@ int conf_write_autoconf(void)
|
|||
if (!out)
|
||||
return 1;
|
||||
|
||||
tristate = fopen(".tmpconfig_tristate", "w");
|
||||
if (!tristate) {
|
||||
fclose(out);
|
||||
return 1;
|
||||
}
|
||||
|
||||
out_h = fopen(".tmpconfig.h", "w");
|
||||
if (!out_h) {
|
||||
fclose(out);
|
||||
fclose(tristate);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -707,6 +714,9 @@ int conf_write_autoconf(void)
|
|||
"# %s"
|
||||
"#\n",
|
||||
sym_get_string_value(sym), ctime(&now));
|
||||
fprintf(tristate, "#\n"
|
||||
"# Automatically generated - do not edit\n"
|
||||
"\n");
|
||||
fprintf(out_h, "/*\n"
|
||||
" * Automatically generated C config: don't edit\n"
|
||||
" * Linux kernel version: %s\n"
|
||||
|
@ -727,10 +737,14 @@ int conf_write_autoconf(void)
|
|||
break;
|
||||
case mod:
|
||||
fprintf(out, "CONFIG_%s=m\n", sym->name);
|
||||
fprintf(tristate, "CONFIG_%s=M\n", sym->name);
|
||||
fprintf(out_h, "#define CONFIG_%s_MODULE 1\n", sym->name);
|
||||
break;
|
||||
case yes:
|
||||
fprintf(out, "CONFIG_%s=y\n", sym->name);
|
||||
if (sym->type == S_TRISTATE)
|
||||
fprintf(tristate, "CONFIG_%s=Y\n",
|
||||
sym->name);
|
||||
fprintf(out_h, "#define CONFIG_%s 1\n", sym->name);
|
||||
break;
|
||||
}
|
||||
|
@ -772,13 +786,19 @@ int conf_write_autoconf(void)
|
|||
}
|
||||
}
|
||||
fclose(out);
|
||||
fclose(tristate);
|
||||
fclose(out_h);
|
||||
|
||||
name = getenv("KCONFIG_AUTOHEADER");
|
||||
if (!name)
|
||||
name = "include/linux/autoconf.h";
|
||||
name = "include/generated/autoconf.h";
|
||||
if (rename(".tmpconfig.h", name))
|
||||
return 1;
|
||||
name = getenv("KCONFIG_TRISTATE");
|
||||
if (!name)
|
||||
name = "include/config/tristate.conf";
|
||||
if (rename(".tmpconfig_tristate", name))
|
||||
return 1;
|
||||
name = conf_get_autoconfig_name();
|
||||
/*
|
||||
* This must be the last step, kbuild has a dependency on auto.conf
|
||||
|
|
|
@ -14,7 +14,7 @@ vecho() { [ "${quiet}" = "silent_" ] || echo "$@" ; }
|
|||
# So "sudo make install" won't change the "compiled by <user>"
|
||||
# do "compiled by root"
|
||||
|
||||
if [ -r $TARGET -a ! -O include/linux/autoconf.h ]; then
|
||||
if [ -r $TARGET -a ! -O include/generated/autoconf.h ]; then
|
||||
vecho " SKIPPED $TARGET"
|
||||
exit 0
|
||||
fi
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include "modpost.h"
|
||||
#include "../../include/linux/autoconf.h"
|
||||
#include "../../include/generated/autoconf.h"
|
||||
#include "../../include/linux/license.h"
|
||||
|
||||
/* Some toolchains use a `_' prefix for all user symbols. */
|
||||
|
|
|
@ -77,9 +77,27 @@ clean-files += $(objtree)/binkernel.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) KBUILD_SRC=
|
||||
$(CONFIG_SHELL) $(srctree)/scripts/package/builddeb
|
||||
$(call cmd,builddeb)
|
||||
|
||||
clean-dirs += $(objtree)/debian/
|
||||
|
||||
|
|
|
@ -101,7 +101,11 @@ esac
|
|||
#
|
||||
(
|
||||
cd "${tmpdir}"
|
||||
tar cf - . | ${compress} > "${tarball}${file_ext}"
|
||||
opts=
|
||||
if tar --owner=root --group=root --help >/dev/null 2>&1; then
|
||||
opts="--owner=root --group=root"
|
||||
fi
|
||||
tar cf - . $opts | ${compress} > "${tarball}${file_ext}"
|
||||
)
|
||||
|
||||
echo "Tarball successfully created in ${tarball}${file_ext}"
|
||||
|
|
|
@ -89,7 +89,13 @@ all_defconfigs()
|
|||
|
||||
docscope()
|
||||
{
|
||||
(echo \-k; echo \-q; all_sources) > cscope.files
|
||||
# always use absolute paths for cscope, as recommended by cscope
|
||||
# upstream
|
||||
case "$tree" in
|
||||
/*) ;;
|
||||
*) tree=$PWD/$tree ;;
|
||||
esac
|
||||
(cd /; echo \-k; echo \-q; all_sources) > cscope.files
|
||||
cscope -b -f cscope.out
|
||||
}
|
||||
|
||||
|
|
|
@ -1,13 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2002 - 2005 Tony Finch <dot@dotat.at>. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by Dave Yost.
|
||||
* It was rewritten to support ANSI C by Tony Finch. The original version of
|
||||
* unifdef carried the following copyright notice. None of its code remains
|
||||
* in this version (though some of the names remain).
|
||||
*
|
||||
* Copyright (c) 1985, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
* Copyright (c) 2002 - 2009 Tony Finch <dot@dotat.at>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
|
@ -31,23 +23,20 @@
|
|||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
/*
|
||||
* This code was derived from software contributed to Berkeley by Dave Yost.
|
||||
* It was rewritten to support ANSI C by Tony Finch. The original version
|
||||
* of unifdef carried the 4-clause BSD copyright licence. None of its code
|
||||
* remains in this version (though some of the names remain) so it now
|
||||
* carries a more liberal licence.
|
||||
*
|
||||
* The latest version is available from http://dotat.at/prog/unifdef
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
static const char copyright[] =
|
||||
"@(#) Copyright (c) 1985, 1993\n\
|
||||
The Regents of the University of California. All rights reserved.\n";
|
||||
#endif
|
||||
#ifdef __IDSTRING
|
||||
__IDSTRING(Berkeley, "@(#)unifdef.c 8.1 (Berkeley) 6/6/93");
|
||||
__IDSTRING(NetBSD, "$NetBSD: unifdef.c,v 1.8 2000/07/03 02:51:36 matt Exp $");
|
||||
__IDSTRING(dotat, "$dotat: things/unifdef.c,v 1.171 2005/03/08 12:38:48 fanf2 Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#ifdef __FBSDID
|
||||
__FBSDID("$FreeBSD: /repoman/r/ncvs/src/usr.bin/unifdef/unifdef.c,v 1.20 2005/05/21 09:55:09 ru Exp $");
|
||||
#endif
|
||||
static const char * const copyright[] = {
|
||||
"@(#) Copyright (c) 2002 - 2009 Tony Finch <dot@dotat.at>\n",
|
||||
"$dotat: unifdef/unifdef.c,v 1.190 2009/11/27 17:21:26 fanf2 Exp $",
|
||||
};
|
||||
|
||||
/*
|
||||
* unifdef - remove ifdef'ed lines
|
||||
|
@ -72,8 +61,6 @@ __FBSDID("$FreeBSD: /repoman/r/ncvs/src/usr.bin/unifdef/unifdef.c,v 1.20 2005/05
|
|||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
size_t strlcpy(char *dst, const char *src, size_t siz);
|
||||
|
||||
/* types of input lines: */
|
||||
typedef enum {
|
||||
LT_TRUEI, /* a true #if with ignore flag */
|
||||
|
@ -90,6 +77,7 @@ typedef enum {
|
|||
LT_DODGY_LAST = LT_DODGY + LT_ENDIF,
|
||||
LT_PLAIN, /* ordinary line */
|
||||
LT_EOF, /* end of file */
|
||||
LT_ERROR, /* unevaluable #if */
|
||||
LT_COUNT
|
||||
} Linetype;
|
||||
|
||||
|
@ -100,7 +88,7 @@ static char const * const linetype_name[] = {
|
|||
"DODGY IF", "DODGY TRUE", "DODGY FALSE",
|
||||
"DODGY ELIF", "DODGY ELTRUE", "DODGY ELFALSE",
|
||||
"DODGY ELSE", "DODGY ENDIF",
|
||||
"PLAIN", "EOF"
|
||||
"PLAIN", "EOF", "ERROR"
|
||||
};
|
||||
|
||||
/* state of #if processing */
|
||||
|
@ -168,11 +156,13 @@ static char const * const linestate_name[] = {
|
|||
* Globals.
|
||||
*/
|
||||
|
||||
static bool compblank; /* -B: compress blank lines */
|
||||
static bool lnblank; /* -b: blank deleted lines */
|
||||
static bool complement; /* -c: do the complement */
|
||||
static bool debugging; /* -d: debugging reports */
|
||||
static bool iocccok; /* -e: fewer IOCCC errors */
|
||||
static bool strictlogic; /* -K: keep ambiguous #ifs */
|
||||
static bool killconsts; /* -k: eval constant #ifs */
|
||||
static bool lnblank; /* -l: blank deleted lines */
|
||||
static bool lnnum; /* -n: add #line directives */
|
||||
static bool symlist; /* -s: output symbol list */
|
||||
static bool text; /* -t: this is a text file */
|
||||
|
@ -196,7 +186,9 @@ static bool ignoring[MAXDEPTH]; /* ignore comments state */
|
|||
static int stifline[MAXDEPTH]; /* start of current #if */
|
||||
static int depth; /* current #if nesting */
|
||||
static int delcount; /* count of deleted lines */
|
||||
static bool keepthis; /* don't delete constant #if */
|
||||
static unsigned blankcount; /* count of blank lines */
|
||||
static unsigned blankmax; /* maximum recent blankcount */
|
||||
static bool constexpr; /* constant #if expression */
|
||||
|
||||
static int exitstat; /* program exit status */
|
||||
|
||||
|
@ -206,13 +198,14 @@ static void done(void);
|
|||
static void error(const char *);
|
||||
static int findsym(const char *);
|
||||
static void flushline(bool);
|
||||
static Linetype get_line(void);
|
||||
static Linetype parseline(void);
|
||||
static Linetype ifeval(const char **);
|
||||
static void ignoreoff(void);
|
||||
static void ignoreon(void);
|
||||
static void keywordedit(const char *);
|
||||
static void nest(void);
|
||||
static void process(void);
|
||||
static const char *skipargs(const char *);
|
||||
static const char *skipcomment(const char *);
|
||||
static const char *skipsym(const char *);
|
||||
static void state(Ifstate);
|
||||
|
@ -220,7 +213,7 @@ static int strlcmp(const char *, const char *, size_t);
|
|||
static void unnest(void);
|
||||
static void usage(void);
|
||||
|
||||
#define endsym(c) (!isalpha((unsigned char)c) && !isdigit((unsigned char)c) && c != '_')
|
||||
#define endsym(c) (!isalnum((unsigned char)c) && c != '_')
|
||||
|
||||
/*
|
||||
* The main program.
|
||||
|
@ -230,7 +223,7 @@ main(int argc, char *argv[])
|
|||
{
|
||||
int opt;
|
||||
|
||||
while ((opt = getopt(argc, argv, "i:D:U:I:cdeklnst")) != -1)
|
||||
while ((opt = getopt(argc, argv, "i:D:U:I:BbcdeKklnst")) != -1)
|
||||
switch (opt) {
|
||||
case 'i': /* treat stuff controlled by these symbols as text */
|
||||
/*
|
||||
|
@ -255,6 +248,13 @@ main(int argc, char *argv[])
|
|||
case 'I':
|
||||
/* no-op for compatibility with cpp */
|
||||
break;
|
||||
case 'B': /* compress blank lines around removed section */
|
||||
compblank = true;
|
||||
break;
|
||||
case 'b': /* blank deleted lines instead of omitting them */
|
||||
case 'l': /* backwards compatibility */
|
||||
lnblank = true;
|
||||
break;
|
||||
case 'c': /* treat -D as -U and vice versa */
|
||||
complement = true;
|
||||
break;
|
||||
|
@ -264,12 +264,12 @@ main(int argc, char *argv[])
|
|||
case 'e': /* fewer errors from dodgy lines */
|
||||
iocccok = true;
|
||||
break;
|
||||
case 'K': /* keep ambiguous #ifs */
|
||||
strictlogic = true;
|
||||
break;
|
||||
case 'k': /* process constant #ifs */
|
||||
killconsts = true;
|
||||
break;
|
||||
case 'l': /* blank deleted lines instead of omitting them */
|
||||
lnblank = true;
|
||||
break;
|
||||
case 'n': /* add #line directive after deleted lines */
|
||||
lnnum = true;
|
||||
break;
|
||||
|
@ -284,6 +284,8 @@ main(int argc, char *argv[])
|
|||
}
|
||||
argc -= optind;
|
||||
argv += optind;
|
||||
if (compblank && lnblank)
|
||||
errx(2, "-B and -b are mutually exclusive");
|
||||
if (argc > 1) {
|
||||
errx(2, "can only do one file");
|
||||
} else if (argc == 1 && strcmp(*argv, "-") != 0) {
|
||||
|
@ -302,7 +304,7 @@ main(int argc, char *argv[])
|
|||
static void
|
||||
usage(void)
|
||||
{
|
||||
fprintf(stderr, "usage: unifdef [-cdeklnst] [-Ipath]"
|
||||
fprintf(stderr, "usage: unifdef [-BbcdeKknst] [-Ipath]"
|
||||
" [-Dsym[=val]] [-Usym] [-iDsym[=val]] [-iUsym] ... [file]\n");
|
||||
exit(2);
|
||||
}
|
||||
|
@ -383,46 +385,46 @@ static state_fn * const trans_table[IS_COUNT][LT_COUNT] = {
|
|||
/* IS_OUTSIDE */
|
||||
{ Itrue, Ifalse,Fpass, Ftrue, Ffalse,Eelif, Eelif, Eelif, Eelse, Eendif,
|
||||
Oiffy, Oiffy, Fpass, Oif, Oif, Eelif, Eelif, Eelif, Eelse, Eendif,
|
||||
print, done },
|
||||
print, done, abort },
|
||||
/* IS_FALSE_PREFIX */
|
||||
{ Idrop, Idrop, Fdrop, Fdrop, Fdrop, Mpass, Strue, Sfalse,Selse, Dendif,
|
||||
Idrop, Idrop, Fdrop, Fdrop, Fdrop, Mpass, Eioccc,Eioccc,Eioccc,Eioccc,
|
||||
drop, Eeof },
|
||||
drop, Eeof, abort },
|
||||
/* IS_TRUE_PREFIX */
|
||||
{ Itrue, Ifalse,Fpass, Ftrue, Ffalse,Dfalse,Dfalse,Dfalse,Delse, Dendif,
|
||||
Oiffy, Oiffy, Fpass, Oif, Oif, Eioccc,Eioccc,Eioccc,Eioccc,Eioccc,
|
||||
print, Eeof },
|
||||
print, Eeof, abort },
|
||||
/* IS_PASS_MIDDLE */
|
||||
{ Itrue, Ifalse,Fpass, Ftrue, Ffalse,Pelif, Mtrue, Delif, Pelse, Pendif,
|
||||
Oiffy, Oiffy, Fpass, Oif, Oif, Pelif, Oelif, Oelif, Pelse, Pendif,
|
||||
print, Eeof },
|
||||
print, Eeof, abort },
|
||||
/* IS_FALSE_MIDDLE */
|
||||
{ Idrop, Idrop, Fdrop, Fdrop, Fdrop, Pelif, Mtrue, Delif, Pelse, Pendif,
|
||||
Idrop, Idrop, Fdrop, Fdrop, Fdrop, Eioccc,Eioccc,Eioccc,Eioccc,Eioccc,
|
||||
drop, Eeof },
|
||||
drop, Eeof, abort },
|
||||
/* IS_TRUE_MIDDLE */
|
||||
{ Itrue, Ifalse,Fpass, Ftrue, Ffalse,Melif, Melif, Melif, Melse, Pendif,
|
||||
Oiffy, Oiffy, Fpass, Oif, Oif, Eioccc,Eioccc,Eioccc,Eioccc,Pendif,
|
||||
print, Eeof },
|
||||
print, Eeof, abort },
|
||||
/* IS_PASS_ELSE */
|
||||
{ Itrue, Ifalse,Fpass, Ftrue, Ffalse,Eelif, Eelif, Eelif, Eelse, Pendif,
|
||||
Oiffy, Oiffy, Fpass, Oif, Oif, Eelif, Eelif, Eelif, Eelse, Pendif,
|
||||
print, Eeof },
|
||||
print, Eeof, abort },
|
||||
/* IS_FALSE_ELSE */
|
||||
{ Idrop, Idrop, Fdrop, Fdrop, Fdrop, Eelif, Eelif, Eelif, Eelse, Dendif,
|
||||
Idrop, Idrop, Fdrop, Fdrop, Fdrop, Eelif, Eelif, Eelif, Eelse, Eioccc,
|
||||
drop, Eeof },
|
||||
drop, Eeof, abort },
|
||||
/* IS_TRUE_ELSE */
|
||||
{ Itrue, Ifalse,Fpass, Ftrue, Ffalse,Eelif, Eelif, Eelif, Eelse, Dendif,
|
||||
Oiffy, Oiffy, Fpass, Oif, Oif, Eelif, Eelif, Eelif, Eelse, Eioccc,
|
||||
print, Eeof },
|
||||
print, Eeof, abort },
|
||||
/* IS_FALSE_TRAILER */
|
||||
{ Idrop, Idrop, Fdrop, Fdrop, Fdrop, Dfalse,Dfalse,Dfalse,Delse, Dendif,
|
||||
Idrop, Idrop, Fdrop, Fdrop, Fdrop, Dfalse,Dfalse,Dfalse,Delse, Eioccc,
|
||||
drop, Eeof }
|
||||
drop, Eeof, abort }
|
||||
/*TRUEI FALSEI IF TRUE FALSE ELIF ELTRUE ELFALSE ELSE ENDIF
|
||||
TRUEI FALSEI IF TRUE FALSE ELIF ELTRUE ELFALSE ELSE ENDIF (DODGY)
|
||||
PLAIN EOF */
|
||||
PLAIN EOF ERROR */
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -463,9 +465,11 @@ keywordedit(const char *replacement)
|
|||
static void
|
||||
nest(void)
|
||||
{
|
||||
depth += 1;
|
||||
if (depth >= MAXDEPTH)
|
||||
if (depth > MAXDEPTH-1)
|
||||
abort(); /* bug */
|
||||
if (depth == MAXDEPTH-1)
|
||||
error("Too many levels of nesting");
|
||||
depth += 1;
|
||||
stifline[depth] = linenum;
|
||||
}
|
||||
static void
|
||||
|
@ -490,15 +494,23 @@ flushline(bool keep)
|
|||
if (symlist)
|
||||
return;
|
||||
if (keep ^ complement) {
|
||||
bool blankline = tline[strspn(tline, " \t\n")] == '\0';
|
||||
if (blankline && compblank && blankcount != blankmax) {
|
||||
delcount += 1;
|
||||
blankcount += 1;
|
||||
} else {
|
||||
if (lnnum && delcount > 0)
|
||||
printf("#line %d\n", linenum);
|
||||
fputs(tline, stdout);
|
||||
delcount = 0;
|
||||
blankmax = blankcount = blankline ? blankcount + 1 : 0;
|
||||
}
|
||||
} else {
|
||||
if (lnblank)
|
||||
putc('\n', stdout);
|
||||
exitstat = 1;
|
||||
delcount += 1;
|
||||
blankcount = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -510,9 +522,12 @@ process(void)
|
|||
{
|
||||
Linetype lineval;
|
||||
|
||||
/* When compressing blank lines, act as if the file
|
||||
is preceded by a large number of blank lines. */
|
||||
blankmax = blankcount = 1000;
|
||||
for (;;) {
|
||||
linenum++;
|
||||
lineval = get_line();
|
||||
lineval = parseline();
|
||||
trans_table[ifstate[depth]][lineval]();
|
||||
debug("process %s -> %s depth %d",
|
||||
linetype_name[lineval],
|
||||
|
@ -526,7 +541,7 @@ process(void)
|
|||
* help from skipcomment().
|
||||
*/
|
||||
static Linetype
|
||||
get_line(void)
|
||||
parseline(void)
|
||||
{
|
||||
const char *cp;
|
||||
int cursym;
|
||||
|
@ -595,9 +610,21 @@ get_line(void)
|
|||
if (incomment)
|
||||
linestate = LS_DIRTY;
|
||||
}
|
||||
/* skipcomment should have changed the state */
|
||||
if (linestate == LS_HASH)
|
||||
abort(); /* bug */
|
||||
/* skipcomment normally changes the state, except
|
||||
if the last line of the file lacks a newline, or
|
||||
if there is too much whitespace in a directive */
|
||||
if (linestate == LS_HASH) {
|
||||
size_t len = cp - tline;
|
||||
if (fgets(tline + len, MAXLINE - len, input) == NULL) {
|
||||
/* append the missing newline */
|
||||
tline[len+0] = '\n';
|
||||
tline[len+1] = '\0';
|
||||
cp++;
|
||||
linestate = LS_START;
|
||||
} else {
|
||||
linestate = LS_DIRTY;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (linestate == LS_DIRTY) {
|
||||
while (*cp != '\0')
|
||||
|
@ -610,17 +637,40 @@ get_line(void)
|
|||
|
||||
/*
|
||||
* These are the binary operators that are supported by the expression
|
||||
* evaluator. Note that if support for division is added then we also
|
||||
* need short-circuiting booleans because of divide-by-zero.
|
||||
* evaluator.
|
||||
*/
|
||||
static int op_lt(int a, int b) { return (a < b); }
|
||||
static int op_gt(int a, int b) { return (a > b); }
|
||||
static int op_le(int a, int b) { return (a <= b); }
|
||||
static int op_ge(int a, int b) { return (a >= b); }
|
||||
static int op_eq(int a, int b) { return (a == b); }
|
||||
static int op_ne(int a, int b) { return (a != b); }
|
||||
static int op_or(int a, int b) { return (a || b); }
|
||||
static int op_and(int a, int b) { return (a && b); }
|
||||
static Linetype op_strict(int *p, int v, Linetype at, Linetype bt) {
|
||||
if(at == LT_IF || bt == LT_IF) return (LT_IF);
|
||||
return (*p = v, v ? LT_TRUE : LT_FALSE);
|
||||
}
|
||||
static Linetype op_lt(int *p, Linetype at, int a, Linetype bt, int b) {
|
||||
return op_strict(p, a < b, at, bt);
|
||||
}
|
||||
static Linetype op_gt(int *p, Linetype at, int a, Linetype bt, int b) {
|
||||
return op_strict(p, a > b, at, bt);
|
||||
}
|
||||
static Linetype op_le(int *p, Linetype at, int a, Linetype bt, int b) {
|
||||
return op_strict(p, a <= b, at, bt);
|
||||
}
|
||||
static Linetype op_ge(int *p, Linetype at, int a, Linetype bt, int b) {
|
||||
return op_strict(p, a >= b, at, bt);
|
||||
}
|
||||
static Linetype op_eq(int *p, Linetype at, int a, Linetype bt, int b) {
|
||||
return op_strict(p, a == b, at, bt);
|
||||
}
|
||||
static Linetype op_ne(int *p, Linetype at, int a, Linetype bt, int b) {
|
||||
return op_strict(p, a != b, at, bt);
|
||||
}
|
||||
static Linetype op_or(int *p, Linetype at, int a, Linetype bt, int b) {
|
||||
if (!strictlogic && (at == LT_TRUE || bt == LT_TRUE))
|
||||
return (*p = 1, LT_TRUE);
|
||||
return op_strict(p, a || b, at, bt);
|
||||
}
|
||||
static Linetype op_and(int *p, Linetype at, int a, Linetype bt, int b) {
|
||||
if (!strictlogic && (at == LT_FALSE || bt == LT_FALSE))
|
||||
return (*p = 0, LT_FALSE);
|
||||
return op_strict(p, a && b, at, bt);
|
||||
}
|
||||
|
||||
/*
|
||||
* An evaluation function takes three arguments, as follows: (1) a pointer to
|
||||
|
@ -629,8 +679,8 @@ static int op_and(int a, int b) { return (a && b); }
|
|||
* value of the expression; and (3) a pointer to a char* that points to the
|
||||
* expression to be evaluated and that is updated to the end of the expression
|
||||
* when evaluation is complete. The function returns LT_FALSE if the value of
|
||||
* the expression is zero, LT_TRUE if it is non-zero, or LT_IF if the
|
||||
* expression could not be evaluated.
|
||||
* the expression is zero, LT_TRUE if it is non-zero, LT_IF if the expression
|
||||
* depends on an unknown symbol, or LT_ERROR if there is a parse failure.
|
||||
*/
|
||||
struct ops;
|
||||
|
||||
|
@ -649,7 +699,7 @@ static const struct ops {
|
|||
eval_fn *inner;
|
||||
struct op {
|
||||
const char *str;
|
||||
int (*fn)(int, int);
|
||||
Linetype (*fn)(int *, Linetype, int, Linetype, int);
|
||||
} op[5];
|
||||
} eval_ops[] = {
|
||||
{ eval_table, { { "||", op_or } } },
|
||||
|
@ -664,8 +714,8 @@ static const struct ops {
|
|||
|
||||
/*
|
||||
* Function for evaluating the innermost parts of expressions,
|
||||
* viz. !expr (expr) defined(symbol) symbol number
|
||||
* We reset the keepthis flag when we find a non-constant subexpression.
|
||||
* viz. !expr (expr) number defined(symbol) symbol
|
||||
* We reset the constexpr flag in the last two cases.
|
||||
*/
|
||||
static Linetype
|
||||
eval_unary(const struct ops *ops, int *valp, const char **cpp)
|
||||
|
@ -673,68 +723,83 @@ eval_unary(const struct ops *ops, int *valp, const char **cpp)
|
|||
const char *cp;
|
||||
char *ep;
|
||||
int sym;
|
||||
bool defparen;
|
||||
Linetype lt;
|
||||
|
||||
cp = skipcomment(*cpp);
|
||||
if (*cp == '!') {
|
||||
debug("eval%d !", ops - eval_ops);
|
||||
cp++;
|
||||
if (eval_unary(ops, valp, &cp) == LT_IF) {
|
||||
*cpp = cp;
|
||||
return (LT_IF);
|
||||
}
|
||||
lt = eval_unary(ops, valp, &cp);
|
||||
if (lt == LT_ERROR)
|
||||
return (LT_ERROR);
|
||||
if (lt != LT_IF) {
|
||||
*valp = !*valp;
|
||||
lt = *valp ? LT_TRUE : LT_FALSE;
|
||||
}
|
||||
} else if (*cp == '(') {
|
||||
cp++;
|
||||
debug("eval%d (", ops - eval_ops);
|
||||
if (eval_table(eval_ops, valp, &cp) == LT_IF)
|
||||
return (LT_IF);
|
||||
lt = eval_table(eval_ops, valp, &cp);
|
||||
if (lt == LT_ERROR)
|
||||
return (LT_ERROR);
|
||||
cp = skipcomment(cp);
|
||||
if (*cp++ != ')')
|
||||
return (LT_IF);
|
||||
return (LT_ERROR);
|
||||
} else if (isdigit((unsigned char)*cp)) {
|
||||
debug("eval%d number", ops - eval_ops);
|
||||
*valp = strtol(cp, &ep, 0);
|
||||
if (ep == cp)
|
||||
return (LT_ERROR);
|
||||
lt = *valp ? LT_TRUE : LT_FALSE;
|
||||
cp = skipsym(cp);
|
||||
} else if (strncmp(cp, "defined", 7) == 0 && endsym(cp[7])) {
|
||||
cp = skipcomment(cp+7);
|
||||
debug("eval%d defined", ops - eval_ops);
|
||||
if (*cp++ != '(')
|
||||
return (LT_IF);
|
||||
cp = skipcomment(cp);
|
||||
if (*cp == '(') {
|
||||
cp = skipcomment(cp+1);
|
||||
defparen = true;
|
||||
} else {
|
||||
defparen = false;
|
||||
}
|
||||
sym = findsym(cp);
|
||||
if (sym < 0) {
|
||||
lt = LT_IF;
|
||||
} else {
|
||||
*valp = (value[sym] != NULL);
|
||||
lt = *valp ? LT_TRUE : LT_FALSE;
|
||||
}
|
||||
cp = skipsym(cp);
|
||||
cp = skipcomment(cp);
|
||||
if (*cp++ != ')')
|
||||
return (LT_IF);
|
||||
if (sym >= 0)
|
||||
*valp = (value[sym] != NULL);
|
||||
else {
|
||||
*cpp = cp;
|
||||
return (LT_IF);
|
||||
}
|
||||
keepthis = false;
|
||||
if (defparen && *cp++ != ')')
|
||||
return (LT_ERROR);
|
||||
constexpr = false;
|
||||
} else if (!endsym(*cp)) {
|
||||
debug("eval%d symbol", ops - eval_ops);
|
||||
sym = findsym(cp);
|
||||
if (sym < 0)
|
||||
return (LT_IF);
|
||||
if (value[sym] == NULL)
|
||||
cp = skipsym(cp);
|
||||
if (sym < 0) {
|
||||
lt = LT_IF;
|
||||
cp = skipargs(cp);
|
||||
} else if (value[sym] == NULL) {
|
||||
*valp = 0;
|
||||
else {
|
||||
lt = LT_FALSE;
|
||||
} else {
|
||||
*valp = strtol(value[sym], &ep, 0);
|
||||
if (*ep != '\0' || ep == value[sym])
|
||||
return (LT_IF);
|
||||
return (LT_ERROR);
|
||||
lt = *valp ? LT_TRUE : LT_FALSE;
|
||||
cp = skipargs(cp);
|
||||
}
|
||||
cp = skipsym(cp);
|
||||
keepthis = false;
|
||||
constexpr = false;
|
||||
} else {
|
||||
debug("eval%d bad expr", ops - eval_ops);
|
||||
return (LT_IF);
|
||||
return (LT_ERROR);
|
||||
}
|
||||
|
||||
*cpp = cp;
|
||||
debug("eval%d = %d", ops - eval_ops, *valp);
|
||||
return (*valp ? LT_TRUE : LT_FALSE);
|
||||
return (lt);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -746,11 +811,13 @@ eval_table(const struct ops *ops, int *valp, const char **cpp)
|
|||
const struct op *op;
|
||||
const char *cp;
|
||||
int val;
|
||||
Linetype lhs, rhs;
|
||||
Linetype lt, rt;
|
||||
|
||||
debug("eval%d", ops - eval_ops);
|
||||
cp = *cpp;
|
||||
lhs = ops->inner(ops+1, valp, &cp);
|
||||
lt = ops->inner(ops+1, valp, &cp);
|
||||
if (lt == LT_ERROR)
|
||||
return (LT_ERROR);
|
||||
for (;;) {
|
||||
cp = skipcomment(cp);
|
||||
for (op = ops->op; op->str != NULL; op++)
|
||||
|
@ -760,32 +827,16 @@ eval_table(const struct ops *ops, int *valp, const char **cpp)
|
|||
break;
|
||||
cp += strlen(op->str);
|
||||
debug("eval%d %s", ops - eval_ops, op->str);
|
||||
rhs = ops->inner(ops+1, &val, &cp);
|
||||
if (op->fn == op_and && (lhs == LT_FALSE || rhs == LT_FALSE)) {
|
||||
debug("eval%d: and always false", ops - eval_ops);
|
||||
if (lhs == LT_IF)
|
||||
*valp = val;
|
||||
lhs = LT_FALSE;
|
||||
continue;
|
||||
}
|
||||
if (op->fn == op_or && (lhs == LT_TRUE || rhs == LT_TRUE)) {
|
||||
debug("eval%d: or always true", ops - eval_ops);
|
||||
if (lhs == LT_IF)
|
||||
*valp = val;
|
||||
lhs = LT_TRUE;
|
||||
continue;
|
||||
}
|
||||
if (rhs == LT_IF)
|
||||
lhs = LT_IF;
|
||||
if (lhs != LT_IF)
|
||||
*valp = op->fn(*valp, val);
|
||||
rt = ops->inner(ops+1, &val, &cp);
|
||||
if (rt == LT_ERROR)
|
||||
return (LT_ERROR);
|
||||
lt = op->fn(valp, lt, *valp, rt, val);
|
||||
}
|
||||
|
||||
*cpp = cp;
|
||||
debug("eval%d = %d", ops - eval_ops, *valp);
|
||||
if (lhs != LT_IF)
|
||||
lhs = (*valp ? LT_TRUE : LT_FALSE);
|
||||
return lhs;
|
||||
debug("eval%d lt = %s", ops - eval_ops, linetype_name[lt]);
|
||||
return (lt);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -796,17 +847,14 @@ eval_table(const struct ops *ops, int *valp, const char **cpp)
|
|||
static Linetype
|
||||
ifeval(const char **cpp)
|
||||
{
|
||||
const char *cp = *cpp;
|
||||
int ret;
|
||||
int val;
|
||||
int val = 0;
|
||||
|
||||
debug("eval %s", *cpp);
|
||||
keepthis = killconsts ? false : true;
|
||||
ret = eval_table(eval_ops, &val, &cp);
|
||||
if (ret != LT_IF)
|
||||
*cpp = cp;
|
||||
constexpr = killconsts ? false : true;
|
||||
ret = eval_table(eval_ops, &val, cpp);
|
||||
debug("eval = %d", val);
|
||||
return (keepthis ? LT_IF : ret);
|
||||
return (constexpr ? LT_IF : ret == LT_ERROR ? LT_IF : ret);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -917,6 +965,31 @@ skipcomment(const char *cp)
|
|||
return (cp);
|
||||
}
|
||||
|
||||
/*
|
||||
* Skip macro arguments.
|
||||
*/
|
||||
static const char *
|
||||
skipargs(const char *cp)
|
||||
{
|
||||
const char *ocp = cp;
|
||||
int level = 0;
|
||||
cp = skipcomment(cp);
|
||||
if (*cp != '(')
|
||||
return (cp);
|
||||
do {
|
||||
if (*cp == '(')
|
||||
level++;
|
||||
if (*cp == ')')
|
||||
level--;
|
||||
cp = skipcomment(cp+1);
|
||||
} while (level != 0 && *cp != '\0');
|
||||
if (level == 0)
|
||||
return (cp);
|
||||
else
|
||||
/* Rewind and re-detect the syntax error later. */
|
||||
return (ocp);
|
||||
}
|
||||
|
||||
/*
|
||||
* Skip over an identifier.
|
||||
*/
|
||||
|
@ -929,7 +1002,7 @@ skipsym(const char *cp)
|
|||
}
|
||||
|
||||
/*
|
||||
* Look for the symbol in the symbol table. If is is found, we return
|
||||
* Look for the symbol in the symbol table. If it is found, we return
|
||||
* the symbol table index, else we return -1.
|
||||
*/
|
||||
static int
|
||||
|
|
|
@ -354,7 +354,10 @@ static int cpio_mkfile(const char *name, const char *location,
|
|||
push_pad();
|
||||
|
||||
if (size) {
|
||||
fwrite(filebuf, size, 1, stdout);
|
||||
if (fwrite(filebuf, size, 1, stdout) != 1) {
|
||||
fprintf(stderr, "writing filebuf failed\n");
|
||||
goto error;
|
||||
}
|
||||
offset += size;
|
||||
push_pad();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue