Makefile dependencies for device configs

Add makefile dependencies for target specific device configs.
These will copy the default config if none exists, obsoleting the old
configure time code.  If a config already exists but is older than the
default then print a warning.

Also remove config-devices.h.  Code does not and should not care which
devices are being built.

Signed-off-by: Paul Brook <paul@codesourcery.com>
This commit is contained in:
Paul Brook 2009-11-22 16:25:30 +00:00
parent 60c9af07aa
commit a992fe3d0f
4 changed files with 16 additions and 21 deletions

View File

@ -1,7 +1,7 @@
# Makefile for QEMU. # Makefile for QEMU.
# This needs to be defined before rules.mak # This needs to be defined before rules.mak
GENERATED_HEADERS = config-host.h config-all-devices.h GENERATED_HEADERS = config-host.h
ifneq ($(wildcard config-host.mak),) ifneq ($(wildcard config-host.mak),)
# Put the all: rule here so that config-host.mak can contain dependencies. # Put the all: rule here so that config-host.mak can contain dependencies.
@ -41,6 +41,19 @@ SUBDIR_DEVICES_MAK=$(patsubst %, %/config-devices.mak, $(TARGET_DIRS))
config-all-devices.mak: $(SUBDIR_DEVICES_MAK) config-all-devices.mak: $(SUBDIR_DEVICES_MAK)
$(call quiet-command,cat $(SUBDIR_DEVICES_MAK) | grep "=y$$" | sort -u > $@," GEN $@") $(call quiet-command,cat $(SUBDIR_DEVICES_MAK) | grep "=y$$" | sort -u > $@," GEN $@")
%/config-devices.mak: default-configs/%.mak
$(call quiet-command,cat $< > $@.tmp, " GEN $@")
@if test -f $@ ; then \
echo "WARNING: $@ out of date." ;\
echo "Run \"make defconfing\" to regenerate." ; \
rm $@.tmp ; \
else \
mv $@.tmp $@ ; \
fi
defconfig:
rm -f config-all-devices.mak $(SUBDIR_DEVICES_MAK)
-include config-all-devices.mak -include config-all-devices.mak
build-all: $(DOCS) $(TOOLS) recurse-all build-all: $(DOCS) $(TOOLS) recurse-all
@ -48,9 +61,6 @@ build-all: $(DOCS) $(TOOLS) recurse-all
config-host.h: config-host.h-timestamp config-host.h: config-host.h-timestamp
config-host.h-timestamp: config-host.mak config-host.h-timestamp: config-host.mak
config-all-devices.h: config-all-devices.h-timestamp
config-all-devices.h-timestamp: config-all-devices.mak
SUBDIR_RULES=$(patsubst %,subdir-%, $(TARGET_DIRS)) SUBDIR_RULES=$(patsubst %,subdir-%, $(TARGET_DIRS))
subdir-%: $(GENERATED_HEADERS) subdir-%: $(GENERATED_HEADERS)
@ -246,7 +256,7 @@ clean:
distclean: clean distclean: clean
rm -f config-host.mak config-host.h* config-host.ld $(DOCS) qemu-options.texi qemu-img-cmds.texi qemu-monitor.texi rm -f config-host.mak config-host.h* config-host.ld $(DOCS) qemu-options.texi qemu-img-cmds.texi qemu-monitor.texi
rm -f config-all-devices.mak config-all-devices.h* rm -f config-all-devices.mak
rm -f roms/seabios/config.mak roms/vgabios/config.mak rm -f roms/seabios/config.mak roms/vgabios/config.mak
rm -f qemu-{doc,tech}.{info,aux,cp,dvi,fn,info,ky,log,pg,toc,tp,vr} rm -f qemu-{doc,tech}.{info,aux,cp,dvi,fn,info,ky,log,pg,toc,tp,vr}
for d in $(TARGET_DIRS) libhw32 libhw64 libuser; do \ for d in $(TARGET_DIRS) libhw32 libhw64 libuser; do \

View File

@ -1,7 +1,7 @@
# -*- Mode: makefile -*- # -*- Mode: makefile -*-
# This needs to be defined before rules.mak # This needs to be defined before rules.mak
GENERATED_HEADERS = config-target.h config-devices.h GENERATED_HEADERS = config-target.h
include ../config-host.mak include ../config-host.mak
include config-devices.mak include config-devices.mak

View File

@ -1,13 +1,2 @@
#include "config-host.h" #include "config-host.h"
#include "config-target.h" #include "config-target.h"
/* We want to include different config files for specific targets
And for the common library. They need a different name because
we don't want to rely in paths */
#if defined(NEED_CPU_H)
#include "config-devices.h"
#else
#include "config-all-devices.h"
#endif

4
configure vendored
View File

@ -2209,10 +2209,6 @@ if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$targ
mkdir -p $target_dir/nwfpe mkdir -p $target_dir/nwfpe
fi fi
if test ! -f $target_dir/config-devices.mak ; then
cp $source_path/default-configs/${target}.mak $target_dir/config-devices.mak
fi
# #
# don't use ln -sf as not all "ln -sf" over write the file/link # don't use ln -sf as not all "ln -sf" over write the file/link
# #