Fwd: [PATCH] gcc: Fix sysroot relative paths for MinGW

Jeff Law law@redhat.com
Fri Sep 30 16:57:00 GMT 2016


On 09/29/2016 09:21 PM, Tadek Kijkowski wrote:
> Can I have plain-text mode, please, gmail?
:-)  Only because you're asking nicely...



>>>  # Directory in which the compiler finds libraries etc.
>>>  libsubdir =
>>> $(libdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix)
>>>  # Directory in which the compiler finds executables
>>> @@ -2751,14 +2763,14 @@
>>>  PREPROCESSOR_DEFINES = \
>>>    -DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \
>>>    -DFIXED_INCLUDE_DIR=\"$(libsubdir)/include-fixed\" \
>>> -  -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \
>>> +  -DGPLUSPLUS_INCLUDE_DIR=\"$(call
>>> sysroot_relative_path,$(gcc_gxx_include_dir),$(filter-out
>>> 0,$(gcc_gxx_include_dir_add_sysroot)))\" \
>>
>> So why the $(filter-out 0, ....)?
>>
>> I'd really like to avoid being too clever here and write this code in the
>> most straightforward way possible.
>>
>
> Hmm... that's partially leftover from the abandoned idea to pass
> @TARGET_SYSTEM_ROOT@ as second parameter of sysroot_relative_path.
> Sysroot is prepended to GPLUSPLUS_INCLUDE_DIR in runtime only if
> $(gcc_gxx_include_dir) is 1.
> Since sysroot_relative_path checks for non-empty string the easiest
> way was to use filter-out. But I agree this way it's confusing.
>
> How about if I change the sysroot_relative_path function to explicitly
> check for 1? But still - since $(if) checks for empty string, it will
> have to use filter or filter-out.
I think with the improved comments you showed in V2, that'd be fine.


>
> N.B. I'd prefer to use backticks over "$()", but it could clash if
> some include paths already contain backtick expressions.
So the concern is we might use backticks to get an evaluation of 
something at build time.  Conceptually one could even create a pathname 
with literal backticks, but I suspect somewhere, somehow that's going to 
fail independent of your change.

Jeff



More information about the Gcc-patches mailing list