qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] target/hexagon: Fix macOS build
@ 2025-03-12 19:45 Anton Johansson via
  2025-03-12 19:45 ` [PATCH 1/2] target/hexagon: Replace `prepare` script with meson target Anton Johansson via
  2025-03-12 19:45 ` [PATCH 2/2] target/hexagon: Drop `ident` postprocess step Anton Johansson via
  0 siblings, 2 replies; 7+ messages in thread
From: Anton Johansson via @ 2025-03-12 19:45 UTC (permalink / raw)
  To: qemu-devel; +Cc: ale, ltaylorsimpson, brian.cain, philmd

A default macOS build with xcode cli tools installed lacks the `indent`
program needed by the idef-parser postprocess step, remove this step. 

Additionally `cpp` used by the idef-parser preprocess step expands into
`clang ... -traditional-cpp` and doesn't support macro concatenation
among other things, replace it with a meson custom_target running
`${compiler} -E`.

fixes: https://lore.kernel.org/qemu-devel/d95ebf5d-c1f6-42c5-8aeb-65764fa87125@linaro.org/

Note: default bison on macOS is still too old (v2.3 vs v3.0) and a newer
version needs to be installed via homebrew. I'll take a look at
supporting v2.3.

Anton Johansson (2):
  target/hexagon: Replace `prepare` script with meson target
  target/hexagon: Drop `ident` postprocess step

 target/hexagon/idef-parser/prepare | 24 ------------------------
 target/hexagon/meson.build         | 24 ++++--------------------
 2 files changed, 4 insertions(+), 44 deletions(-)
 delete mode 100755 target/hexagon/idef-parser/prepare

-- 
2.47.1



^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/2] target/hexagon: Replace `prepare` script with meson target
  2025-03-12 19:45 [PATCH 0/2] target/hexagon: Fix macOS build Anton Johansson via
@ 2025-03-12 19:45 ` Anton Johansson via
  2025-03-12 19:45 ` [PATCH 2/2] target/hexagon: Drop `ident` postprocess step Anton Johansson via
  1 sibling, 0 replies; 7+ messages in thread
From: Anton Johansson via @ 2025-03-12 19:45 UTC (permalink / raw)
  To: qemu-devel; +Cc: ale, ltaylorsimpson, brian.cain, philmd

The purpose of the prepare script is to invoke `cpp` to preprocess input
to idef-parser by expanding a few select macros.  On mac osx `cpp`
expands into `clang ... -traditional-cpp` which breaks macro
concatenation.  Replace `cpp` with `${compiler} -E`
and replace the script with a meson custom_target.

Signed-off-by: Anton Johansson <anjo@rev.ng>
---
 target/hexagon/idef-parser/prepare | 24 ------------------------
 target/hexagon/meson.build         |  3 ++-
 2 files changed, 2 insertions(+), 25 deletions(-)
 delete mode 100755 target/hexagon/idef-parser/prepare

diff --git a/target/hexagon/idef-parser/prepare b/target/hexagon/idef-parser/prepare
deleted file mode 100755
index cb3622d4f8..0000000000
--- a/target/hexagon/idef-parser/prepare
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/env bash
-
-#
-#  Copyright(c) 2019-2021 rev.ng Labs Srl. All Rights Reserved.
-#
-#  This program is free software; you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation; either version 2 of the License, or
-#  (at your option) any later version.
-#
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#
-#  You should have received a copy of the GNU General Public License
-#  along with this program; if not, see <http://www.gnu.org/licenses/>.
-#
-
-set -e
-set -o pipefail
-
-# Run the preprocessor and drop comments
-cpp "$@"
diff --git a/target/hexagon/meson.build b/target/hexagon/meson.build
index bb4ebaae81..abcf00ca1f 100644
--- a/target/hexagon/meson.build
+++ b/target/hexagon/meson.build
@@ -280,12 +280,13 @@ if idef_parser_enabled and 'hexagon-linux-user' in target_dirs
         command: [python, files('gen_idef_parser_funcs.py'), semantics_generated, '@OUTPUT@'],
     )
 
