mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-31 00:03:57 -04:00 
			
		
		
		
	More MSVC build fixes:
* New versions of OpenSSL come with proper debug versions, and use suffixed names on the LIBs for that. Adapts library handling to deal with that. * Fixes error where it incorrectly enabled Kerberos based on NLS configuration instead of Kerberos configuration * Specifies path of perl in config, instead of using current one. Required when using a 64-bit perl normally, but want to build pl/perl against 32-bit one (required) * Fix so pgevent generates win32ver.rc automatically Magnus Hagander
This commit is contained in:
		
							parent
							
								
									e2b1dbd394
								
							
						
					
					
						commit
						aaef29b377
					
				| @ -18,7 +18,8 @@ sub new { | ||||
|         guid            => Win32::GuidGen(), | ||||
|         files           => {}, | ||||
|         references      => [], | ||||
|         libraries       => '', | ||||
|         libraries       => [], | ||||
|         suffixlib       => [], | ||||
|         includes        => '', | ||||
|         defines         => ';', | ||||
| 		solution        => $solution, | ||||
| @ -86,12 +87,12 @@ sub AddReference { | ||||
| } | ||||
| 
 | ||||
| sub AddLibrary { | ||||
| 	my ($self, $lib) = @_; | ||||
| 	my ($self, $lib, $dbgsuffix) = @_; | ||||
| 
 | ||||
| 	if ($self->{libraries} ne '') { | ||||
| 		$self->{libraries} .= ' '; | ||||
| 	push @{$self->{libraries}}, $lib; | ||||
| 	if ($dbgsuffix) { | ||||
| 		push @{$self->{suffixlib}}, $lib; | ||||
| 	} | ||||
| 	$self->{libraries} .= $lib; | ||||
| } | ||||
| 
 | ||||
| sub AddIncludeDir { | ||||
| @ -351,7 +352,19 @@ sub WriteConfiguration | ||||
| { | ||||
| 	my ($self, $f, $cfgname, $p) = @_; | ||||
| 	my $cfgtype = ($self->{type} eq "exe")?1:($self->{type} eq "dll"?2:4); | ||||
| 	my $libs = $self->{libraries}; | ||||
| 	my $libcfg = (uc $cfgname eq "RELEASE")?"MD":"MDd"; | ||||
| 	my $libs = ''; | ||||
| 	foreach my $lib (@{$self->{libraries}}) { | ||||
| 		my $xlib = $lib; | ||||
| 		foreach my $slib (@{$self->{suffixlib}}) { | ||||
| 			if ($slib eq $lib) { | ||||
| 				$xlib =~ s/\.lib$/$libcfg.lib/; | ||||
| 				last; | ||||
| 			} | ||||
| 		} | ||||
| 		$libs .= $xlib . " "; | ||||
| 	} | ||||
| 	$libs =~ s/ $//; | ||||
| 	$libs =~ s/__CFGNAME__/$cfgname/g; | ||||
| 	print $f <<EOF; | ||||
|   <Configuration Name="$cfgname|Win32" OutputDirectory=".\\$cfgname\\$self->{name}" IntermediateDirectory=".\\$cfgname\\$self->{name}" | ||||
|  | ||||
| @ -83,7 +83,7 @@ sub GenerateFiles { | ||||
| 		print O "#define USE_SSL 1\n" if ($self->{options}->{openssl}); | ||||
| 		print O "#define ENABLE_NLS 1\n" if ($self->{options}->{nls}); | ||||
| 		print O "#define LOCALEDIR \"/usr/local/pgsql/share/locale\"\n" if ($self->{options}->{nls}); | ||||
| 		if ($self->{options}->{nls}) { | ||||
| 		if ($self->{options}->{krb5}) { | ||||
| 			print O "#define KRB5 1\n"; | ||||
| 			print O "#define HAVE_KRB5_ERROR_TEXT_DATA 1\n"; | ||||
| 			print O "#define HAVE_KRB5_TICKET_ENC_PART2 1\n"; | ||||
| @ -220,8 +220,8 @@ sub AddProject { | ||||
| 	} | ||||
| 	if ($self->{options}->{openssl}) { | ||||
| 		$proj->AddIncludeDir($self->{options}->{openssl} . '\include'); | ||||
| 		$proj->AddLibrary($self->{options}->{openssl} . '\lib\VC\ssleay32.lib'); | ||||
| 		$proj->AddLibrary($self->{options}->{openssl} . '\lib\VC\libeay32.lib'); | ||||
| 		$proj->AddLibrary($self->{options}->{openssl} . '\lib\VC\ssleay32.lib', 1); | ||||
| 		$proj->AddLibrary($self->{options}->{openssl} . '\lib\VC\libeay32.lib', 1); | ||||
| 	} | ||||
| 	if ($self->{options}->{nls}) { | ||||
| 		$proj->AddIncludeDir($self->{options}->{nls} . '\include'); | ||||
|  | ||||
| @ -6,7 +6,7 @@ our $config = { | ||||
| 	asserts=>1,			# --enable-cassert | ||||
| 	nls=>undef,				# --enable-nls=<path> | ||||
| 	tcl=>'c:\tcl',		# --with-tls=<path> | ||||
| 	perl=>1, 			# --with-perl | ||||
| 	perl=>'c:\perl', 			# --with-perl | ||||
| 	python=>'c:\python24', # --with-python=<path> | ||||
| 	krb5=>'c:\prog\pgsql\depend\krb5', # --with-krb5=<path> | ||||
| 	ldap=>1,			# --with-ldap | ||||
|  | ||||
| @ -47,24 +47,23 @@ $plpgsql->AddFiles('src\pl\plpgsql\src','scan.l','gram.y'); | ||||
| $plpgsql->AddReference($postgres); | ||||
| 
 | ||||
| if ($solution->{options}->{perl}) { | ||||
| # Already running in perl, so use the version that we already have information for. | ||||
| 	use Config; | ||||
| 	my $plperl = $solution->AddProject('plperl','dll','PLs','src\pl\plperl'); | ||||
| 	$plperl->AddIncludeDir($Config{archlibexp} . '\CORE'); | ||||
| 	$plperl->AddIncludeDir($solution->{options}->{perl} . '/lib/CORE'); | ||||
| 	$plperl->AddDefine('PLPERL_HAVE_UID_GID'); | ||||
| 	if (Solution::IsNewer('src\pl\plperl\SPI.c','src\pl\plperl\SPI.xs')) { | ||||
| 		print 'Building src\pl\plperl\SPI.c...' . "\n"; | ||||
| 		system('perl ' . $Config{privlibexp} . '/ExtUtils/xsubpp -typemap ' . $Config{privlibexp} . '/ExtUtils/typemap src\pl\plperl\SPI.xs >src\pl\plperl\SPI.c'); | ||||
| 		system($solution->{options}->{perl} . '/bin/perl ' . $solution->{options}->{perl} . '/lib/COREExtUtils/xsubpp -typemap ' . $solution->{options}->{perl} . '/lib/CORE/ExtUtils/typemap src\pl\plperl\SPI.xs >src\pl\plperl\SPI.c'); | ||||
| 		die 'Failed to create SPI.c' . "\n" if ((!(-f 'src\pl\plperl\SPI.c')) || -z 'src\pl\plperl\SPI.c'); | ||||
| 	} | ||||
| 	$plperl->AddReference($postgres); | ||||
| 	$plperl->AddLibrary($Config{archlibexp} . '\CORE\perl58.lib'); | ||||
| 	$plperl->AddLibrary($solution->{options}->{perl} . '\lib\CORE\perl58.lib'); | ||||
| } | ||||
| 
 | ||||
| if ($solution->{options}->{python}) { | ||||
| 	my $plpython = $solution->AddProject('plpython','dll','PLs','src\pl\plpython'); | ||||
| 	$plpython->AddIncludeDir($solution->{options}->{python} . '\include'); | ||||
| 	$plpython->AddLibrary($solution->{options}->{python} . '\Libs\python24.lib'); | ||||
| 	$solution->{options}->{python} =~ /\\Python(\d{2})/i || croak "Could not determine python version from path"; | ||||
| 	$plpython->AddLibrary($solution->{options}->{python} . "\\Libs\\python$1.lib"); | ||||
| 	$plpython->AddReference($postgres); | ||||
| } | ||||
| 
 | ||||
| @ -125,6 +124,8 @@ my $pgreset = AddSimpleFrontend('pg_resetxlog'); | ||||
| 
 | ||||
| my $pgevent = $solution->AddProject('pgevent','dll','bin'); | ||||
| $pgevent->AddFiles('src\bin\pgevent','pgevent.c','pgmsgevent.rc'); | ||||
| $pgevent->AddResourceFile('src\bin\pgevent','Eventlog message formatter'); | ||||
| $pgevent->RemoveFile('src\bin\pgevent\win32ver.rc'); | ||||
| $pgevent->UseDef('src\bin\pgevent\pgevent.def'); | ||||
| 
 | ||||
| my $psql = AddSimpleFrontend('psql', 1); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user