diff mbox series

[v4,15/17] kconfig: Add support for 'as-option'

Message ID 1579774839-19562-16-git-send-email-amit.kachhap@arm.com (mailing list archive)
State New, archived
Headers show
Series arm64: return address signing | expand

Commit Message

Amit Daniel Kachhap Jan. 23, 2020, 10:20 a.m. UTC
From: Vincenzo Frascino <vincenzo.frascino@arm.com>

Currently kconfig does not have a feature that allows to detect if the
used assembler supports a specific compilation option.

Introduce 'as-option' to serve this purpose in the context of Kconfig:

	config X
		def_bool $(as-option,...)

Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: linux-kbuild@vger.kernel.org
Acked-by: Masahiro Yamada <masahiroy@kernel.org>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Signed-off-by: Amit Daniel Kachhap <amit.kachhap@arm.com>
---
Changes since v3:
*) Changed the assembler option to -c instead of earlier -E.
*) Added Masahiro Acked-by.

 scripts/Kconfig.include | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Ard Biesheuvel Jan. 23, 2020, 10:30 a.m. UTC | #1
On Thu, 23 Jan 2020 at 11:22, Amit Daniel Kachhap <amit.kachhap@arm.com> wrote:
>
> From: Vincenzo Frascino <vincenzo.frascino@arm.com>
>
> Currently kconfig does not have a feature that allows to detect if the
> used assembler supports a specific compilation option.
>
> Introduce 'as-option' to serve this purpose in the context of Kconfig:
>
>         config X
>                 def_bool $(as-option,...)
>
> Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
> Cc: linux-kbuild@vger.kernel.org
> Acked-by: Masahiro Yamada <masahiroy@kernel.org>
> Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
> Signed-off-by: Amit Daniel Kachhap <amit.kachhap@arm.com>
> ---
> Changes since v3:
> *) Changed the assembler option to -c instead of earlier -E.
> *) Added Masahiro Acked-by.
>
>  scripts/Kconfig.include | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/scripts/Kconfig.include b/scripts/Kconfig.include
> index d4adfbe..c4b4424 100644
> --- a/scripts/Kconfig.include
> +++ b/scripts/Kconfig.include
> @@ -31,6 +31,10 @@ cc-option = $(success,$(CC) -Werror $(CLANG_FLAGS) $(1) -E -x c /dev/null -o /de
>  # Return y if the linker supports <flag>, n otherwise
>  ld-option = $(success,$(LD) -v $(1))
>
> +# $(as-option,<flag>)
> +# Return y if the assembler supports <flag>, n otherwise
> +as-option = $(success, $(CC) $(CLANG_FLAGS) $(1) -c -x assembler /dev/null -o /dev/zero)

Did you mean '-o /dev/null' here?

> +
>  # check if $(CC) and $(LD) exist
>  $(error-if,$(failure,command -v $(CC)),compiler '$(CC)' not found)
>  $(error-if,$(failure,command -v $(LD)),linker '$(LD)' not found)
> --
> 2.7.4
>
Vincenzo Frascino Jan. 23, 2020, 10:52 a.m. UTC | #2
On 23/01/2020 10:30, Ard Biesheuvel wrote:
> On Thu, 23 Jan 2020 at 11:22, Amit Daniel Kachhap <amit.kachhap@arm.com> wrote:
>>
>> From: Vincenzo Frascino <vincenzo.frascino@arm.com>
>>
>> Currently kconfig does not have a feature that allows to detect if the
>> used assembler supports a specific compilation option.
>>
>> Introduce 'as-option' to serve this purpose in the context of Kconfig:
>>
>>         config X
>>                 def_bool $(as-option,...)
>>
>> Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
>> Cc: linux-kbuild@vger.kernel.org
>> Acked-by: Masahiro Yamada <masahiroy@kernel.org>
>> Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
>> Signed-off-by: Amit Daniel Kachhap <amit.kachhap@arm.com>
>> ---
>> Changes since v3:
>> *) Changed the assembler option to -c instead of earlier -E.
>> *) Added Masahiro Acked-by.
>>
>>  scripts/Kconfig.include | 4 ++++
>>  1 file changed, 4 insertions(+)
>>
>> diff --git a/scripts/Kconfig.include b/scripts/Kconfig.include
>> index d4adfbe..c4b4424 100644
>> --- a/scripts/Kconfig.include
>> +++ b/scripts/Kconfig.include
>> @@ -31,6 +31,10 @@ cc-option = $(success,$(CC) -Werror $(CLANG_FLAGS) $(1) -E -x c /dev/null -o /de
>>  # Return y if the linker supports <flag>, n otherwise
>>  ld-option = $(success,$(LD) -v $(1))
>>
>> +# $(as-option,<flag>)
>> +# Return y if the assembler supports <flag>, n otherwise
>> +as-option = $(success, $(CC) $(CLANG_FLAGS) $(1) -c -x assembler /dev/null -o /dev/zero)
> 
> Did you mean '-o /dev/null' here?
>

No /dev/zero because otherwise I get a warning that says that I am trying to
compile an object into the same file.

If I invert /dev/zero and /dev/null this trashes the compilation. It took me a
while to get the right combination.

>> +
>>  # check if $(CC) and $(LD) exist
>>  $(error-if,$(failure,command -v $(CC)),compiler '$(CC)' not found)
>>  $(error-if,$(failure,command -v $(LD)),linker '$(LD)' not found)
>> --
>> 2.7.4
>>
Masahiro Yamada Jan. 26, 2020, 2:45 p.m. UTC | #3
On Thu, Jan 23, 2020 at 7:52 PM Vincenzo Frascino
<vincenzo.frascino@arm.com> wrote:
>
> On 23/01/2020 10:30, Ard Biesheuvel wrote:
> > On Thu, 23 Jan 2020 at 11:22, Amit Daniel Kachhap <amit.kachhap@arm.com> wrote:
> >>
> >> From: Vincenzo Frascino <vincenzo.frascino@arm.com>
> >>
> >> Currently kconfig does not have a feature that allows to detect if the
> >> used assembler supports a specific compilation option.
> >>
> >> Introduce 'as-option' to serve this purpose in the context of Kconfig:
> >>
> >>         config X
> >>                 def_bool $(as-option,...)
> >>
> >> Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
> >> Cc: linux-kbuild@vger.kernel.org
> >> Acked-by: Masahiro Yamada <masahiroy@kernel.org>
> >> Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
> >> Signed-off-by: Amit Daniel Kachhap <amit.kachhap@arm.com>
> >> ---
> >> Changes since v3:
> >> *) Changed the assembler option to -c instead of earlier -E.
> >> *) Added Masahiro Acked-by.
> >>
> >>  scripts/Kconfig.include | 4 ++++
> >>  1 file changed, 4 insertions(+)
> >>
> >> diff --git a/scripts/Kconfig.include b/scripts/Kconfig.include
> >> index d4adfbe..c4b4424 100644
> >> --- a/scripts/Kconfig.include
> >> +++ b/scripts/Kconfig.include
> >> @@ -31,6 +31,10 @@ cc-option = $(success,$(CC) -Werror $(CLANG_FLAGS) $(1) -E -x c /dev/null -o /de
> >>  # Return y if the linker supports <flag>, n otherwise
> >>  ld-option = $(success,$(LD) -v $(1))
> >>
> >> +# $(as-option,<flag>)
> >> +# Return y if the assembler supports <flag>, n otherwise
> >> +as-option = $(success, $(CC) $(CLANG_FLAGS) $(1) -c -x assembler /dev/null -o /dev/zero)
> >
> > Did you mean '-o /dev/null' here?
> >
>
> No /dev/zero because otherwise I get a warning that says that I am trying to
> compile an object into the same file.
>
> If I invert /dev/zero and /dev/null this trashes the compilation. It took me a
> while to get the right combination.


What compiler produces such a warning?
GCC? Clang?




--
Best Regards
Masahiro Yamada
Vincenzo Frascino Jan. 27, 2020, 9:33 a.m. UTC | #4
Hi Masahiro,

On 26/01/2020 14:45, Masahiro Yamada wrote:
> On Thu, Jan 23, 2020 at 7:52 PM Vincenzo Frascino
> <vincenzo.frascino@arm.com> wrote:
>>

[...]

>>
>> No /dev/zero because otherwise I get a warning that says that I am trying to
>> compile an object into the same file.
>>
>> If I invert /dev/zero and /dev/null this trashes the compilation. It took me a
>> while to get the right combination.
> 
> 
> What compiler produces such a warning?
> GCC? Clang?
> 

It is GCC:

$ aarch64-none-linux-gnu-gcc -c -x assembler /dev/null -o /dev/null

Assembler messages:
Fatal error: The input '/dev/null' and output '/dev/null' files are the same

> 
> 
> 
> --
> Best Regards
> Masahiro Yamada
>
diff mbox series

Patch

diff --git a/scripts/Kconfig.include b/scripts/Kconfig.include
index d4adfbe..c4b4424 100644
--- a/scripts/Kconfig.include
+++ b/scripts/Kconfig.include
@@ -31,6 +31,10 @@  cc-option = $(success,$(CC) -Werror $(CLANG_FLAGS) $(1) -E -x c /dev/null -o /de
 # Return y if the linker supports <flag>, n otherwise
 ld-option = $(success,$(LD) -v $(1))
 
+# $(as-option,<flag>)
+# Return y if the assembler supports <flag>, n otherwise
+as-option = $(success, $(CC) $(CLANG_FLAGS) $(1) -c -x assembler /dev/null -o /dev/zero)
+
 # check if $(CC) and $(LD) exist
 $(error-if,$(failure,command -v $(CC)),compiler '$(CC)' not found)
 $(error-if,$(failure,command -v $(LD)),linker '$(LD)' not found)