+    compiler = meson.get_compiler('c').get_id()
     preprocessed_idef_parser_input_generated = custom_target(
         'idef_parser_input.preprocessed.h.inc',
         output: 'idef_parser_input.preprocessed.h.inc',
         input: idef_parser_input_generated,
         depend_files: [idef_parser_dir / 'macros.h.inc'],
-        command: [idef_parser_dir / 'prepare', '@INPUT@', '-I' + idef_parser_dir, '-o', '@OUTPUT@'],
+        command: [compiler, '-x', 'c', '-E', '-I', idef_parser_dir, '-o', '@OUTPUT@', '@INPUT@'],
     )
 
     flex = generator(
-- 
2.47.1



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/2] target/hexagon: Drop `ident` postprocess step
  2025-03-12 19:45 [PATCH 0/2] target/hexagon: Fix macOS build Anton Johansson via
  2025-03-12 19:45 ` [PATCH 1/2] target/hexagon: Replace `prepare` script with meson target Anton Johansson via
@ 2025-03-12 19:45 ` Anton Johansson via
  2025-03-25  1:53   ` ltaylorsimpson
  1 sibling, 1 reply; 7+ messages in thread
From: Anton Johansson via @ 2025-03-12 19:45 UTC (permalink / raw)
  To: qemu-devel; +Cc: ale, ltaylorsimpson, brian.cain, philmd

The indent command is not available on a default mac osx setup with
xcode cli tools installed.  While it does make idef-parser generated
code nicer to debug, it's not crucial and can be dropped.

Signed-off-by: Anton Johansson <anjo@rev.ng>
---
 target/hexagon/meson.build | 21 ++-------------------
 1 file changed, 2 insertions(+), 19 deletions(-)

diff --git a/target/hexagon/meson.build b/target/hexagon/meson.build
index abcf00ca1f..246dc7b241 100644
--- a/target/hexagon/meson.build
+++ b/target/hexagon/meson.build
@@ -323,30 +323,13 @@ if idef_parser_enabled and 'hexagon-linux-user' in target_dirs
         command: [idef_parser, '@INPUT@', '@OUTPUT0@', '@OUTPUT1@', '@OUTPUT2@']
     )
 
-    indent = find_program('indent', required: false)
-    if indent.found()
-        idef_generated_tcg_c = custom_target(
-            'indent',
-            input: idef_generated_tcg[0],
-            output: 'idef-generated-emitter.indented.c',
-            command: [indent, '-linux', '@INPUT@', '-o', '@OUTPUT@']
-        )
-    else
-        idef_generated_tcg_c = custom_target(
-            'copy',
-            input: idef_generated_tcg[0],
-            output: 'idef-generated-emitter.indented.c',
-            command: ['cp', '@INPUT@', '@OUTPUT@']
-        )
-    endif
-
     idef_generated_list = idef_generated_tcg[2].full_path()
 
-    hexagon_ss.add(idef_generated_tcg_c)
+    hexagon_ss.add(idef_generated_tcg[0])
 
     # Setup input and dependencies for the next step, this depends on whether or
     # not idef-parser is enabled
-    helper_dep = [semantics_generated, idef_generated_tcg_c, idef_generated_tcg]
+    helper_dep = [semantics_generated, idef_generated_tcg]
     helper_in = [semantics_generated, gen_tcg_h, gen_tcg_hvx_h, '--idef-parser', idef_generated_list]
 else
     # Setup input and dependencies for the next step, this depends on whether or
-- 
2.47.1



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* RE: [PATCH 2/2] target/hexagon: Drop `ident` postprocess step
  2025-03-12 19:45 ` [PATCH 2/2] target/hexagon: Drop `ident` postprocess step Anton Johansson via
@ 2025-03-25  1:53   ` ltaylorsimpson
  2025-03-25  3:12     ` Brian Cain
  0 siblings, 1 reply; 7+ messages in thread
From: ltaylorsimpson @ 2025-03-25  1:53 UTC (permalink / raw)
  To: 'Anton Johansson', qemu-devel; +Cc: ale, brian.cain, philmd



