Re: Install shared libs in lib/ and bin/ with MSVC (Was: install libpq.dll in bin directory on Windows / Cygwin)

Поиск
Список
Период
Сортировка
От Alvaro Herrera
Тема Re: Install shared libs in lib/ and bin/ with MSVC (Was: install libpq.dll in bin directory on Windows / Cygwin)
Дата
Msg-id 20150317181347.GO3636@alvh.no-ip.org
обсуждение исходный текст
Ответ на Re: Install shared libs in lib/ and bin/ with MSVC (Was: install libpq.dll in bin directory on Windows / Cygwin)  (Michael Paquier <michael.paquier@gmail.com>)
Ответы Re: Install shared libs in lib/ and bin/ with MSVC (Was: install libpq.dll in bin directory on Windows / Cygwin)  (Michael Paquier <michael.paquier@gmail.com>)
Список pgsql-hackers
Michael Paquier wrote:

> So I have recoded the patch to use an hash of arrays (makes the code
> more readable IMO) to be able to track more easily what to install
> where, and process now does the following for shared libraries:
> - In lib/, install all .dll and .lib
> - In bin/, install all .dll

I wonder why do we need this part:

> @@ -247,22 +250,47 @@ sub CopySolutionOutput
>  
>          my $proj = read_file("$pf.$vcproj")
>            || croak "Could not open $pf.$vcproj\n";
> +
> +        # Check if this project uses a shared library by looking if
> +        # SO_MAJOR_VERSION is defined in its Makefile, whose path
> +        # can be found using the resource file of this project.
> +        if (($vcproj eq 'vcxproj' &&
> +             $proj =~ qr{ResourceCompile\s*Include="([^"]+)"}) ||
> +            ($vcproj eq 'vcproj' &&
> +             $proj =~ qr{File\s*RelativePath="([^\"]+)\.rc"}))
> +        {
> +            my $projpath = dirname($1);
> +            my $mfname = -e "$projpath/GNUmakefile" ?
> +                "$projpath/GNUmakefile" : "$projpath/Makefile";
> +            my $mf = read_file($mfname) ||
> +                croak "Could not open $mfname\n";
> +
> +            if ($mf =~ /^SO_MAJOR_VERSION\s*=\s*(.*)$/mg)
> +            {
> +                $is_sharedlib = 1;
> +            }
> +        }

I mean, can't we just do the "push" unconditionally here?

>              elsif ($1 == 2)
>              {
> -                $dir = "lib";
> -                $ext = "dll";
> +                push( @{ $install_list { 'lib' } }, "dll");
> +                if ($is_sharedlib)
> +                {
> +                    push( @{ $install_list { 'bin' } }, "dll");
> +                    push( @{ $install_list { 'lib' } }, "lib");
> +                }
>              }

Surely if there are no "lib/dll" files in the subdirectory, nothing will
happen, right?  (I haven't actually tried.)

-- 
Álvaro Herrera                http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Josh Berkus
Дата:
Сообщение: Re: Bug in point releases 9.3.6 and 9.2.10?
Следующее
От: Magnus Hagander
Дата:
Сообщение: Re: Strange assertion using VACOPT_FREEZE in vacuum.c