configure/Make: Build libfdt from submodule DTC
Configure to use the DTC submodule to build libfdt when no system libfdt is found. Prompt to install the DTC submodule if --enable-fdt is set but no DTC can be found. DTC has no out-of-tree build capability, so the configure will symlink the Makefile and scripts directory in the out of tree build directory and pass in all the needed DTC arguments to make out of tree build happen. Ideally we fix the DTC make to support out of tree, but did it this way to avoid commits to DTC. Signed-off-by: David Holsgrove <david.holsgrove@xilinx.com> Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
This commit is contained in:
parent
98f6360569
commit
a540f158db
10
Makefile
10
Makefile
@ -145,6 +145,15 @@ pixman/Makefile: $(SRC_PATH)/pixman/configure
|
|||||||
$(SRC_PATH)/pixman/configure:
|
$(SRC_PATH)/pixman/configure:
|
||||||
(cd $(SRC_PATH)/pixman; autoreconf -v --install)
|
(cd $(SRC_PATH)/pixman; autoreconf -v --install)
|
||||||
|
|
||||||
|
DTC_MAKE_ARGS=-I$(SRC_PATH)/dtc VPATH=$(SRC_PATH)/dtc -C dtc V="$(V)" LIBFDT_srcdir=$(SRC_PATH)/dtc/libfdt
|
||||||
|
DTC_CFLAGS=$(CFLAGS) $(extra_cflags) -I$(BUILD_DIR)/dtc -I$(SRC_PATH)/dtc -I$(SRC_PATH)/dtc/libfdt
|
||||||
|
|
||||||
|
subdir-dtc:dtc/libfdt dtc/tests
|
||||||
|
$(call quiet-command,$(MAKE) $(DTC_MAKE_ARGS) CPPFLAGS="$(DTC_CFLAGS)" LDFLAGS="$(LDFLAGS)" ARFLAGS="$(ARFLAGS)" CC="$(CC)" AR="$(AR)" LD="$(LD)" $(SUBDIR_MAKEFLAGS) libfdt,)
|
||||||
|
|
||||||
|
dtc/%:
|
||||||
|
mkdir -p $@
|
||||||
|
|
||||||
$(SUBDIR_RULES): libqemuutil.a libqemustub.a $(common-obj-y)
|
$(SUBDIR_RULES): libqemuutil.a libqemustub.a $(common-obj-y)
|
||||||
|
|
||||||
ROMSUBDIR_RULES=$(patsubst %,romsubdir-%, $(ROMS))
|
ROMSUBDIR_RULES=$(patsubst %,romsubdir-%, $(ROMS))
|
||||||
@ -262,6 +271,7 @@ distclean: clean
|
|||||||
rm -rf $$d || exit 1 ; \
|
rm -rf $$d || exit 1 ; \
|
||||||
done
|
done
|
||||||
if test -f pixman/config.log; then make -C pixman distclean; fi
|
if test -f pixman/config.log; then make -C pixman distclean; fi
|
||||||
|
if test -f dtc/version_gen.h; then make $(DTC_MAKE_ARGS) clean; fi
|
||||||
|
|
||||||
KEYMAPS=da en-gb et fr fr-ch is lt modifiers no pt-br sv \
|
KEYMAPS=da en-gb et fr fr-ch is lt modifiers no pt-br sv \
|
||||||
ar de en-us fi fr-be hr it lv nl pl ru th \
|
ar de en-us fi fr-be hr it lv nl pl ru th \
|
||||||
|
31
configure
vendored
31
configure
vendored
@ -2496,17 +2496,34 @@ if test "$fdt" != "no" ; then
|
|||||||
int main(void) { return 0; }
|
int main(void) { return 0; }
|
||||||
EOF
|
EOF
|
||||||
if compile_prog "" "$fdt_libs" ; then
|
if compile_prog "" "$fdt_libs" ; then
|
||||||
|
# system DTC is good - use it
|
||||||
fdt=yes
|
fdt=yes
|
||||||
libs_softmmu="$libs_softmmu $fdt_libs"
|
elif test -d ${source_path}/dtc/libfdt ; then
|
||||||
else
|
# have submodule DTC - use it
|
||||||
if test "$fdt" = "yes" ; then
|
fdt=yes
|
||||||
feature_not_found "fdt"
|
dtc_internal="yes"
|
||||||
|
mkdir -p dtc
|
||||||
|
if [ "$source_path" != `pwd` ] ; then
|
||||||
|
symlink "$source_path/dtc/Makefile" "dtc/Makefile"
|
||||||
|
symlink "$source_path/dtc/scripts" "dtc/scripts"
|
||||||
fi
|
fi
|
||||||
|
fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
|
||||||
|
fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
|
||||||
|
elif test "$fdt" = "yes" ; then
|
||||||
|
# have neither and want - prompt for system/submodule install
|
||||||
|
error_exit "ERROR: DTC not present. Your options:" \
|
||||||
|
" (1) Preferred: Install the DTC devel package" \
|
||||||
|
" (2) Fetch the DTC submodule, using:" \
|
||||||
|
" git submodule update --init dtc"
|
||||||
|
else
|
||||||
|
# don't have and don't want
|
||||||
fdt_libs=
|
fdt_libs=
|
||||||
fdt=no
|
fdt=no
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
libs_softmmu="$libs_softmmu $fdt_libs"
|
||||||
|
|
||||||
##########################################
|
##########################################
|
||||||
# GLX probe, used by milkymist-tmu2
|
# GLX probe, used by milkymist-tmu2
|
||||||
if test "$glx" != "no" ; then
|
if test "$glx" != "no" ; then
|
||||||
@ -3452,7 +3469,7 @@ if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# add pixman flags after all config tests are done
|
# add pixman flags after all config tests are done
|
||||||
QEMU_CFLAGS="$QEMU_CFLAGS $pixman_cflags"
|
QEMU_CFLAGS="$QEMU_CFLAGS $pixman_cflags $fdt_cflags"
|
||||||
libs_softmmu="$libs_softmmu $pixman_libs"
|
libs_softmmu="$libs_softmmu $pixman_libs"
|
||||||
|
|
||||||
echo "Install prefix $prefix"
|
echo "Install prefix $prefix"
|
||||||
@ -4515,6 +4532,10 @@ if [ "$pixman" = "internal" ]; then
|
|||||||
echo "config-host.h: subdir-pixman" >> $config_host_mak
|
echo "config-host.h: subdir-pixman" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "$dtc_internal" = "yes" ]; then
|
||||||
|
echo "config-host.h: subdir-dtc" >> $config_host_mak
|
||||||
|
fi
|
||||||
|
|
||||||
# build tree in object directory in case the source is not in the current directory
|
# build tree in object directory in case the source is not in the current directory
|
||||||
DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos"
|
DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos"
|
||||||
DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas"
|
DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas"
|
||||||
|
Loading…
Reference in New Issue
Block a user