> -----Original Message-----
> From: Anton Johansson <anjo@rev.ng>
> Sent: Wednesday, March 12, 2025 2:46 PM
> To: qemu-devel@nongnu.org
> Cc: ale@rev.ng; ltaylorsimpson@gmail.com; brian.cain@oss.qualcomm.com;
> philmd@linaro.org
> Subject: [PATCH 2/2] target/hexagon: Drop `ident` postprocess step
> 
> The indent command is not available on a default mac osx setup with xcode
> cli tools installed.  While it does make idef-parser generated code nicer
to
> debug, it's not crucial and can be dropped.
> 
> Signed-off-by: Anton Johansson <anjo@rev.ng>
> ---
>  target/hexagon/meson.build | 21 ++-------------------
>  1 file changed, 2 insertions(+), 19 deletions(-)
> 
> diff --git a/target/hexagon/meson.build b/target/hexagon/meson.build
> index abcf00ca1f..246dc7b241 100644
> --- a/target/hexagon/meson.build
> +++ b/target/hexagon/meson.build
> @@ -323,30 +323,13 @@ if idef_parser_enabled and 'hexagon-linux-user' in
> target_dirs
>          command: [idef_parser, '@INPUT@', '@OUTPUT0@', '@OUTPUT1@',
> '@OUTPUT2@']
>      )
> 
> -    indent = find_program('indent', required: false)
> -    if indent.found()
> -        idef_generated_tcg_c = custom_target(
> -            'indent',
> -            input: idef_generated_tcg[0],
> -            output: 'idef-generated-emitter.indented.c',
> -            command: [indent, '-linux', '@INPUT@', '-o', '@OUTPUT@']
> -        )
> -    else
> -        idef_generated_tcg_c = custom_target(
> -            'copy',
> -            input: idef_generated_tcg[0],
> -            output: 'idef-generated-emitter.indented.c',
> -            command: ['cp', '@INPUT@', '@OUTPUT@']
> -        )
> -    endif
> -

I prefer to have the indented version present.

Is the above check/fallback not sufficient on MacOS?  It works on a Linux
system where indent is not present.

Thanks,
Taylor




^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/2] target/hexagon: Drop `ident` postprocess step
  2025-03-25  1:53   ` ltaylorsimpson
@ 2025-03-25  3:12     ` Brian Cain
  2025-03-26 12:42       ` 'Anton Johansson' via
  0 siblings, 1 reply; 7+ messages in thread
From: Brian Cain @ 2025-03-25  3:12 UTC (permalink / raw)
  To: ltaylorsimpson, 'Anton Johansson', qemu-devel; +Cc: ale, philmd


On 3/24/2025 8:53 PM, ltaylorsimpson@gmail.com wrote:
>
>> -----Original Message-----
>> From: Anton Johansson <anjo@rev.ng>
>> Sent: Wednesday, March 12, 2025 2:46 PM
>> To: qemu-devel@nongnu.org
>> Cc: ale@rev.ng; ltaylorsimpson@gmail.com; brian.cain@oss.qualcomm.com;
>> philmd@linaro.org
>> Subject: [PATCH 2/2] target/hexagon: Drop `ident` postprocess step
>>
>> The indent command is not available on a default mac osx setup with xcode
>> cli tools installed.  While it does make idef-parser generated code nicer
> to
>> debug, it's not crucial and can be dropped.
>>
>> Signed-off-by: Anton Johansson <anjo@rev.ng>
>> ---
>>   target/hexagon/meson.build | 21 ++-------------------
>>   1 file changed, 2 insertions(+), 19 deletions(-)
>>
>> diff --git a/target/hexagon/meson.build b/target/hexagon/meson.build
>> index abcf00ca1f..246dc7b241 100644
>> --- a/target/hexagon/meson.build
>> +++ b/target/hexagon/meson.build
>> @@ -323,30 +323,13 @@ if idef_parser_enabled and 'hexagon-linux-user' in
>> target_dirs
>>           command: [idef_parser, '@INPUT@', '@OUTPUT0@', '@OUTPUT1@',
>> '@OUTPUT2@']
>>       )
>>
>> -    indent = find_program('indent', required: false)
>> -    if indent.found()
>> -        idef_generated_tcg_c = custom_target(
>> -            'indent',
>> -            input: idef_generated_tcg[0],
>> -            output: 'idef-generated-emitter.indented.c',
>> -            command: [indent, '-linux', '@INPUT@', '-o', '@OUTPUT@']
>> -        )
>> -    else
>> -        idef_generated_tcg_c = custom_target(
>> -            'copy',
>> -            input: idef_generated_tcg[0],
>> -            output: 'idef-generated-emitter.indented.c',
>> -            command: ['cp', '@INPUT@', '@OUTPUT@']
>> -        )
>> -    endif
>> -
> I prefer to have the indented version present.
>
> Is the above check/fallback not sufficient on MacOS?  It works on a Linux
> system where indent is not present.


Aside: could using "clang-format" be another approach?  I suppose it's 
just exchanging one dependency for another, but maybe xcode comes w/this 
tool?  Then again, maybe it would be an inconvenient dependency on linux 
systems?



> Thanks,
> Taylor
>
>


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/2] target/hexagon: Drop `ident` postprocess step
  2025-03-25  3:12     ` Brian Cain
@ 2025-03-26 12:42       ` 'Anton Johansson' via
  2025-04-02  3:25         ` Brian Cain
  0 siblings, 1 reply; 7+ messages in thread
From: 'Anton Johansson' via @ 2025-03-26 12:42 UTC (permalink / raw)
  To: Brian Cain; +Cc: ltaylorsimpson, qemu-devel, ale, philmd

On 25/03/25, Brian Cain wrote:
> 
> On 3/24/2025 8:53 PM, ltaylorsimpson@gmail.com wrote:
> > 
> > > -----Original Message-----
> > > From: Anton Johansson <anjo@rev.ng>
> > > Sent: Wednesday, March 12, 2025 2:46 PM
> > > To: qemu-devel@nongnu.org
> > > Cc: ale@rev.ng; ltaylorsimpson@gmail.com; brian.cain@oss.qualcomm.com;
> > > philmd@linaro.org
> > > Subject: [PATCH 2/2] target/hexagon: Drop `ident` postprocess step
> > > 
> > > The indent command is not available on a default mac osx setup with xcode
> > > cli tools installed.  While it does make idef-parser generated code nicer
> > to
> > > debug, it's not crucial and can be dropped.
> > > 
> > > Signed-off-by: Anton Johansson <anjo@rev.ng>
> > > ---
> > >   target/hexagon/meson.build | 21 ++-------------------
> > >   1 file changed, 2 insertions(+), 19 deletions(-)
> > > 
> > > diff --git a/target/hexagon/meson.build b/target/hexagon/meson.build
> > > index abcf00ca1f..246dc7b241 100644
> > > --- a/target/hexagon/meson.build
> > > +++ b/target/hexagon/meson.build
> > > @@ -323,30 +323,13 @@ if idef_parser_enabled and 'hexagon-linux-user' in
> > > target_dirs
> > >           command: [idef_parser, '@INPUT@', '@OUTPUT0@', '@OUTPUT1@',
> > > '@OUTPUT2@']
> > >       )
> > > 
> > > -    indent = find_program('indent', required: false)
> > > -    if indent.found()
> > > -        idef_generated_tcg_c = custom_target(
> > > -            'indent',
> > > -            input: idef_generated_tcg[0],
> > > -            output: 'idef-generated-emitter.indented.c',
> > > -            command: [indent, '-linux', '@INPUT@', '-o', '@OUTPUT@']
> > > -        )
> > > -    else
> > > -        idef_generated_tcg_c = custom_target(
> > > -            'copy',
> > > -            input: idef_generated_tcg[0],
> > > -            output: 'idef-generated-emitter.indented.c',
> > > -            command: ['cp', '@INPUT@', '@OUTPUT@']
> > > -        )
> > > -    endif
> > > -
> > I prefer to have the indented version present.
> > 
> > Is the above check/fallback not sufficient on MacOS?  It works on a Linux
> > system where indent is not present.
> 
> 
> Aside: could using "clang-format" be another approach?  I suppose it's just
> exchanging one dependency for another, but maybe xcode comes w/this tool? 
> Then again, maybe it would be an inconvenient dependency on linux systems?
> 
> 
> 
> > Thanks,
> > Taylor

Sorry, I misspoke in the commit message. The problem does not occur for a
default xcode commandline tools install, but when the user has installed
indent via homebrew or some other source. I don't have access to a mac
at this moment so I cannot verify, but I think `-linux` is not
supported.

If we want to handle this situation we can either expand `-linux` into
it's constituent flags or add a `host_os == 'linux'` condition.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/2] target/hexagon: Drop `ident` postprocess step
  2025-03-26 12:42       ` 'Anton Johansson' via
@ 2025-04-02  3:25         ` Brian Cain
  0 siblings, 0 replies; 7+ messages in thread
From: Brian Cain @ 2025-04-02  3:25 UTC (permalink / raw)
  To: 'Anton Johansson'; +Cc: ltaylorsimpson, qemu-devel, ale, philmd


