pg 0.9.0.pre156-x86-mswin32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,19 @@
1
+ = Compiling on MacOS X
2
+
3
+ If you are building/installing ruby-pg on MacOS X, and the installation doesn't work at first, here are a few things you can try.
4
+
5
+ == Compiling With the Correct Architecture
6
+
7
+ OS X supports both architecture-specific binaries (e.g. i386), as well as universal binaries (i.e. i386 & ppc). If ruby is built as a universal binary and postgresql is not, you need to specify the path to the appropriate pg_config binary or set the environment variable ARCHFLAGS appropriately.
8
+
9
+ For example, if you're using the stock Ruby binary, and PostgreSQL 8.4.x installed from MacPorts (without specifying the {{{+universal}}} variant), do:
10
+
11
+ gem install -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
12
+
13
+ Alternatively, if the build system can't figure out which architectures it should include, you may need to set the 'ARCHFLAGS' environment variable explicitly:
14
+
15
+ sudo env ARCHFLAGS='-arch i386' gem install pg
16
+
17
+ or, if you're building from source:
18
+
19
+ rake compile ARCHFLAGS="-arch i386"
@@ -0,0 +1,183 @@
1
+ PostgreSQL$BMQ3HD%%i%$%V%i%j(B version 0.7.1
2
+
3
+ $B$^$D$b$H(B $B$f$-$R$m(B
4
+ $B$^$D$b$H(B $B$($$$8(B
5
+
6
+ $B@$OC?M(B: $B@FF#(B $BEP(B
7
+
8
+ - What's this ?
9
+
10
+ $BK\%i%$%V%i%j$O!"(BRuby$B$+$i(BPostgreSQL$B$X%"%/%;%9$9$k$?$a$N3HD%%i%$%V%i%j$G$9!#(B
11
+ $B%5%]!<%H$7$F$$$k(BPostgreSQL$B$N%P!<%8%g%s$O!"(B6.5/7.0/7.1/7.2 $B$G$9!#(B6.3$B0JA0$N(B
12
+ $B%P!<%8%g%s$G$b(B($B$A$g$C$H$7$?JQ99$G(B)$BF0:n$9$k$H;W$$$^$9$,!"%F%9%H$7$F$$$^$;$s!#(B
13
+
14
+ - How to install ?
15
+ *** requirement ***
16
+ PostgreSQL module$B$r;H$&$s$G$9$+$i!$EvA3(BPostgreSQL$B$OI,MW$G$9$M!%:#$N$H$3$m(B
17
+ $B%m!<%+%k$K(BPostgreSQL$B$,%$%s%9%H!<%k$5$l$F$$$k$3$H$rA0Ds$K$7$F$$$^$9$,!$(B
18
+ $BI,MW$J%X%C%@$H(Blibpq$B$5$($"$l$P!$%5!<%P$OI,$:$7$b%m!<%+%k$GF0:n$7$F$$$kI,MW(B
19
+ $B$O$"$j$^$;$s!%(B
20
+
21
+ $B%G%U%)%k%H$G$O!$(BPostgreSQL$B$,(B/usr/local/pgsql$BG[2<$K%$%s%9%H!<%k$5$l$F$$$k(B
22
+ $B$H$7$F$$$^$9!%JL$N>l=j$K%$%s%9%H!<%k$7$F$$$k>l9g$K$O!$4D6-JQ?t(BPGLIB$B$K(Blibpq
23
+ $B%i%$%V%i%j$,CV$$$F$"$k(Bdirectory$B$K@_Dj$7$F2<$5$$!#(B
24
+
25
+ $BG$0U$N>l=j$G!$$3$N%"!<%+%$%V$rE83+$7$F$/$@$5$$!%8e$O(B
26
+
27
+ ruby extconf.rb
28
+ make
29
+ su ($B$b$7I,MW$J$i(B)
30
+ make install
31
+
32
+ $B$H$9$k$@$1$G$9!%(BPostgreSQL$B$N%$%s%/%k!<%I%U%!%$%k!"%i%$%V%i%j%U%!%$%k$N(B
33
+ $B%$%s%9%H!<%k>l=j$,I8=`$N0LCV$G$O$J$/%3%s%Q%$%i$,8+IU$1$k$3$H$,$G$-$J$$(B
34
+ $B>l9g$K$O(B
35
+
36
+ --with-pgsql-include-dir=<$B%$%s%/%k!<%I%U%!%$%k%G%#%l%/%H%j(B>
37
+ --with-pgsql-lib-dir=<$B%i%$%V%i%j%G%#%l%/%H%j(B>
38
+ $B$^$?$O(B
39
+ --with-pgsql-dir=<$B%G%#%l%/%H%j(B>
40
+ $B$3$l$O0J2<$N$h$&$K;XDj$7$?$H$-$H$*$J$8$G$9!#(B
41
+ --with-pgsql-include-dir=<$B%G%#%l%/%H%j(B>/include
42
+ --with-pgsql-lib-dir=<$B%G%#%l%/%H%j(B>/lib
43
+
44
+
45
+ $BNc$($P(B
46
+
47
+ ruby extconf.rb --with-pgsql-include-dir=/usr/local/pgsql/include \
48
+ --with-pgsql-lib-dir=/usr/local/pgsql/lib
49
+ $B$^$?$O(B
50
+ ruby extconf.rb --with-pgsql-dir=/usr/local/pgsql
51
+
52
+ $B$N$h$&$K;XDj$7$F$/$@$5$$!#(B
53
+
54
+ - How to use ?
55
+
56
+ require "postgres"
57
+
58
+ $B$H$7$F$+$i8f;HMQ2<$5$$!#(B
59
+
60
+ - What function can I use ?
61
+
62
+ $B4pK\E*$K!"(BC$B$N(Blibpq$B%$%s%?%U%'!<%9$GDj5A$5$l$F$$$k4X?t$O%5%]!<%H$7$F$$$^$9!#(B
63
+ ver 0.6.0 $B$+$i?7$7$/(B Large Object $B%$%s%?!<%U%'%$%9$,DI2C$5$l$^$7$?!#(B
64
+
65
+ $B%5%]!<%H$7$F$$$k%a%=%C%I$N0lMw$O0J2<$NDL$j$G$9!#(B
66
+
67
+ PGconn$B%/%i%9(B:
68
+
69
+ $B%/%i%9%a%=%C%I(B
70
+ new
71
+ connect
72
+ setdb
73
+ setdblogin
74
+ escape
75
+ quote
76
+ escape_bytea
77
+
78
+ $B%a%=%C%I(B
79
+ db
80
+ host
81
+ options
82
+ port
83
+ tty
84
+ status
85
+ error
86
+ finish
87
+ close
88
+ reset
89
+ user
90
+ trace
91
+ untrace
92
+
93
+ exec
94
+ query
95
+ async_exec
96
+ async_query
97
+ get_notify
98
+ insert_table
99
+ putline
100
+ getline
101
+ endcopy
102
+ notifies
103
+
104
+ lo_import
105
+ lo_export
106
+ lo_create
107
+ lo_open
108
+ lo_unlink
109
+
110
+ client_encoding
111
+ set_client_encoding
112
+
113
+ PGresult$B%/%i%9(B:
114
+
115
+ $B%a%=%C%I(B
116
+ each
117
+ []
118
+ status
119
+ result
120
+ fields
121
+ num_tuples
122
+ num_fields
123
+ fieldname
124
+ fieldnum
125
+ type
126
+ size
127
+ getvalue
128
+ getlength
129
+ cmdstatus
130
+ print
131
+ clear
132
+
133
+ PGlarge$B%/%i%9(B:
134
+
135
+ $B%a%=%C%I(B
136
+ open
137
+ close
138
+ read
139
+ write
140
+ lseek
141
+ tell
142
+ unlink
143
+ oid
144
+ size
145
+ export
146
+
147
+ - Acknowledgement
148
+
149
+ $BK\3HD%%i%$%V%i%j$r:n@.$9$k$K$"$?$C$F!"(Bruby-list, ruby-dev,
150
+ ruby-talk,$B5Z$S(B pgsql-jp$B%a!<%j%s%0%j%9%H$N%a%s%P!<$K!"B?$/$NM-1W$J(B
151
+ $B%"%I%P%$%9$rD:$-$^$7$?!#$3$3$K46<U$N0U$rI=$7$^$9!#(B
152
+
153
+ - Copying
154
+
155
+ $BK\3HD%%i%$%V%i%j$NCx:n8"$O!"$^$D$b$H(B $B$f$-$R$m$H$^$D$b$H(B $B$($$$8$,(B
156
+ $BJ];}$7$^$9!#(B
157
+
158
+ $BK\3HD%%i%$%V%i%j$O!"(BRuby$BK\BN$HF1$8G[I[>r7o$K=>$C$F:FG[I[$9$k$3$H(B
159
+ $B$,$G$-$^$9!#(BRuby$BK\BN$NG[I[>r7o$K$D$$$F$O!"(BRuby$BG[I[J*Cf$N(BREADME.jp
160
+ $B$K=q$+$l$F$$$^$9!#(B
161
+
162
+ $B8=:_$O@FF#(B $BEP$,(B maintainer $B$r>5$C$F$$$k$N$G!"Ld$$9g$o$;$O$3$A$i$NJ}$K(B
163
+ $B$*4j$$$7$^$9!#(B
164
+
165
+ - Author
166
+
167
+ $B$^$D$b$H(B $B$f$-$R$m(B <matz@ruby-lang.org>
168
+ Author of Ruby
169
+
170
+ $B$^$D$b$H(B $B$($$$8(B <usagi@ruby.club.or.jp>
171
+ One of users who loves Ruby
172
+
173
+ $B$3$N$U$?$j$O7;Do$G$O$"$j$^$;$s!#(B :-)
174
+
175
+ - Special Thanks
176
+
177
+ Guy Decoux ts <decoux@moulon.inra.fr>
178
+
179
+ - maintainer
180
+
181
+ $B@FF#(B $BEP(B <noborus@netlab.jp>
182
+ $B$^$D$b$H$G$J$/$F$9$$$^$;$s(B :-)
183
+
@@ -0,0 +1,72 @@
1
+
2
+ = Compiling on MS Windows
3
+
4
+ In order to build this extension on MS Windows you will need a couple things.
5
+
6
+ First, a compiler. For the one click installer this means you should either
7
+ use VC++ 6.0 or the compiler that comes with cygwin or mingw if you're
8
+ building on that platform.
9
+
10
+ If you've built Ruby yourself, you should use the same compiler to build
11
+ this library that you used to build Ruby.
12
+
13
+ Second, PostgreSQL. Be sure you installed it with the development header
14
+ files if you installed it using the standard PostgreSQL installer for
15
+ Windows. If you didn't, you can run the installer again, select "modify",
16
+ and then select the 'development headers' option to install them.
17
+
18
+ I recommend making sure that 'pg_config.exe' is in your PATH. The PostgreSQL
19
+ installer for Windows does not necessarily update your PATH when it installs
20
+ itself, so you may need to do this manually. This isn't strictly necessary,
21
+ however.
22
+
23
+ In order to build ruby-pg, just run 'rake'. If the pg_config.exe executable
24
+ is not in your PATH, you'll need to explicitly point ruby-pg to where your
25
+ PostgreSQL headers and libraries are with something like this:
26
+
27
+ rake --with-pg-dir=c:/progra~1/postgr~1/8.3
28
+
29
+ Adjust your path accordingly. BE SURE TO USE THE SHORT PATH NAMES! If you
30
+ try to use a path with spaces in it, the nmake.exe program will choke.
31
+
32
+
33
+ == Cross compiling for mswin32
34
+
35
+ Using rake-compiler a cross compiled pg-gem can be build on a linux host for
36
+ the win32 platform. The generated gem is statically linked against libpq and
37
+ libssl. OpenSSL and PostgreSQL are downloaded and compiled from the sources.
38
+ There are no runtime dependencies to any but the standard Windows DLLs.
39
+
40
+ Install mingw32. On a debian based system this should work:
41
+
42
+ apt-get install mingw32
43
+
44
+ On MacOS X, if you have MacPorts installed:
45
+
46
+ port install i386-mingw32-gcc
47
+
48
+ Install the rake-compiler:
49
+
50
+ gem install rake-compiler
51
+
52
+ Download and cross compile ruby for win32:
53
+
54
+ rake-compiler cross-ruby VERSION=1.8.6-p287
55
+
56
+ Download and cross compile pg for win32:
57
+
58
+ rake cross native gem RUBY_CC_VERSION=1.8.6 OPENSSL_VERSION=0.9.8l POSTGRESQL_VERSION=8.4.2
59
+
60
+ If everything works, there should be pg-VERSION-x86-mswin32.gem in the pkg
61
+ directory.
62
+
63
+
64
+ If you have any problems you can submit them via the project's issue-tracker:
65
+
66
+ http://bitbucket.org/ged/ruby-pg/issues/new/
67
+
68
+ Or you can join the mailing list:
69
+
70
+ ruby-pg-general@rubyforge.org
71
+
72
+ And submit questions, problems, or solutions, so that it can be improved.
@@ -0,0 +1,239 @@
1
+ #!rake
2
+
3
+ require 'rake/extensiontask'
4
+ require 'rake/extensioncompiler'
5
+ require 'rbconfig'
6
+
7
+ # C extension constants
8
+ EXT_MAKEFILE = EXTDIR + 'Makefile'
9
+ EXT_SOURCES = FileList[ EXTDIR + '*.c' ]
10
+ EXT_SO = EXTDIR + "pg.#{CONFIG['DLEXT']}"
11
+
12
+ SITEARCH_DIR = LIBDIR + Config::CONFIG['sitearch']
13
+
14
+ NUM_CPUS = if File.exist?('/proc/cpuinfo')
15
+ File.read('/proc/cpuinfo').scan('processor').length
16
+ else
17
+ 1
18
+ end
19
+
20
+ # Cross-compilation constants
21
+ COMPILE_HOME = File.expand_path("~/.rake-compiler")
22
+ OPENSSL_VERSION = ENV['OPENSSL_VERSION'] || '0.9.8l'
23
+ POSTGRESQL_VERSION = ENV['POSTGRESQL_VERSION'] || '8.4.2'
24
+
25
+ CROSS_PREFIX = if RUBY_PLATFORM.include?( 'darwin' )
26
+ 'i386-mingw32'
27
+ else
28
+ 'i586-mingw32msvc'
29
+ end
30
+
31
+
32
+ #####################################################################
33
+ ### T A S K S
34
+ #####################################################################
35
+
36
+ # Make both the default task and the spec task depend on building the extension
37
+ task :local => :compile
38
+ task :spec => :compile
39
+ namespace :spec do
40
+ task :doc => [ :compile ]
41
+ task :quiet => [ :compile ]
42
+ task :html => [ :compile ]
43
+ task :text => [ :compile ]
44
+ end
45
+
46
+ ENV['RUBY_CC_VERSION'] = '1.8.6:1.9.1'
47
+
48
+ Rake::ExtensionTask.new do |ext|
49
+ ext.name = 'pg_ext'
50
+ ext.gem_spec = GEMSPEC
51
+ ext.ext_dir = 'ext'
52
+ ext.lib_dir = 'lib'
53
+ ext.source_pattern = "*.{c,h}"
54
+
55
+ # If there's an explicit 'compile' argument, use everything after it as options.
56
+ if offset = ARGV.index( 'compile' )
57
+ trace "config options = %p" % [ ARGV[(offset + 1)..-1] ]
58
+ ext.config_options = ARGV[ (offset + 1)..-1 ]
59
+ # Otherwise, just grab everything from the first option onward
60
+ elsif offset = ARGV.index( ARGV.find {|arg| arg =~ /^--/ } )
61
+ trace "config options = %p" % [ ARGV[offset..-1] ]
62
+ ext.config_options = ARGV[ offset..-1 ]
63
+ else
64
+ trace "No config options (ARGV = %p)" % [ ARGV ]
65
+ end
66
+
67
+ ext.cross_compile = true # enable cross compilation (requires cross compile toolchain)
68
+ ext.cross_platform = %w[i386-mswin32 i386-mingw32] # forces the Windows platform instead of the default one
69
+
70
+ # configure options only for cross compile
71
+ ext.cross_config_options += [
72
+ "--with-pg-include=#{COMPILE_HOME}/builds/postgresql-#{POSTGRESQL_VERSION}/src/interfaces/libpq",
73
+ "--with-opt-include=#{COMPILE_HOME}/builds/postgresql-#{POSTGRESQL_VERSION}/src/include",
74
+ "--with-pg-lib=#{COMPILE_HOME}/builds/postgresql-#{POSTGRESQL_VERSION}/src/interfaces/libpq",
75
+ "--with-opt-lib=#{COMPILE_HOME}/builds/openssl-#{OPENSSL_VERSION}",
76
+ "--enable-static-build",
77
+ ]
78
+
79
+ end
80
+
81
+
82
+ desc "Stop any Postmaster instances that remain after testing."
83
+ task :cleanup_testing_dbs do
84
+ require 'spec/lib/helpers'
85
+ PgTestingHelpers.stop_existing_postmasters()
86
+ Rake::Task[:clean].invoke
87
+ end
88
+
89
+
90
+ #####################################################################
91
+ ### C R O S S - C O M P I L A T I O N - T A S K S
92
+ #####################################################################
93
+
94
+
95
+ # define a location where sources will be stored
96
+ directory "#{COMPILE_HOME}/sources"
97
+ directory "#{COMPILE_HOME}/builds/openssl-#{OPENSSL_VERSION}"
98
+
99
+ # clean intermediate files and folders
100
+ CLEAN.include("#{COMPILE_HOME}/builds/openssl-#{OPENSSL_VERSION}")
101
+
102
+ # openssl source file should be stored there
103
+ file "#{COMPILE_HOME}/sources/openssl-#{OPENSSL_VERSION}.tar.gz" => ["#{COMPILE_HOME}/sources"] do |t|
104
+ # download the source file using wget or curl
105
+ chdir File.dirname(t.name) do
106
+ #http://www.openssl.org/source/openssl-0.9.8k.tar.gz
107
+ url = "http://www.openssl.org/source/#{File.basename(t.name)}"
108
+ sh "wget #{url} || curl -O #{url}"
109
+ end
110
+ end
111
+
112
+ # Extract the openssl builds
113
+ file "#{COMPILE_HOME}/builds/openssl-#{OPENSSL_VERSION}" => ["#{COMPILE_HOME}/sources/openssl-#{OPENSSL_VERSION}.tar.gz"] do |t|
114
+ chdir File.dirname(t.name) do
115
+ t.prerequisites.each { |f| sh "tar xfz ../sources/#{File.basename(f)}" }
116
+ end
117
+ end
118
+
119
+ # generate the makefile in a clean build location
120
+ file "#{COMPILE_HOME}/builds/openssl-#{OPENSSL_VERSION}/Makefile" =>
121
+ ["#{COMPILE_HOME}/builds/openssl-#{OPENSSL_VERSION}"] do |t|
122
+
123
+ chdir File.dirname(t.name) do
124
+ sh File.expand_path("Configure"), 'mingw'
125
+ end
126
+ end
127
+
128
+ # make
129
+ file "#{COMPILE_HOME}/builds/openssl-#{OPENSSL_VERSION}/libssleay32.a" => ["#{COMPILE_HOME}/builds/openssl-#{OPENSSL_VERSION}/Makefile"] do |t|
130
+ chdir File.dirname(t.prerequisites.first) do
131
+ sh <<-EOT
132
+ export cross=#{CROSS_PREFIX}- &&
133
+ make -j#{NUM_CPUS} CC="${cross}gcc -DDSO_WIN32" AR="${cross}ar r" RANLIB="${cross}ranlib" build_libs &&
134
+ cp libcrypto.a libeay32.a &&
135
+ cp libssl.a libssleay32.a
136
+ EOT
137
+ end
138
+ end
139
+
140
+ #desc 'compile static libssl.a'
141
+ task 'openssl-make' => ["#{COMPILE_HOME}/builds/openssl-#{OPENSSL_VERSION}/libssleay32.a"]
142
+
143
+
144
+ # define a location where sources will be stored
145
+ directory "#{COMPILE_HOME}/builds/postgresql-#{POSTGRESQL_VERSION}"
146
+
147
+ # clean intermediate files and folders
148
+ CLEAN.include("#{COMPILE_HOME}/builds/postgresql-#{POSTGRESQL_VERSION}")
149
+
150
+
151
+ # postgresql source file should be stored there
152
+ file "#{COMPILE_HOME}/sources/postgresql-#{POSTGRESQL_VERSION}.tar.bz2" => ["#{COMPILE_HOME}/sources"] do |t|
153
+ # download the source file using wget or curl
154
+ chdir File.dirname(t.name) do
155
+ #http://wwwmaster.postgresql.org/redir/53/h/source/v8.4.0/postgresql-8.4.0.tar.bz2
156
+ url = "http://wwwmaster.postgresql.org/redir/53/h/source/v#{POSTGRESQL_VERSION}/#{File.basename(t.name)}"
157
+ sh "wget #{url} || curl -O #{url}"
158
+ end
159
+ end
160
+
161
+ # Extract the postgresql sources
162
+ file "#{COMPILE_HOME}/builds/postgresql-#{POSTGRESQL_VERSION}" => ["#{COMPILE_HOME}/sources/postgresql-#{POSTGRESQL_VERSION}.tar.bz2"] do |t|
163
+ chdir File.dirname(t.name) do
164
+ t.prerequisites.each { |f| sh "tar xfj ../sources/#{File.basename(f)}" }
165
+ end
166
+ end
167
+
168
+ # generate the makefile in a clean build location
169
+ file "#{COMPILE_HOME}/builds/postgresql-#{POSTGRESQL_VERSION}/src/Makefile.global" =>
170
+ ["#{COMPILE_HOME}/builds/postgresql-#{POSTGRESQL_VERSION}",
171
+ "#{COMPILE_HOME}/builds/openssl-#{OPENSSL_VERSION}/libssleay32.a"] do |t|
172
+
173
+ options = [
174
+ '--target=i386-mingw32',
175
+ "--host=#{Rake::ExtensionCompiler.mingw_host}",
176
+ '--with-openssl',
177
+ '--without-zlib',
178
+ '--disable-shared',
179
+ ]
180
+
181
+ chdir "#{COMPILE_HOME}/builds/postgresql-#{POSTGRESQL_VERSION}" do
182
+ configure_path = File.expand_path("#{COMPILE_HOME}/builds/postgresql-#{POSTGRESQL_VERSION}/configure")
183
+ sh <<-EOT
184
+ export CFLAGS=-L#{COMPILE_HOME}/builds/openssl-#{OPENSSL_VERSION} &&
185
+ export LDFLAGS=-L#{COMPILE_HOME}/builds/openssl-#{OPENSSL_VERSION} &&
186
+ export LDFLAGS_SL=-L#{COMPILE_HOME}/builds/openssl-#{OPENSSL_VERSION} &&
187
+ export "LIBS=-lwsock32 -lgdi32" &&
188
+ export CPPFLAGS=-I#{COMPILE_HOME}/builds/openssl-#{OPENSSL_VERSION}/include &&
189
+ #{configure_path} #{options.join(" ")}
190
+ EOT
191
+ end
192
+ end
193
+
194
+ # backup Makefile.shlib
195
+ file "#{COMPILE_HOME}/builds/postgresql-#{POSTGRESQL_VERSION}/src/Makefile.shlib.bak" => ["#{COMPILE_HOME}/builds/postgresql-#{POSTGRESQL_VERSION}/src/Makefile.global"] do |t|
196
+ cp "#{COMPILE_HOME}/builds/postgresql-#{POSTGRESQL_VERSION}/src/Makefile.shlib", t.name
197
+ end
198
+
199
+ # patch the Makefile.shlib
200
+ file "#{COMPILE_HOME}/builds/postgresql-#{POSTGRESQL_VERSION}/src/Makefile.shlib" => ["#{COMPILE_HOME}/builds/postgresql-#{POSTGRESQL_VERSION}/src/Makefile.shlib.bak"] do |t|
201
+ content = File.open(t.name, 'rb') { |f| f.read }
202
+
203
+ out = ""
204
+
205
+ content.each_line do |line|
206
+ if line =~ /^(\s*haslibarule\s*=\s*yes)/
207
+ out << "##{$1}\n"
208
+ else
209
+ out << line
210
+ end
211
+ end
212
+
213
+ when_writing("Patching Makefile.shlib") {
214
+ File.open(t.name, 'wb') { |f| f.write(out) }
215
+ }
216
+ end
217
+
218
+
219
+ # make libpq.a
220
+ file "#{COMPILE_HOME}/builds/postgresql-#{POSTGRESQL_VERSION}/src/interfaces/libpq/libpq.a" => ["#{COMPILE_HOME}/builds/postgresql-#{POSTGRESQL_VERSION}/src/Makefile.global", "#{COMPILE_HOME}/builds/postgresql-#{POSTGRESQL_VERSION}/src/Makefile.shlib"] do |t|
221
+ chdir File.dirname(t.name) do
222
+ sh "make -j#{NUM_CPUS} libpq.a PORTNAME=win32"
223
+ end
224
+ end
225
+
226
+ #desc 'compile static libpg.a'
227
+ task 'postgresql-make' => ['openssl-make', "#{COMPILE_HOME}/builds/postgresql-#{POSTGRESQL_VERSION}/src/interfaces/libpq/libpq.a"]
228
+
229
+ desc 'cross compile pg for win32'
230
+ task 'cross' => [:mingw32, 'postgresql-make']
231
+
232
+ task :mingw32 do
233
+ # Use Rake::ExtensionCompiler helpers to find the proper host
234
+ unless Rake::ExtensionCompiler.mingw_host then
235
+ warn "You need to install mingw32 cross compile functionality to be able to continue."
236
+ warn "Please refer to your distribution/package manager documentation about installation."
237
+ fail
238
+ end
239
+ end