commit: 74d25eedd9c327fe91048b06ad81b86eb14d9cb7 Author: Sv. Lockal <lockalsash <AT> gmail <DOT> com> AuthorDate: Sun Jun 22 14:41:48 2025 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Sat Jul 5 07:14:13 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=74d25eed
flag-o-matic.eclass: Add functions for testing/stipping HIPFLAGS HIPFLAFS allows to specify default compilation flags to be used when compiling HIP files. As environment variable, it is supported in CMake for all projects that specify HIP as language[1][2]. Some flags like -mtls-dialect=* are not supported by HIP compiler; test-flags-HIPCXX can be used to test flags. [1] https://cmake.org/cmake/help/latest/envvar/HIPFLAGS.html [2] https://rocm.docs.amd.com/en/latest/conceptual/cmake-packages.html#using-the-hip-single-source-programming-model Bug: https://bugs.gentoo.org/957893 Signed-off-by: Sv. Lockal <lockalsash <AT> gmail.com> Part-of: https://github.com/gentoo/gentoo/pull/42691 Signed-off-by: Sam James <sam <AT> gentoo.org> eclass/flag-o-matic.eclass | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/eclass/flag-o-matic.eclass b/eclass/flag-o-matic.eclass index f22854c646c7..1c9abe1280b6 100644 --- a/eclass/flag-o-matic.eclass +++ b/eclass/flag-o-matic.eclass @@ -636,6 +636,11 @@ _test-flag-PROG() { cmdline_extra+=(-xc) ;; + hip) + in_ext='hip' + in_src='int main(void) { return 0; }' + cmdline_extra+=(-xhip -c) + ;; esac local test_in=${T}/test-flag.${in_ext} local test_out=${T}/test-flag.exe @@ -707,6 +712,12 @@ test-flag-FC() { _test-flag-PROG FC f95 "$@"; } # Returns shell true if <flag> is supported by the C compiler and linker, else returns shell false. test-flag-CCLD() { _test-flag-PROG CC c+ld "$@"; } +# @FUNCTION: test-flag-HIPCXX +# @USAGE: <flag> +# @DESCRIPTION: +# Returns shell true if <flag> is supported by the HIP compiler, else returns shell false. +test-flag-HIPCXX() { _test-flag-PROG HIPCXX hip "$@"; } + # @FUNCTION: test-flags-PROG # @USAGE: <compiler> <flag> [more flags...] # @INTERNAL @@ -788,6 +799,12 @@ test-flags-FC() { _test-flags-PROG FC "$@"; } # Returns shell true if <flags> are supported by the C compiler and default linker, else returns shell false. test-flags-CCLD() { _test-flags-PROG CCLD "$@"; } +# @FUNCTION: test-flags-HIPCXX +# @USAGE: <flags> +# @DESCRIPTION: +# Returns shell true if <flags> are supported by the HIP compiler and default linker, else returns shell false. +test-flags-HIPCXX() { _test-flags-PROG HIPCXX "$@"; } + # @FUNCTION: test-flags # @USAGE: <flags> # @DESCRIPTION: @@ -810,7 +827,7 @@ test_version_info() { # @FUNCTION: strip-unsupported-flags # @DESCRIPTION: -# Strip {C,CXX,F,FC}FLAGS of any flags not supported by the active toolchain. +# Strip {C,CXX,F,FC,HIP}FLAGS of any flags not supported by the active toolchain. strip-unsupported-flags() { [[ $# -ne 0 ]] && die "strip-unsupported-flags takes no arguments" export CFLAGS=$(test-flags-CC ${CFLAGS}) @@ -818,6 +835,7 @@ strip-unsupported-flags() { export FFLAGS=$(test-flags-F77 ${FFLAGS}) export FCFLAGS=$(test-flags-FC ${FCFLAGS}) export LDFLAGS=$(test-flags-CCLD ${LDFLAGS}) + export HIPFLAGS=$(test-flags-HIPCXX ${HIPFLAGS}) } # @FUNCTION: get-flag @@ -1008,6 +1026,12 @@ test-compile() { args+=(${FCFLAGS[@]} ${LDFLAGS[@]} -xf95) libs+=(${LIBS[@]}) ;; + hip) + compiler="$(tc-getHIPCXX)" + filename_in="${T}/test.hip" + filename_out="${T}/test.o" + args+=(${CFLAGS[@]} -xhip -c) + ;; *) die "Unknown compiled language ${lang}" ;;
