On Tue, Aug 12, 2014 at 11:47 PM, MauMau <maumau...@gmail.com> wrote: > From: "Michael Paquier" <michael.paqu...@gmail.com> > Yes, the build succeeded. I confirmed that the following files have version > info. However, unlike other files, they don't have file description. Is > this intended? > bin\isolationtester.exe > bin\pg_isolation_regress > bin\pg_regress.exe > bin\pg_regress_ecpg.exe > bin\zic.exe
No... But after some additional hacking on this, I have been able to complete that. This has for example required the addition of a new function called AddUtilityResourceFile in Project.pm that is able to scan a Makefile within a given folder and to extract PGFILEDESC and PGAPPICON values that are then used to create a win32ver.rc in the targetted build folder. Note that on MinGW all those exe/dll had file description and version number even with previous version. > lib\regress.dll With MinGW, this had no file description and no version number. Of course that was the same with MSVC. Fixed. > lib\dict_snowball.dll has no version properties. On MSVC there were no file description and no version number. On MinGW, I saw a version number. Thanks for spotting that, I've fixed it. Regards, -- Michael
diff --git a/src/backend/snowball/Makefile b/src/backend/snowball/Makefile index ac80efe..577c512 100644 --- a/src/backend/snowball/Makefile +++ b/src/backend/snowball/Makefile @@ -10,10 +10,13 @@ subdir = src/backend/snowball top_builddir = ../../.. include $(top_builddir)/src/Makefile.global +PGFILEDESC = "snowball - set of dictionary templates" +PGAPPICON = win32 + override CPPFLAGS := -I$(top_srcdir)/src/include/snowball \ -I$(top_srcdir)/src/include/snowball/libstemmer $(CPPFLAGS) -OBJS= dict_snowball.o api.o utilities.o \ +OBJS= $(WIN32RES) dict_snowball.o api.o utilities.o \ stem_ISO_8859_1_danish.o \ stem_ISO_8859_1_dutch.o \ stem_ISO_8859_1_english.o \ diff --git a/src/interfaces/ecpg/test/Makefile b/src/interfaces/ecpg/test/Makefile index 56f6a17..a2e0a83 100644 --- a/src/interfaces/ecpg/test/Makefile +++ b/src/interfaces/ecpg/test/Makefile @@ -14,6 +14,7 @@ override CPPFLAGS := \ $(CPPFLAGS) PGFILEDESC = "ECPG Test - regression tests for ECPG" +PGAPPICON = win32 # where to find psql for testing an existing installation PSQLDIR = $(bindir) diff --git a/src/test/isolation/Makefile b/src/test/isolation/Makefile index 26bcf22..77bc43d 100644 --- a/src/test/isolation/Makefile +++ b/src/test/isolation/Makefile @@ -6,12 +6,15 @@ subdir = src/test/isolation top_builddir = ../../.. include $(top_builddir)/src/Makefile.global +PGFILEDESC = "pg_isolation_tester/isolationtester - isolation regression tests" +PGAPPICON = win32 + # where to find psql for testing an existing installation PSQLDIR = $(bindir) override CPPFLAGS := -I$(srcdir) -I$(libpq_srcdir) -I$(srcdir)/../regress $(CPPFLAGS) -OBJS = specparse.o isolationtester.o +OBJS = specparse.o isolationtester.o $(WIN32RES) all: isolationtester$(X) pg_isolation_regress$(X) @@ -21,7 +24,7 @@ submake-regress: pg_regress.o: | submake-regress rm -f $@ && $(LN_S) $(top_builddir)/src/test/regress/pg_regress.o . -pg_isolation_regress$(X): isolation_main.o pg_regress.o +pg_isolation_regress$(X): isolation_main.o pg_regress.o $(WIN32RES) $(CC) $(CFLAGS) $^ $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@ isolationtester$(X): $(OBJS) | submake-libpq submake-libpgport diff --git a/src/test/regress/GNUmakefile b/src/test/regress/GNUmakefile index b084e0a..49c46c7 100644 --- a/src/test/regress/GNUmakefile +++ b/src/test/regress/GNUmakefile @@ -14,6 +14,9 @@ subdir = src/test/regress top_builddir = ../../.. include $(top_builddir)/src/Makefile.global +PGFILEDESC = "pg_regress - regression tests" +PGAPPICON = win32 + # file with extra config for temp build TEMP_CONF = ifdef TEMP_CONFIG @@ -43,7 +46,7 @@ EXTRADEFS = '-DHOST_TUPLE="$(host_tuple)"' \ all: pg_regress$(X) -pg_regress$(X): pg_regress.o pg_regress_main.o | submake-libpgport +pg_regress$(X): pg_regress.o pg_regress_main.o $(WIN32RES) | submake-libpgport $(CC) $(CFLAGS) $^ $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@ # dependencies ensure that path changes propagate @@ -66,7 +69,7 @@ uninstall: # Build dynamically-loaded object file for CREATE FUNCTION ... LANGUAGE C. NAME = regress -OBJS = regress.o +OBJS = $(WIN32RES) regress.o include $(top_srcdir)/src/Makefile.shlib diff --git a/src/timezone/Makefile b/src/timezone/Makefile index ef739e9..ab65d22 100644 --- a/src/timezone/Makefile +++ b/src/timezone/Makefile @@ -12,11 +12,14 @@ subdir = src/timezone top_builddir = ../.. include $(top_builddir)/src/Makefile.global +PGFILEDESC = "timezone - timezone database" +PGAPPICON = win32 + # files to build into backend OBJS= localtime.o strftime.o pgtz.o # files needed to build zic utility program -ZICOBJS= zic.o ialloc.o scheck.o localtime.o +ZICOBJS= zic.o ialloc.o scheck.o localtime.o $(WIN32RES) # timezone data files TZDATA = africa antarctica asia australasia europe northamerica southamerica \ diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm index e6fb3ec..5433a06 100644 --- a/src/tools/msvc/Mkvcbuild.pm +++ b/src/tools/msvc/Mkvcbuild.pm @@ -112,6 +112,7 @@ sub mkvcbuild $postgres->AddFiles('src\backend\utils\misc', 'guc-file.l'); $postgres->AddFiles('src\backend\replication', 'repl_scanner.l', 'repl_gram.y'); + $postgres->RemoveFile('src\timezone\win32ver.rc'); $postgres->AddDefine('BUILDING_DLL'); $postgres->AddLibrary('secur32.lib'); $postgres->AddLibrary('ws2_32.lib'); @@ -132,6 +133,8 @@ sub mkvcbuild return shift !~ /dict_snowball.c$/; }); $snowball->AddIncludeDir('src\include\snowball'); + $snowball->AddUtilityResourceFile('src\backend\snowball'); + $snowball->RemoveFile('src\backend\snowball\libstemmer\win32ver.rc'); $snowball->AddReference($postgres); my $plpgsql = @@ -341,6 +344,7 @@ sub mkvcbuild $pgregress_ecpg->AddIncludeDir('src\test\regress'); $pgregress_ecpg->AddDefine('HOST_TUPLE="i686-pc-win32vc"'); $pgregress_ecpg->AddDefine('FRONTEND'); + $pgregress_ecpg->AddUtilityResourceFile('src\interfaces\ecpg\test'); $pgregress_ecpg->AddReference($libpgcommon, $libpgport); my $isolation_tester = @@ -356,6 +360,7 @@ sub mkvcbuild $isolation_tester->AddDefine('HOST_TUPLE="i686-pc-win32vc"'); $isolation_tester->AddDefine('FRONTEND'); $isolation_tester->AddLibrary('ws2_32.lib'); + $isolation_tester->AddUtilityResourceFile('src\test\isolation'); $isolation_tester->AddReference($libpq, $libpgcommon, $libpgport); my $pgregress_isolation = @@ -366,6 +371,7 @@ sub mkvcbuild $pgregress_isolation->AddIncludeDir('src\test\regress'); $pgregress_isolation->AddDefine('HOST_TUPLE="i686-pc-win32vc"'); $pgregress_isolation->AddDefine('FRONTEND'); + $pgregress_isolation->AddUtilityResourceFile('src\test\isolation'); $pgregress_isolation->AddReference($libpgcommon, $libpgport); # src/bin @@ -448,6 +454,7 @@ sub mkvcbuild my $zic = $solution->AddProject('zic', 'exe', 'utils'); $zic->AddFiles('src\timezone', 'zic.c', 'ialloc.c', 'scheck.c', 'localtime.c'); + $zic->AddUtilityResourceFile('src\timezone'); $zic->AddReference($libpgcommon, $libpgport); if ($solution->{options}->{xml}) @@ -590,6 +597,7 @@ sub mkvcbuild # Regression DLL and EXE my $regress = $solution->AddProject('regress', 'dll', 'misc'); $regress->AddFile('src\test\regress\regress.c'); + $regress->AddUtilityResourceFile('src\test\regress'); $regress->AddReference($postgres); my $pgregress = $solution->AddProject('pg_regress', 'exe', 'misc'); @@ -597,6 +605,7 @@ sub mkvcbuild $pgregress->AddFile('src\test\regress\pg_regress_main.c'); $pgregress->AddIncludeDir('src\port'); $pgregress->AddDefine('HOST_TUPLE="i686-pc-win32vc"'); + $pgregress->AddResourceFile('src\test\regress'); $pgregress->AddReference($libpgcommon, $libpgport); # fix up pg_xlogdump once it's been set up diff --git a/src/tools/msvc/Project.pm b/src/tools/msvc/Project.pm index f343b2b..51b7629 100644 --- a/src/tools/msvc/Project.pm +++ b/src/tools/msvc/Project.pm @@ -303,6 +303,46 @@ sub AddDir $/ = $t; } +sub AddUtilityResourceFile +{ + my ($self, $dir) = @_; + my $MF; + my $desc; + my $ico; + + my $t = $/; + undef $/; + open($MF, "$dir\\GNUMakefile") + || open($MF, "$dir\\Makefile") + || croak "Could not open $dir\\Makefile\n"; + my $mf = <$MF>; + close($MF); + + # Grab file description for utility + if ($mf =~ /^PGFILEDESC\s*=\s*\"([^\"]+)\"/m) + { + $desc = $1; + } + else + { + die "Failed to find PGFILEDESC in Makefile"; + } + + # Grab icon format + if ($mf =~ /^PGAPPICON\s*=\s*(.*)$/m) + { + $ico = $1; + } + else + { + die "Failed to find PGAPPICON in Makefile"; + } + print 'Directory: ' . $dir . "\n\r"; + + $self->AddResourceFile($dir, $desc, $ico); + $/ = $t; +} + sub AddResourceFile { my ($self, $dir, $desc, $ico) = @_; diff --git a/src/tools/msvc/clean.bat b/src/tools/msvc/clean.bat index b76eea9..38ba5b6 100755 --- a/src/tools/msvc/clean.bat +++ b/src/tools/msvc/clean.bat @@ -20,10 +20,16 @@ del /s /q src\bin\win32ver.rc 2> NUL del /s /q src\interfaces\win32ver.rc 2> NUL if exist src\backend\win32ver.rc del /q src\backend\win32ver.rc if exist src\backend\replication\libpqwalreceiver\win32ver.rc del /q src\backend\replication\libpqwalreceiver\win32ver.rc +if exist src\backend\snowball\libstemmer\win32ver.rc del /q src\backend\snowball\libstemmer\win32ver.rc +if exist src\interfaces\ecpg\test\win32ver.rc del /q src\interfaces\ecpg\test\win32ver.rc if exist src\pl\plperl\win32ver.rc del /q src\pl\plperl\win32ver.rc if exist src\pl\plpgsql\src\win32ver.rc del /q src\pl\plpgsql\src\win32ver.rc if exist src\pl\plpython\win32ver.rc del /q src\pl\plpython\win32ver.rc if exist src\pl\tcl\win32ver.rc del /q src\pl\tcl\win32ver.rc +if exist src\test\isolation\win32ver.rc del /q src\test\isolation\win32ver.rc +if exist src\test\regress\win32ver.rc del /q src\test\regress\win32ver.rc +if exist src\timezone\win32ver.rc del /q src\timezone\win32ver.rc + for /d %%f in (src\interfaces\ecpg\*) do if exist %%f\win32ver.rc del /q %%f\win32ver.rc for /d %%f in (contrib\*) do if exist %%f\win32ver.rc del /q %%f\win32ver.rc for /d %%f in (src\backend\utils\mb\conversion_procs\*) do if exist %%f\win32ver.rc del /q %%f\win32ver.rc
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers