qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 3/3] configure/Make: Build libfdt from submod


From: Peter Crosthwaite
Subject: Re: [Qemu-devel] [PATCH v2 3/3] configure/Make: Build libfdt from submodule DTC
Date: Mon, 4 Mar 2013 14:55:38 +1000

On Fri, Mar 1, 2013 at 1:30 AM, Peter Maydell <address@hidden> wrote:
> On 19 February 2013 04:19, Peter Crosthwaite
> <address@hidden> wrote:
>> 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 <address@hidden>
>> Signed-off-by: Peter Crosthwaite <address@hidden>
>> ---
>>
>>  Makefile  |   10 ++++++++++
>>  configure |   29 +++++++++++++++++++++++++----
>>  2 files changed, 35 insertions(+), 4 deletions(-)
>>
>> diff --git a/Makefile b/Makefile
>> index 0d9099a..a8956d2 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -136,6 +136,15 @@ pixman/Makefile: $(SRC_PATH)/pixman/configure
>>  $(SRC_PATH)/pixman/configure:
>>         (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,)
>
> This doesn't work if you configured with --cc='ccache gcc'.
> I think you have insufficient quoting here.
>

Yes, CC AR and LD need quotes. Fixed in v3.

Thanks,
Peter

>> +
>> +dtc/%:
>> +       mkdir -p $@
>> +
>>  $(SUBDIR_RULES): libqemuutil.a libqemustub.a $(common-obj-y)
>>
>>  ROMSUBDIR_RULES=$(patsubst %,romsubdir-%, $(ROMS))
>> @@ -253,6 +262,7 @@ distclean: clean
>>         rm -rf $$d || exit 1 ; \
>>          done
>>         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 \
>>  ar      de     en-us  fi  fr-be  hr     it  lv  nl         pl  ru     th \
>> diff --git a/configure b/configure
>> index 088909b..6e40624 100755
>> --- a/configure
>> +++ b/configure
>> @@ -2376,11 +2376,28 @@ if test "$fdt" != "no" ; then
>>  int main(void) { return 0; }
>>  EOF
>>    if compile_prog "" "$fdt_libs" ; then
>> +    #system DTC is good - use it
>
> Spaces between the comment char and the comment would be nice.
>
>>      fdt=yes
>> -  else
>> -    if test "$fdt" = "yes" ; then
>> -      feature_not_found "fdt"
>> +  elif test -d ${source_path}/dtc/libfdt ; then
>> +    #have submodule DTC - use it
>> +    fdt=yes
>> +    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
>> +    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
>> +    echo "ERROR: DTC not present. Your options:"
>> +    echo "  (1) Preferred: Install the DTC devel package"
>> +    echo "  (2) Fetch the DTC submodule, using:"
>> +    echo "      git submodule update --init dtc"
>> +    exit 1
>> +  else
>> +    #dont have and dont want
>
> Missing apostrophes.
>
>>      fdt_libs=
>>      fdt=no
>>    fi
>> @@ -3259,7 +3276,7 @@ if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; 
>> then
>>  fi
>>
>>  # 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"
>>
>>  echo "Install prefix    $prefix"
>> @@ -4299,6 +4316,10 @@ if [ "$pixman" = "internal" ]; then
>>    echo "config-host.h: subdir-pixman" >> $config_host_mak
>>  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
>>  DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32"
>>  DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas"
>> --
>> 1.7.0.4
>>
>
> -- PMM
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]