Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
83859fba
Commit
83859fba
authored
Jun 09, 2002
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
http://linux-isdn.bkbits.net/linux-2.5.make
into home.transmeta.com:/home/torvalds/v2.5/linux
parents
e618013a
1a3fbb1f
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
196 additions
and
175 deletions
+196
-175
Makefile
Makefile
+13
-12
Rules.make
Rules.make
+159
-127
init/Makefile
init/Makefile
+1
-1
scripts/Makefile
scripts/Makefile
+1
-1
scripts/fixdep.c
scripts/fixdep.c
+22
-34
No files found.
Makefile
View file @
83859fba
...
...
@@ -222,10 +222,10 @@ cmd_link_vmlinux = $(LD) $(LINKFLAGS) $(HEAD) $(INIT) \
define
rule_link_vmlinux
set
-e
echo
Generating
build
number
echo
' Generating build number'
.
scripts/mkversion
>
.tmpversion
mv
-f
.tmpversion
.version
$(MAKE)
-C
init
+
$(MAKE)
-C
init
$(call
cmd,cmd_link_vmlinux)
$(cmd_link_vmlinux)
echo 'cmd_$@
:
= $(cmd_link_vmlinux)' > $(@D)/.$(@F).cmd
...
...
@@ -243,14 +243,14 @@ $(sort $(vmlinux-objs)): $(SUBDIRS) ;
# Handle descending into subdirectories listed in $(SUBDIRS)
.PHONY
:
$(SUBDIRS)
$(SUBDIRS)
:
.hdepend prepare
include/config/MARKER
$(SUBDIRS)
:
.hdepend prepare
@
$(MAKE)
-C
$@
# Things we need done before we descend to build or make
# module versions are listed in "prepare"
.PHONY
:
prepare
prepare
:
include/linux/version.h include/asm
prepare
:
include/linux/version.h include/asm
include/config/MARKER
# Single targets
# ---------------------------------------------------------------------------
...
...
@@ -273,13 +273,13 @@ prepare: include/linux/version.h include/asm
# before switching between archs anyway.
include/asm
:
@
echo
'Making asm->asm-
$(ARCH)
symlink'
@
echo
'
Making asm->asm-
$(ARCH)
symlink'
@
ln
-s
asm-
$(ARCH)
$@
# Split autoconf.h into include/linux/config/*
include/config/MARKER
:
scripts/split-include include/linux/autoconf.h
@
echo
'
Splitting include/linux/autoconf.h -> include/config
'
@
echo
'
SPLIT include/linux/autoconf.h -> include/config/*
'
@
scripts/split-include include/linux/autoconf.h include/config
@
touch
$@
...
...
@@ -306,7 +306,7 @@ include/linux/version.h: Makefile
echo
'"
$(KERNELRELEASE)
" exceeds
$(uts_len)
characters'
>
&2
;
\
exit
1
;
\
fi
;
@
echo
-n
'Generating $@'
@
echo
-n
'
Generating $@'
@
(
echo
\#
define UTS_RELEASE
\"
$(KERNELRELEASE)
\"
;
\
echo
\#
define LINUX_VERSION_CODE
`
expr
$(VERSION)
\\
*
65536 +
$(PATCHLEVEL)
\\
*
256 +
$(SUBLEVEL)
`
;
\
echo
'#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))'
;
\
...
...
@@ -349,11 +349,11 @@ ifdef CONFIG_MODVERSIONS
include/linux/modversions.h
:
scripts/fixdep prepare FORCE
@
rm
-rf
.tmp_export-objs
@
$(MAKE)
$(
patsubst
%,_sfdep_%,
$(SUBDIRS)
)
@
echo
-n
'Generating $@'
@
echo
-n
'
Generating $@'
@
(
echo
"#ifndef _LINUX_MODVERSIONS_H"
;
\
echo
"#define _LINUX_MODVERSIONS_H"
;
\
echo
"#include <linux/modsetver.h>"
;
\
for
f
in
`
cd
.tmp_export-objs
;
find modules
-name
\*
.ver
-print
`
;
do
\
for
f
in
`
cd
.tmp_export-objs
;
find modules
-name
\*
.ver
-print
|
sort
`
;
do
\
echo
"#include <linux/
$
${f}
>"
;
\
done
;
\
echo
"#endif"
;
\
...
...
@@ -574,9 +574,8 @@ make_with_config: .config
# files removed with 'make clean'
CLEAN_FILES
+=
\
kernel/ksyms.lst
include/linux/compile.h
\
include/linux/compile.h
\
vmlinux System.map
\
.tmp
*
\
drivers/char/consolemap_deftbl.c drivers/video/promcon_tbl.c
\
drivers/char/conmakehash
\
drivers/char/drm/
*
-mod
.c
\
...
...
@@ -616,9 +615,11 @@ MRPROPER_FILES += \
.hdepend scripts/split-include scripts/docproc
\
scripts/fixdep
$(TOPDIR)
/include/linux/modversions.h
\
tags TAGS kernel.spec
\
.tmpversion
# directories removed with 'make mrproper'
MRPROPER_DIRS
+=
\
.tmp_export-objs
\
include/config
\
$(TOPDIR)
/include/linux/modules
...
...
@@ -631,7 +632,7 @@ clean: archclean
@
find
.
\(
-name
\*
.[oas]
-o
-name
core
-o
-name
.
\*
.cmd
-o
\
-name
.
\*
.tmp
-o
-name
.
\*
.d
\)
-type
f
-print
\
|
grep
-v
lxdialog/ | xargs
rm
-f
@
rm
-
r
f
$(CLEAN_FILES)
@
rm
-f
$(CLEAN_FILES)
@
$(MAKE)
-C
Documentation/DocBook clean
mrproper
:
clean archmrproper
...
...
Rules.make
View file @
83859fba
...
...
@@ -48,12 +48,9 @@ subdir- += $(__subdir-)
obj-y
:=
$(
patsubst
%/, %/built-in.o,
$
(
obj-y
))
obj-m
:=
$(
filter-out
%/,
$
(
obj-m
))
# If a dir is selected in $(subdir-y) and also mentioned in $(mod-subdirs),
# add it to $(subdir-m)
# Subdirectories we need to descend into
both-m
:=
$(
filter
$
(
mod-subdirs
)
,
$
(
subdir-y
))
subdir-ym
:=
$(
sort
$
(
subdir-y
)
$
(
subdir-m
))
subdir-ymn
:=
$(
sort
$
(
subdir-ym
)
$
(
subdir-n
)
$
(
subdir-
))
# export.o is never a composite object, since $(export-objs) has a
# fixed meaning (== objects which EXPORT_SYMBOL())
...
...
@@ -85,8 +82,112 @@ subdir-obj-y := $(foreach o,$(obj-y),$(if $(filter-out $(o),$(notdir $(o))),$(o)
real-objs-y
:=
$(
foreach
m,
$(
filter-out
$
(
subdir-obj-y
)
,
$
(
obj-y
))
,
$(
if
$
(
$
(
m:.o
=
-objs
))
,
$
(
$
(
m:.o
=
-objs
))
,
$(m)
))
$(EXTRA_TARGETS)
real-objs-m
:=
$(
foreach
m,
$
(
obj-m
)
,
$(
if
$
(
$
(
m:.o
=
-objs
))
,
$
(
$
(
m:.o
=
-objs
))
,
$(m)
))
# Get things started.
# Only build module versions for files which are selected to be built
export-objs
:=
$(
filter
$
(
export-objs
)
,
$
(
real-objs-y
)
$
(
real-objs-m
))
# We're called for one of three purposes:
# o fastdep: build module version files (.ver) for $(export-objs) in
# the current directory
# o modules_install: install the modules in the current directory
# o build: When no target is given, first_rule is the default and
# will build the built-in and modular objects in this dir
# (or a subset thereof, depending on $(KBUILD_MODULES),$(KBUILD_BUILTIN)
# When targets are given directly (like foo.o), we just build these
# targets (That happens when someone does make some/dir/foo.[ois])
ifeq
($(MAKECMDGOALS),fastdep)
# ===========================================================================
# Module versions
# ===========================================================================
ifeq
($(strip $(export-objs)),)
# If we don't export any symbols in this dir, just descend
# ---------------------------------------------------------------------------
fastdep
:
sub_dirs
@
echo
-n
else
# This sets version suffixes on exported symbols
# ---------------------------------------------------------------------------
MODVERDIR
:=
$(TOPDIR)
/include/linux/modules/
$(RELDIR)
#
# Added the SMP separator to stop module accidents between uniprocessor
# and SMP Intel boxes - AC - from bits by Michael Chastain
#
ifdef
CONFIG_SMP
genksyms_smp_prefix
:=
-p
smp_
else
genksyms_smp_prefix
:=
endif
$(MODVERDIR)/$(real-objs-y
:
.o=.ver): modkern_cflags := $(CFLAGS_KERNEL)
$(MODVERDIR)/$(real-objs-m
:
.o=.ver): modkern_cflags := $(CFLAGS_MODULE)
$(MODVERDIR)/$(export-objs
:
.o=.ver): export_flags := -D__GENKSYMS__
c_flags
=
-Wp
,-MD,
$
(
@D
)
/.
$
(
@F
)
.d
$(CFLAGS)
$(NOSTDINC_FLAGS)
\
$(modkern_cflags)
$(EXTRA_CFLAGS)
$
(
CFLAGS_
$
(
*
F
)
.o
)
\
-DKBUILD_BASENAME
=
$(
subst
$(comma)
,_,
$(
subst
-,_,
$
(
*
F
)))
\
$(export_flags)
# Our objects only depend on modversions.h, not on the individual .ver
# files (fix-dep filters them), so touch modversions.h if any of the .ver
# files changes
quiet_cmd_cc_ver_c
=
MKVER include/linux/modules/
$(RELDIR)
/
$*
.ver
define
cmd_cc_ver_c
mkdir
-p
$(dir
$@);
\
$(CPP)
$(c_flags)
$<
|
$(GENKSYMS)
$(genksyms_smp_prefix)
\
-k
$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)
>
$@.tmp;
\
if
[
!
-r
$@
]
||
cmp
-s
$@
$@.tmp;
then
\
touch
$(TOPDIR)/include/linux/modversions.h;
\
fi;
\
mv
-f
$@.tmp
$@
endef
$(MODVERDIR)/%.ver
:
%.c FORCE
@
$(
call
if_changed_dep,cc_ver_c
)
targets
:=
$(
addprefix
$(MODVERDIR)
/,
$
(
export-objs:.o
=
.ver
))
fastdep
:
$(targets) sub_dirs
@
mkdir
-p
$(TOPDIR)
/.tmp_export-objs/modules/
$(RELDIR)
@
touch
$(
addprefix
$(TOPDIR)
/.tmp_export-objs/modules/
$(RELDIR)
/,
$
(
export-objs:.o
=
.ver
))
endif
# export-objs
else
# ! fastdep
ifeq
($(MAKECMDGOALS),modules_install)
# ==========================================================================
# Installing modules
# ==========================================================================
.PHONY
:
modules_install
modules_install
:
sub_dirs
ifneq
($(obj-m),)
@
echo
Installing modules
in
$(MODLIB)
/kernel/
$(RELDIR)
@
mkdir
-p
$(MODLIB)
/kernel/
$(RELDIR)
@
cp
$
(
obj-m
)
$(MODLIB)
/kernel/
$(RELDIR)
else
@
echo
-n
endif
else
# ! modules_install
# ==========================================================================
# Building
# ==========================================================================
# If a Makefile does define neither O_TARGET nor L_TARGET,
# use a standard O_TARGET named "built-in.o"
ifndef
O_TARGET
ifndef
L_TARGET
...
...
@@ -103,15 +204,9 @@ first_rule: $(if $(KBUILD_BUILTIN),$(O_TARGET) $(L_TARGET) $(EXTRA_TARGETS)) \
# Compile C sources (.c)
# ---------------------------------------------------------------------------
# If we don't know if built-in or modular, assume built-in.
# Only happens in Makefiles which override the default first_rule:
# Default is built-in, unless we know otherwise
modkern_cflags
:=
$(CFLAGS_KERNEL)
$(real-objs-y)
:
modkern_cflags := $(CFLAGS_KERNEL)
$(real-objs-y
:
.o=.i) : modkern_cflags := $(CFLAGS_KERNEL)
$(real-objs-y
:
.o=.s) : modkern_cflags := $(CFLAGS_KERNEL)
$(real-objs-y
:
.o=.lst): modkern_cflags := $(CFLAGS_KERNEL)
$(real-objs-m)
:
modkern_cflags := $(CFLAGS_MODULE)
$(real-objs-m
:
.o=.i) : modkern_cflags := $(CFLAGS_MODULE)
$(real-objs-m
:
.o=.lst): modkern_cflags := $(CFLAGS_MODULE)
...
...
@@ -121,60 +216,59 @@ $(export-objs:.o=.i) : export_flags := $(EXPORT_FLAGS)
$(export-objs
:
.o=.s) : export_flags := $(EXPORT_FLAGS)
$(export-objs
:
.o=.lst): export_flags := $(EXPORT_FLAGS)
c_flags
=
$(CFLAGS)
$(NOSTDINC_FLAGS)
$(modkern_cflags)
$(EXTRA_CFLAGS)
$
(
CFLAGS_
$
(
*
F
)
.o
)
-DKBUILD_BASENAME
=
$(
subst
$(comma)
,_,
$(
subst
-,_,
$
(
*
F
)))
$(export_flags)
c_flags
=
-Wp
,-MD,
$
(
@D
)
/.
$
(
@F
)
.d
$(CFLAGS)
$(NOSTDINC_FLAGS)
\
$(modkern_cflags)
$(EXTRA_CFLAGS)
$
(
CFLAGS_
$
(
*
F
)
.o
)
\
-DKBUILD_BASENAME
=
$(
subst
$(comma)
,_,
$(
subst
-,_,
$
(
*
F
)))
\
$(export_flags)
quiet_cmd_cc_s_c
=
CC
$(RELDIR)
/
$@
cmd_cc_s_c
=
$(CC)
$(c_flags)
-S
-o
$@
$<
%.s
:
%.c FORCE
$(
call
cmd,cmd_
cc_s_c
)
$(
call
if_changed_dep,
cc_s_c
)
quiet_cmd_cc_i_c
=
CPP
$(RELDIR)
/
$@
cmd_cc_i_c
=
$(CPP)
$(c_flags)
-o
$@
$<
%.i
:
%.c FORCE
$(
call
cmd,cmd_
cc_i_c
)
$(
call
if_changed_dep,
cc_i_c
)
quiet_cmd_cc_o_c
=
CC
$(RELDIR)
/
$@
cmd_cc_o_c
=
$(CC)
-Wp
,-MD,.
$(
subst
/,_,
$@
)
.d
$(c_flags)
-c
-o
$@
$<
cmd_cc_o_c
=
$(CC)
$(c_flags)
-c
-o
$@
$<
%.o
:
%.c FORCE
$(
call
if_changed_dep,cc_o_c
)
quiet_cmd_cc_lst_c
=
Generating
$(RELDIR)
/
$@
quiet_cmd_cc_lst_c
=
' Generating
$(RELDIR)
/$@'
cmd_cc_lst_c
=
$(CC)
$(c_flags)
-g
-c
-o
$*
.o
$<
&&
$(TOPDIR)
/scripts/makelst
$*
.o
$(TOPDIR)
/System.map
$(OBJDUMP)
>
$@
%.lst
:
%.c FORCE
$(
call
cmd,cmd_
cc_lst_c
)
$(
call
if_changed_dep,
cc_lst_c
)
# Compile assembler sources (.S)
# ---------------------------------------------------------------------------
# FIXME (s.a.)
modkern_aflags
:=
$(AFLAGS_KERNEL)
$(real-objs-y)
:
modkern_aflags := $(AFLAGS_KERNEL)
$(real-objs-y
:
.o=.s): modkern_aflags := $(AFLAGS_KERNEL)
$(real-objs-m)
:
modkern_aflags := $(AFLAGS_MODULE)
$(real-objs-m
:
.o=.s): modkern_aflags := $(AFLAGS_MODULE)
a_flags
=
$(AFLAGS)
$(NOSTDINC_FLAGS)
$(modkern_aflags)
$(EXTRA_AFLAGS)
$
(
AFLAGS_
$
(
*
F
)
.o
)
a_flags
=
-Wp
,-MD,
$
(
@D
)
/.
$
(
@F
)
.d
$(AFLAGS)
$(NOSTDINC_FLAGS)
\
$(modkern_aflags)
$(EXTRA_AFLAGS)
$
(
AFLAGS_
$
(
*
F
)
.o
)
quiet_cmd_as_s_S
=
CPP
$(RELDIR)
/
$@
cmd_as_s_S
=
$(CPP)
$(a_flags)
-o
$@
$<
%.s
:
%.S FORCE
$(
call
cmd,cmd_
as_s_S
)
$(
call
if_changed_dep,
as_s_S
)
quiet_cmd_as_o_S
=
AS
$(RELDIR)
/
$@
cmd_as_o_S
=
$(CC)
-Wp
,-MD,.
$(
subst
/,_,
$@
)
.d
$(a_flags)
-c
-o
$@
$<
cmd_as_o_S
=
$(CC)
$(a_flags)
-c
-o
$@
$<
%.o
:
%.S FORCE
$(
call
if_changed_dep,as_o_S
)
# If a Makefile does define neither O_TARGET nor L_TARGET,
# use a standard O_TARGET named "built-in.o"
targets
+=
$
(
real-objs-y
)
$
(
real-objs-m
)
$(EXTRA_TARGETS)
$(MAKECMDGOALS)
# Build the compiled-in targets
# ---------------------------------------------------------------------------
...
...
@@ -193,7 +287,9 @@ cmd_link_o_target = $(if $(strip $(obj-y)),\
rm
-f
$@
;
$(AR)
rcs
$@
)
$(O_TARGET)
:
$(obj-y) FORCE
$(
call
if_changed,cmd_link_o_target
)
$(
call
if_changed,link_o_target
)
targets
+=
$(O_TARGET)
endif
# O_TARGET
#
...
...
@@ -204,7 +300,9 @@ quiet_cmd_link_l_target = AR $(RELDIR)/$@
cmd_link_l_target
=
rm
-f
$@
;
$(AR)
$(EXTRA_ARFLAGS)
rcs
$@
$
(
obj-y
)
$(L_TARGET)
:
$(obj-y) FORCE
$(
call
if_changed,cmd_link_l_target
)
$(
call
if_changed,link_l_target
)
targets
+=
$(L_TARGET)
endif
#
...
...
@@ -219,10 +317,12 @@ cmd_link_multi = $(LD) $(EXTRA_LDFLAGS) -r -o $@ $(filter $($(basename $@)-objs)
# but that's not so easy, so we rather make all composite objects depend
# on the set of all their parts
$(multi-used-y)
:
%.o: $(multi-objs-y) FORCE
$(
call
if_changed,
cmd_
link_multi
)
$(
call
if_changed,link_multi
)
$(multi-used-m)
:
%.o: $(multi-objs-m) FORCE
$(
call
if_changed,cmd_link_multi
)
$(
call
if_changed,link_multi
)
targets
+=
$
(
multi-used-y
)
$
(
multi-used-m
)
# Compile programs on the host
# ===========================================================================
...
...
@@ -250,51 +350,26 @@ cmd_host_cc__o = $(HOSTCC) $(HOSTLDFLAGS) -o $@ $($@-objs) \
$(HOST_LOADLIBES)
$(host-progs-multi)
:
%: $(host-progs-multi-objs) FORCE
$(
call
if_changed,cmd_host_cc__o
)
# Descending when making module versions
# ---------------------------------------------------------------------------
fastdep-list
:=
$(
addprefix
_sfdep_,
$
(
subdir-ymn
))
$(
call
if_changed,host_cc__o
)
.PHONY
:
fastdep $(fastdep-list)
targets
+=
$
(
host-progs-single
)
$
(
host-progs-multi-objs
)
$
(
host-progs-multi
)
fastdep
:
$(fastdep-list)
endif
# ! modules_install
endif
# ! fastdep
$(fastdep-list)
:
@
$(MAKE)
-C
$(
patsubst
_sfdep_%,%,
$@
)
fastdep
# Descending when building
# ---------------------------------------------------------------------------
subdir-list
:=
$(
addprefix
_subdir_,
$
(
subdir-ym
))
.PHONY
:
sub_dirs $(subdir-list)
sub_dirs
:
$(subdir-list)
$(subdir-list)
:
@
$(MAKE)
-C
$(
patsubst
_subdir_%,%,
$@
)
# ===========================================================================
# Generic stuff
# ===========================================================================
# Descending
and installing modules
# Descending
# ---------------------------------------------------------------------------
modinst-list
:=
$(
addprefix
_modinst_,
$
(
subdir-ym
)
)
.PHONY
:
sub_dirs $(subdir-ym
)
.PHONY
:
modules_install _modinst_ $(modinst-list
)
sub_dirs
:
$(subdir-ym
)
modules_install
:
$(modinst-list)
ifneq
($(obj-m),)
@
echo
Installing modules
in
$(MODLIB)
/kernel/
$(RELDIR)
@
mkdir
-p
$(MODLIB)
/kernel/
$(RELDIR)
@
cp
$
(
obj-m
)
$(MODLIB)
/kernel/
$(RELDIR)
else
@
echo
-n
endif
$(modinst-list)
:
@
$(MAKE)
-C
$(
patsubst
_modinst_%,%,
$@
)
modules_install
$(subdir-ym)
:
@
$(MAKE)
-C
$@
$(MAKECMDGOALS)
# Add FORCE to the prequisites of a target to force it to be always rebuilt.
# ---------------------------------------------------------------------------
...
...
@@ -303,63 +378,12 @@ $(modinst-list):
FORCE
:
#
# This is useful for testing
# FIXME: really?
script
:
$(SCRIPT)
#
# This sets version suffixes on exported symbols
# Separate the object into "normal" objects and "exporting" objects
# Exporting objects are: all objects that define symbol tables
#
ifdef
CONFIG_MODVERSIONS
ifneq
"$(strip $(export-objs))" ""
MODVERDIR
:=
$(TOPDIR)
/include/linux/modules/
$(RELDIR)
#
# Added the SMP separator to stop module accidents between uniprocessor
# and SMP Intel boxes - AC - from bits by Michael Chastain
#
ifdef
CONFIG_SMP
genksyms_smp_prefix
:=
-p
smp_
else
genksyms_smp_prefix
:=
endif
# We don't track dependencies for .ver files, so we FORCE to check
# them always (i.e. always at "make dep" time).
quiet_cmd_create_ver
=
Creating include/linux/modules/
$(RELDIR)
/
$*
.ver
cmd_create_ver
=
$(CC)
$(CFLAGS)
$(EXTRA_CFLAGS)
-E
-D__GENKSYMS__
$<
|
\
$(GENKSYMS)
$(genksyms_smp_prefix)
-k
$(VERSION)
.
$(PATCHLEVEL)
.
$(SUBLEVEL)
>
$@
.tmp
$(MODVERDIR)/%.ver
:
%.c FORCE
@
mkdir
-p
$(
dir
$@
)
@
$(
call
cmd,cmd_create_ver
)
@
if
[
-r
$@
]
&&
cmp
-s
$@
$@
.tmp
;
then
\
rm
-f
$@
.tmp
;
\
else
\
touch
$(TOPDIR)
/include/linux/modversions.h
;
\
mv
-f
$@
.tmp
$@
;
\
fi
# updates .ver files but not modversions.h
fastdep
:
$(addprefix $(MODVERDIR)/
,
$(export-objs:.o=.ver))
ifneq
($(export-objs),)
@
mkdir
-p
$(TOPDIR)
/.tmp_export-objs/modules/
$(RELDIR)
@
touch
$(
addprefix
$(TOPDIR)
/.tmp_export-objs/modules/
$(RELDIR)
/,
$
(
export-objs:.o
=
.ver
))
endif
endif
# export-objs
endif
# CONFIG_MODVERSIONS
# ---------------------------------------------------------------------------
# Check if command line has changed
...
...
@@ -391,9 +415,14 @@ endif # CONFIG_MODVERSIONS
# which is saved in .<target>.o, to the current command line using
# the two filter-out commands)
# read all saved command lines and dependencies
# Read all saved command lines and dependencies for the $(targets) we
# may be building above, using $(if_changed{,_dep}). As an
# optimization, we don't need to read them if the target does not
# exist, we will rebuild anyway in that case.
targets
:=
$(
wildcard
$(
sort
$(targets)
))
cmd_files
:=
$(
wildcard
$(
foreach
f,
$(targets)
,
$(
dir
$(f)
)
.
$(
notdir
$(f)
)
.cmd
))
cmd_files
:=
$(
wildcard
.
*
.cmd
)
ifneq
($(cmd_files),)
include
$(cmd_files)
endif
...
...
@@ -401,9 +430,12 @@ endif
# function to only execute the passed command if necessary
if_changed
=
$(
if
$(
strip
$?
\
$(
filter-out
$
(
$(1)
)
,
$
(
cmd_
$
(
@F
)))
\
$(
filter-out
$
(
cmd_
$
(
@F
))
,
$
(
$(1)
)))
,
\
@
$(
if
$
(
$(quiet)$(1)
)
,echo
' $(
$(quiet)$(1)
)
'
&&
)
$
(
$(1)
)
&&
echo
'cmd_$@ := $(
$(1)
)
'
>
$
(
@D
)
/.
$
(
@F
)
.cmd
)
$(
filter-out
$
(
cmd_
$(1)
)
,
$
(
cmd_
$@
))
\
$(
filter-out
$
(
cmd_
$@
)
,
$
(
cmd_
$(1)
)))
,
\
@set
-e
;
\
$(
if
$
(
$(quiet)
cmd_
$(1)
)
,echo
' $(
$(quiet)
cmd_
$(1)
)
'
;
)
\
$
(
cmd_
$(1)
)
;
\
echo
'cmd_$@ := $(cmd_
$(1)
)
'
>
$
(
@D
)
/.
$
(
@F
)
.cmd
)
# execute the command and also postprocess generated .d dependencies
...
...
@@ -415,9 +447,9 @@ if_changed_dep = $(if $(strip $? \
@set
-e
;
\
$(
if
$
(
$(quiet)
cmd_
$(1)
)
,echo
' $(
$(quiet)
cmd_
$(1)
)
'
;
)
\
$
(
cmd_
$(1)
)
;
\
$(TOPDIR)
/scripts/fixdep
$(
subst
/,_,
$@
)
$(TOPDIR)
'$(cmd_
$(1)
)
'
>
.
$(
subst
/,_,
$@
)
.tmp
;
\
rm
-f
.
$(
subst
/,_,
$@
)
.d
;
\
mv
-f
.
$(
subst
/,_,
$@
)
.tmp .
$(
subst
/,_,
$@
)
.cmd
)
$(TOPDIR)
/scripts/fixdep
$
(
@D
)
/.
$
(
@F
)
.d
$@
$(TOPDIR)
'$(cmd_
$(1)
)
'
>
$
(
@D
)
/.
$
(
@F
)
.tmp
;
\
rm
-f
$
(
@D
)
/.
$
(
@F
)
.d
;
\
mv
-f
$
(
@D
)
/.
$
(
@F
)
.tmp
$
(
@D
)
/.
$
(
@F
)
.cmd
)
# If quiet is set, only print short version of command
...
...
init/Makefile
View file @
83859fba
...
...
@@ -22,5 +22,5 @@ $(TOPDIR)/include/linux/compile.h: ../include/linux/compile.h ;
# actual file if its content has changed.
../include/linux/compile.h
:
FORCE
@
echo
-n
'Generating $@'
@
echo
-n
'
Generating $@'
@
../scripts/mkcompile_h
$@
"
$(ARCH)
"
"
$(CONFIG_SMP)
"
"
$(CC)
$(CFLAGS)
"
scripts/Makefile
View file @
83859fba
...
...
@@ -22,7 +22,7 @@ TAIL=tail.tk
# Config.in files to depend on anyways. So I'll force it to remake.
kconfig.tk
:
$(TOPDIR)/arch/$(ARCH)/config.in tkparse $(HEADER) $(TAIL) FORCE
@
echo
Generating
$@
@
echo
' Generating $@'
@
(
\
if
[
-f
/usr/local/bin/wish
]
;
then
\
echo
'#!'
"/usr/local/bin/wish -f"
;
\
...
...
scripts/fixdep.c
View file @
83859fba
...
...
@@ -61,9 +61,9 @@
*
* It is invoked as
*
* fixdep <target> <topdir> <cmdline>
* fixdep <
depfile> <
target> <topdir> <cmdline>
*
* and will read the dependency file
".<target>.d".
* and will read the dependency file
<depfile>
*
* The transformed dependency snipped is written to stdout.
*
...
...
@@ -112,29 +112,20 @@
#define INT_FIG_ ntohl(0x4649475f)
char
*
topdir
;
char
*
target
;
char
*
depfile
;
char
*
cmdline
;
void
usage
(
void
)
{
fprintf
(
stderr
,
"Usage: fixdep <target> <topdir> <cmdline>
\n
"
);
fprintf
(
stderr
,
"Usage: fixdep <
depfile> <
target> <topdir> <cmdline>
\n
"
);
exit
(
1
);
}
void
print_cmdline
(
char
*
target
,
char
*
cmdline
)
void
print_cmdline
(
void
)
{
char
*
s
=
strdup
(
target
);
char
*
p
=
s
;
if
(
!
s
)
{
fprintf
(
stderr
,
"no mem!
\n
"
);
exit
(
2
);
}
while
((
p
=
strchr
(
p
,
'/'
)))
*
p
=
'_'
;
printf
(
"cmd_%s := %s
\n\n
"
,
s
,
cmdline
);
free
(
s
);
printf
(
"cmd_%s := %s
\n\n
"
,
target
,
cmdline
);
}
char
*
str_config
=
NULL
;
...
...
@@ -297,11 +288,11 @@ void parse_dep_file(void *map, size_t len)
p
=
strchr
(
m
,
':'
);
if
(
!
p
)
{
fprintf
(
stderr
,
"
parse error at %d"
,
__LINE__
);
fprintf
(
stderr
,
"
fixdep: parse error
\n
"
);
exit
(
1
);
}
memcpy
(
s
,
m
,
p
-
m
);
s
[
p
-
m
]
=
0
;
printf
(
"%s:
\\\n
"
,
s
);
printf
(
"%s:
\\\n
"
,
target
);
m
=
p
+
1
;
clear_config
();
...
...
@@ -326,22 +317,20 @@ void parse_dep_file(void *map, size_t len)
printf
(
"
\n
"
);
}
void
print_deps
(
char
*
target
)
void
print_deps
(
void
)
{
char
filename
[
PATH_MAX
];
struct
stat
st
;
int
fd
;
void
*
map
;
sprintf
(
filename
,
".%s.d"
,
target
);
fd
=
open
(
filename
,
O_RDONLY
);
fd
=
open
(
depfile
,
O_RDONLY
);
if
(
fd
<
0
)
{
perror
(
filenam
e
);
perror
(
depfil
e
);
exit
(
2
);
}
fstat
(
fd
,
&
st
);
if
(
st
.
st_size
==
0
)
{
fprintf
(
stderr
,
"
%s is empty
\n
"
,
filenam
e
);
fprintf
(
stderr
,
"
fixdep: %s is empty
\n
"
,
depfil
e
);
close
(
fd
);
return
;
}
...
...
@@ -362,7 +351,7 @@ void traps(void)
char
*
test
=
"CONF"
;
if
(
*
(
int
*
)
test
!=
INT_CONF
)
{
fprintf
(
stderr
,
"sizeof(int) != 4 or wrong endianess? %#x
\n
"
,
fprintf
(
stderr
,
"
fixdep:
sizeof(int) != 4 or wrong endianess? %#x
\n
"
,
*
(
int
*
)
test
);
exit
(
2
);
}
...
...
@@ -370,19 +359,18 @@ void traps(void)
int
main
(
int
argc
,
char
*
argv
[])
{
char
*
target
,
*
cmdline
;
traps
();
if
(
argc
!=
4
)
if
(
argc
!=
5
)
usage
();
target
=
argv
[
1
];
topdir
=
argv
[
2
];
cmdline
=
argv
[
3
];
depfile
=
argv
[
1
];
target
=
argv
[
2
];
topdir
=
argv
[
3
];
cmdline
=
argv
[
4
];
print_cmdline
(
target
,
cmdline
);
print_deps
(
target
);
print_cmdline
();
print_deps
();
return
0
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment