qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH v9 04/10] configure: Generate rule to calculate the base arch


From: Philippe Mathieu-Daudé
Subject: Re: [PATCH v9 04/10] configure: Generate rule to calculate the base architecture of a target
Date: Tue, 23 Jun 2020 15:17:15 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.5.0

On 6/23/20 10:45 AM, Philippe Mathieu-Daudé wrote:
> On 6/23/20 10:01 AM, Claudio Fontana wrote:
>> Hi Philippe, Alex,
>>
>> On 6/18/20 2:33 PM, Philippe Mathieu-Daudé wrote:
>>> From: Alex Bennée <alex.bennee@linaro.org>
>>>
>>> As we encode the base architecture in configure.sh, we can emit
>>> the base-arch() function into config-host.mak.
>>>
>>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>>
>> I found this change a bit strange, but maybe I am missing some context.
> 
> This is used in patch 9:
> "Makefile: Allow target-specific optional Kconfig"
> https://www.mail-archive.com/qemu-devel@nongnu.org/msg713823.html
> 
>>
>> Would it not be easier to read the information from the
>> config-target.mak files as it is already emitted there?
> 
> So you are suggesting moving the SUBDIR_DEVICES_MAK creation code
> to Makefile.target, before until now it is target-agnostic but we
> are making it target-specific. Yes, it could work...
> 
> I keep respining this series since the semihosting rework. Frankly
> I don't remember why it became so complicated, I need to jump into
> the code again.
> 
> I guess when Paolo introduced Kconfig, the accelerator configs were
> almost static, so SUBDIR_DEVICES_MAK was only dependent of host
> config.
> 
> The semihosting "device" depends of accelerator and target configs.
> 
> Maybe the problem is to see minikconf generating device selectors,
> as kconfig is also used for generic features (such accelerator,
> not really "device").

This might be solved easily using Meson... Maybe better wait for it?

>
>>
>>> ---
>>>  configure | 19 +++++++++++++++++++
>>>  1 file changed, 19 insertions(+)
>>>
>>> diff --git a/configure b/configure
>>> index ba88fd1824..c0d7fbc30e 100755
>>> --- a/configure
>>> +++ b/configure
>>> @@ -7927,6 +7927,8 @@ if test "$linux" = "yes" ; then
>>>      fi
>>>  fi
>>>  
>>> +target_to_base_map=""
>>> +
>>>  for target in $target_list; do
>>>  target_dir="$target"
>>>  config_target_mak=$target_dir/config-target.mak
>>> @@ -8155,6 +8157,7 @@ target_arch_name="$(upper $TARGET_ARCH)"
>>>  echo "TARGET_$target_arch_name=y" >> $config_target_mak
>>>  echo "TARGET_NAME=$target_name" >> $config_target_mak
>>>  echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
>>> +target_to_base_map="$target_dir,$TARGET_BASE_ARCH $target_to_base_map"
>>>  if [ "$TARGET_ABI_DIR" = "" ]; then
>>>    TARGET_ABI_DIR=$TARGET_ARCH
>>>  fi
>>> @@ -8370,6 +8373,22 @@ if test "$ccache_cpp2" = "yes"; then
>>>    echo "export CCACHE_CPP2=y" >> $config_host_mak
>>>  fi
>>>  
>>> +# Export a rule for calculating base arch from target_dir for use by
>>> +# the Kconfig generator
>>> +echo "# Usage: \$(call base-arch, target-dir)" >> $config_host_mak
>>> +echo "# Return the base architecture for a target." >> $config_host_mak
>>> +echo "# e.g \$(call base-arch, aarch64-linux-user) returns 'arm'" >> 
>>> $config_host_mak
>>> +echo "base-arch = \$(strip \\" >> $config_host_mak
>>> +close_braces=""
>>> +for pairs in $target_to_base_map
>>> +do
>>> +    dir="${pairs%%,*}"
>>> +    base="${pairs#*,}"
>>> +    echo "\$(if \$(findstring $dir,\$1),$base, \\" >> $config_host_mak
>>> +    close_braces="$close_braces )"
>>> +done
>>> +echo "$close_braces )" >> $config_host_mak
>>> +
>>>  # If we're using a separate build tree, set it up now.
>>>  # DIRS are directories which we simply mkdir in the build tree;
>>>  # LINKS are things to symlink back into the source tree
>>>
>>
> 




reply via email to

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