| From: | Andrew Dunstan <andrew(at)dunslane(dot)net> | 
|---|---|
| To: | PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> | 
| Cc: | Muralikrishna Bandaru <muralikrishna(dot)bandaru(at)enterprisedb(dot)com>, Sandeep Thakkar <sandeep(dot)thakkar(at)enterprisedb(dot)com> | 
| Subject: | meson vs windows perl | 
| Date: | 2024-04-02 13:34:08 | 
| Message-ID: | 01117f88-f465-bf6c-9362-083bd72ca305@dunslane.net | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-hackers | 
meson.build has this code
         ldopts = run_command(perl, '-MExtUtils::Embed', '-e', 'ldopts',
    check: true).stdout().strip()     undesired =
    run_command(perl_conf_cmd, 'ccdlflags', check:
    true).stdout().split()     undesired += run_command(perl_conf_cmd,
    'ldflags', check: true).stdout().split()     perl_ldopts = []    
    foreach ldopt : ldopts.split(' ')       if ldopt == '' or ldopt in
    undesired         continue       endif       perl_ldopts +=
    ldopt.strip('"')     endforeach     message('LDFLAGS recommended by
    perl: "@0@"'.format(ldopts))     message('LDFLAGS for embedding
    perl: "@0@"'.format(' '.join(perl_ldopts)))
This code is seriously broken if perl reports items including spaces, 
when a) removing the quotes is quite wrong, and b) splitting on spaces 
is also wrong.
Here's an example from one of my colleagues:
    C:\Program Files\Microsoft Visual Studio\2022\Professional>perl.EXE -MExtUtils::Embed -e ldopts
       -nologo -nodefaultlib -debug -opt:ref,icf -ltcg  -libpath:"C:\edb\languagepack\v4\Perl-5.38\lib\CORE"
    -machine:AMD64 -subsystem:console,"5.02"  "C:\edb\languagepack\v4\Perl-5.38\lib\CORE\perl538.lib"
    "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.38.33130\lib\x64\oldnames.lib"
    "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\kernel32.lib"
    "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\user32.lib"
    "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\gdi32.lib"
    "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\winspool.lib"
    "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\comdlg32.lib"
    "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\advapi32.lib"
    "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\shell32.lib"
    "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\ole32.lib"
    "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\oleaut32.lib"
    "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\netapi32.lib"
    "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\uuid.lib"
    "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\ws2_32.lib"
    "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\mpr.lib"
    "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\winmm.lib"
    "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\version.lib"
    "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\odbc32.lib"
    "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\odbccp32.lib"
    "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64\comctl32.lib"
    "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.38.33130\lib\x64\msvcrt.lib"
    "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.38.33130\lib\x64\vcruntime.lib"
    "C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64\ucrt.lib"
And with that we get errors like
    cl : Command line warning D9024 : unrecognized source file type 'C:\Program', object file assumed
    cl : Command line warning D9024 : unrecognized source file type 'Files\Microsoft', object file assumed
    cl : Command line warning D9024 : unrecognized source file type 'Visual', object file assumed
    cl : Command line warning D9024 : unrecognized source file type 'C:\Program', object file assumed
    cl : Command line warning D9024 : unrecognized source file type 'Files', object file assumed
    cl : Command line warning D9024 : unrecognized source file type '(x86)\Windows', object file assumed
It looks like we need to get smarter about how we process the ldopts and strip out the ccdlflags and ldflags
cheers
andrew
--
Andrew Dunstan
EDB:https://www.enterprisedb.com
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2024-04-02 13:50:18 | Re: Confusing #if nesting in hmac_openssl.c | 
| Previous Message | jian he | 2024-04-02 13:26:54 | Re: remaining sql/json patches |