[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RFC v2 1/6] build: Add configure options for native calls
From: |
Alex Bennée |
Subject: |
Re: [RFC v2 1/6] build: Add configure options for native calls |
Date: |
Mon, 12 Jun 2023 14:02:22 +0100 |
User-agent: |
mu4e 1.11.6; emacs 29.0.91 |
Alex Bennée <alex.bennee@linaro.org> writes:
> Yeqi Fu <fufuyqqqqqq@gmail.com> writes:
>
>> Signed-off-by: Yeqi Fu <fufuyqqqqqq@gmail.com>
>> ---
>> Makefile | 4 +++
>> common-user/native/Makefile.include | 9 ++++++
>> common-user/native/Makefile.target | 22 +++++++++++++
>> configure | 50 +++++++++++++++++++++++++++++
>> docs/devel/build-system.rst | 4 +++
>> meson.build | 8 +++++
>> meson_options.txt | 2 ++
>> scripts/meson-buildoptions.sh | 4 +++
>> 8 files changed, 103 insertions(+)
>> create mode 100644 common-user/native/Makefile.include
>> create mode 100644 common-user/native/Makefile.target
>>
>> diff --git a/Makefile b/Makefile
>> index 3c7d67142f..923da109bf 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -185,6 +185,10 @@ SUBDIR_MAKEFLAGS=$(if $(V),,--no-print-directory
>> --quiet)
>>
>> include $(SRC_PATH)/tests/Makefile.include
>>
>> +ifeq ($(CONFIG_USER_NATIVE),y)
>> + include $(SRC_PATH)/common-user/native/Makefile.include
>> +endif
>> +
>> all: recurse-all
>>
>> ROMS_RULES=$(foreach t, all clean distclean, $(addsuffix /$(t), $(ROMS)))
>> diff --git a/common-user/native/Makefile.include
>> b/common-user/native/Makefile.include
>> new file mode 100644
>> index 0000000000..40d20bcd4c
>> --- /dev/null
>> +++ b/common-user/native/Makefile.include
>> @@ -0,0 +1,9 @@
>> +.PHONY: build-native
>> +build-native: $(NATIVE_TARGETS:%=build-native-library-%)
>> +$(NATIVE_TARGETS:%=build-native-library-%): build-native-library-%:
>> + $(call quiet-command, \
>> + $(MAKE) -C common-user/native/$* $(SUBDIR_MAKEFLAGS), \
>> + "BUILD","$* native library")
>> +# endif
>> +
>> +all: build-native
>
> I think it would be better if we could add the targets via meson and let
> it deal with the multiple versions. I will defer to Paolo on how to do
> this though.
OK Paolo said we won't expose cross compilers to meson so we are stuck
with pure makefiles for now... however:
<snip>
>> +
>> +(config_host_mak=common-user/native/config-host.mak
>> +mkdir -p common-user/native
>> +echo "# Automatically generated by configure - do not modify" >
>> $config_host_mak
>> +echo "SRC_PATH=$source_path" >> $config_host_mak
>> +echo "HOST_CC=$host_cc" >> $config_host_mak
>> +
>> +native_targets=
>> +for target in $target_list; do
>> + arch=${target%%-*}
>> +
>> + case $target in
>> + *-linux-user|*-bsd-user)
>> + if probe_target_compiler $target || test -n "$container_image"; then
>> + mkdir -p "common-user/native/$target"
>> + config_target_mak=common-user/native/$target/config-target.mak
>> + ln -sf "$source_path/common-user/native/Makefile.target"
>> "common-user/native/$target/Makefile"
>> + echo "# Automatically generated by configure - do not modify" >
>> "$config_target_mak"
>> + echo "TARGET_NAME=$arch" >> "$config_target_mak"
>> + echo "TARGET=$target" >> "$config_target_mak"
>> + eval "target_native_flag=\${native_flag_$target_arch}"
>> + target_cflags="$target_cflags $target_native_flag"
>> + write_target_makefile "build-native-library-$target" >>
>> "$config_target_mak"
>> + native_targets="$native_targets $target"
>> + fi
>> + ;;
>> + esac
>> +done
>
> This is basically replicating what we already have in
> tests/tcg/FOO-linux-user/config-target.mak. I would suggest moving those
> into a common location ($BUILD/targets/foo/compiler.mak) and then fixing
> up TCG tests to use the new location. When you add the native libs you
> can use the same configs.
This should be merged with the existing config_target code.
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
- [RFC v2 0/6] Native Library Calls, Yeqi Fu, 2023/06/07
- [RFC v2 3/6] target/i386: Add native library calls, Yeqi Fu, 2023/06/07
- [RFC v2 1/6] build: Add configure options for native calls, Yeqi Fu, 2023/06/07
- [RFC v2 5/6] target/arm: Add native library calls, Yeqi Fu, 2023/06/07
- [RFC v2 2/6] Add the libnative library, Yeqi Fu, 2023/06/07
- [RFC v2 6/6] linux-user: Add '-native-bypass' option, Yeqi Fu, 2023/06/07
- [RFC v2 4/6] target/mips: Add native library calls, Yeqi Fu, 2023/06/07