We fail to link preloader when CFLAGS="-mmacosx-version-min=10.7" (because configure check also includes CFLAGS).
Signed-off-by: Piotr Caban piotr@codeweavers.com --- configure.ac | 5 +++++ 1 file changed, 5 insertions(+)
On Nov 7, 2019, at 9:22 AM, Piotr Caban piotr@codeweavers.com wrote:
We fail to link preloader when CFLAGS="-mmacosx-version-min=10.7" (because configure check also includes CFLAGS).
To make sure I understand: the problem is that, when CFLAGS already contains "-mmacosx-version-min=10.7", the WINE_TRY_CFLAGS() just above doesn't detect that the preloader needs that flag for linking and it's not added to WINEPRELOADER_LDFLAGS, right?
That suggests that WINE_TRY_CFLAGS() isn't the right macro to use for those checks. We'd want a hypothetical WINE_TRY_LDFLAGS(). Or, perhaps, it's enough to temporarily clear CFLAGS around those checks.
-Ken
Hi Ken,
On 11/7/19 5:12 PM, Ken Thomases wrote:
On Nov 7, 2019, at 9:22 AM, Piotr Caban piotr@codeweavers.com wrote:
We fail to link preloader when CFLAGS="-mmacosx-version-min=10.7" (because configure check also includes CFLAGS).
To make sure I understand: the problem is that, when CFLAGS already contains "-mmacosx-version-min=10.7", the WINE_TRY_CFLAGS() just above doesn't detect that the preloader needs that flag for linking and it's not added to WINEPRELOADER_LDFLAGS, right?
That suggests that WINE_TRY_CFLAGS() isn't the right macro to use for those checks. We'd want a hypothetical WINE_TRY_LDFLAGS(). Or, perhaps, it's enough to temporarily clear CFLAGS around those checks.
Yes, that's the problem.
I don't think we can clear CFLAGS completely. It might contain options that are needed during test compilation. We can remove some of the options from CFLAGS but I don't think it's better.
The WINE_TRY_LDFLAGS like macro will need to divide the check phase into compilation phase (that uses CFLAGS) and linking phase. This will probably leave a temporary file if configure is killed between this steps. I don't know if it's something that can be done in clean way.
Thanks, Piotr
On Nov 7, 2019, at 10:29 AM, Piotr Caban piotr@codeweavers.com wrote:
Hi Ken,
On 11/7/19 5:12 PM, Ken Thomases wrote:
On Nov 7, 2019, at 9:22 AM, Piotr Caban piotr@codeweavers.com wrote:
We fail to link preloader when CFLAGS="-mmacosx-version-min=10.7" (because configure check also includes CFLAGS).
To make sure I understand: the problem is that, when CFLAGS already contains "-mmacosx-version-min=10.7", the WINE_TRY_CFLAGS() just above doesn't detect that the preloader needs that flag for linking and it's not added to WINEPRELOADER_LDFLAGS, right? That suggests that WINE_TRY_CFLAGS() isn't the right macro to use for those checks. We'd want a hypothetical WINE_TRY_LDFLAGS(). Or, perhaps, it's enough to temporarily clear CFLAGS around those checks.
Yes, that's the problem.
I don't think we can clear CFLAGS completely. It might contain options that are needed during test compilation. We can remove some of the options from CFLAGS but I don't think it's better.
The WINE_TRY_LDFLAGS like macro will need to divide the check phase into compilation phase (that uses CFLAGS) and linking phase. This will probably leave a temporary file if configure is killed between this steps. I don't know if it's something that can be done in clean way.
Hmm. We already use AC_LINK_IFELSE() elsewhere. Can we use that here?
-Ken
On 11/7/19 5:45 PM, Ken Thomases wrote:
On Nov 7, 2019, at 10:29 AM, Piotr Caban piotr@codeweavers.com wrote:
Hi Ken,
On 11/7/19 5:12 PM, Ken Thomases wrote:
On Nov 7, 2019, at 9:22 AM, Piotr Caban piotr@codeweavers.com wrote:
We fail to link preloader when CFLAGS="-mmacosx-version-min=10.7" (because configure check also includes CFLAGS).
To make sure I understand: the problem is that, when CFLAGS already contains "-mmacosx-version-min=10.7", the WINE_TRY_CFLAGS() just above doesn't detect that the preloader needs that flag for linking and it's not added to WINEPRELOADER_LDFLAGS, right? That suggests that WINE_TRY_CFLAGS() isn't the right macro to use for those checks. We'd want a hypothetical WINE_TRY_LDFLAGS(). Or, perhaps, it's enough to temporarily clear CFLAGS around those checks.
Yes, that's the problem.
I don't think we can clear CFLAGS completely. It might contain options that are needed during test compilation. We can remove some of the options from CFLAGS but I don't think it's better.
The WINE_TRY_LDFLAGS like macro will need to divide the check phase into compilation phase (that uses CFLAGS) and linking phase. This will probably leave a temporary file if configure is killed between this steps. I don't know if it's something that can be done in clean way.
Hmm. We already use AC_LINK_IFELSE() elsewhere. Can we use that here?
The WINE_TRY_LDFLAGS uses AC_LINK_IFELSE as well. AC_LINK_IFELSE does compilation and linking steps. It will resolve to something like: gcc -o out $CFLAGS $LDFLAGS source.c
While we would need something like: gcc -c $CFLAGS source.c gcc -o out $LDFLAGS source.o
Thanks, Piotr