On 3/26/2025 7:42 AM, 'Anton Johansson' wrote:
> On 25/03/25, Brian Cain wrote:
>> On 3/24/2025 8:53 PM, ltaylorsimpson@gmail.com wrote:
>>>> -----Original Message-----
>>>> From: Anton Johansson <anjo@rev.ng>
>>>> Sent: Wednesday, March 12, 2025 2:46 PM
>>>> To: qemu-devel@nongnu.org
>>>> Cc: ale@rev.ng; ltaylorsimpson@gmail.com; brian.cain@oss.qualcomm.com;
>>>> philmd@linaro.org
>>>> Subject: [PATCH 2/2] target/hexagon: Drop `ident` postprocess step
>>>>
>>>> The indent command is not available on a default mac osx setup with xcode
>>>> cli tools installed.  While it does make idef-parser generated code nicer
>>> to
>>>> debug, it's not crucial and can be dropped.
>>>>
>>>> Signed-off-by: Anton Johansson <anjo@rev.ng>
>>>> ---
>>>>    target/hexagon/meson.build | 21 ++-------------------
>>>>    1 file changed, 2 insertions(+), 19 deletions(-)
>>>>
>>>> diff --git a/target/hexagon/meson.build b/target/hexagon/meson.build
>>>> index abcf00ca1f..246dc7b241 100644
>>>> --- a/target/hexagon/meson.build
>>>> +++ b/target/hexagon/meson.build
>>>> @@ -323,30 +323,13 @@ if idef_parser_enabled and 'hexagon-linux-user' in
>>>> target_dirs
>>>>            command: [idef_parser, '@INPUT@', '@OUTPUT0@', '@OUTPUT1@',
>>>> '@OUTPUT2@']
>>>>        )
>>>>
>>>> -    indent = find_program('indent', required: false)
>>>> -    if indent.found()
>>>> -        idef_generated_tcg_c = custom_target(
>>>> -            'indent',
>>>> -            input: idef_generated_tcg[0],
>>>> -            output: 'idef-generated-emitter.indented.c',
>>>> -            command: [indent, '-linux', '@INPUT@', '-o', '@OUTPUT@']
>>>> -        )
>>>> -    else
>>>> -        idef_generated_tcg_c = custom_target(
>>>> -            'copy',
>>>> -            input: idef_generated_tcg[0],
>>>> -            output: 'idef-generated-emitter.indented.c',
>>>> -            command: ['cp', '@INPUT@', '@OUTPUT@']
>>>> -        )
>>>> -    endif
>>>> -
>>> I prefer to have the indented version present.
>>>
>>> Is the above check/fallback not sufficient on MacOS?  It works on a Linux
>>> system where indent is not present.
>>
>> Aside: could using "clang-format" be another approach?  I suppose it's just
>> exchanging one dependency for another, but maybe xcode comes w/this tool?
>> Then again, maybe it would be an inconvenient dependency on linux systems?
>>
>>
>>
>>> Thanks,
>>> Taylor
> Sorry, I misspoke in the commit message. The problem does not occur for a
> default xcode commandline tools install, but when the user has installed
> indent via homebrew or some other source. I don't have access to a mac
> at this moment so I cannot verify, but I think `-linux` is not
> supported.
>
> If we want to handle this situation we can either expand `-linux` into
> it's constituent flags or add a `host_os == 'linux'` condition.


I wouldn't bind this behavior to the hexagon-linux-user target, because 
it happens to be hosted on "!macos" if that's what you mean.  But 
"host_os == linux" seems reasonable.


OTOH if it's not easy to detect this condition, I think it's fine to 
remove it entirely.  Seems like -- if we as developers want to read the 
output we can indent it on demand (or use something like inotifywait + 
indent to automagically indent it after writing).


Nit: subject typo - s/ident/indent/




^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2025-04-02  3:26 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-12 19:45 [PATCH 0/2] target/hexagon: Fix macOS build Anton Johansson via
2025-03-12 19:45 ` [PATCH 1/2] target/hexagon: Replace `prepare` script with meson target Anton Johansson via
2025-03-12 19:45 ` [PATCH 2/2] target/hexagon: Drop `ident` postprocess step Anton Johansson via
2025-03-25  1:53   ` ltaylorsimpson
2025-03-25  3:12     ` Brian Cain
2025-03-26 12:42       ` 'Anton Johansson' via
2025-04-02  3:25         ` Brian Cain

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).