]> granicus.if.org Git - postgresql/blob - src/interfaces/libpq/win32.mak
a1ce3ea02d4a179f88a9bea1afcff3e2bfde4f69
[postgresql] / src / interfaces / libpq / win32.mak
1 # Makefile for Microsoft Visual C++ 5.0 (or compat)
2
3 # Will build a Win32 static library libpq(d).lib
4 #        and a Win32 dynamic library libpq(d).dll with import library libpq(d)dll.lib
5 # USE_SSL=1 will compile with OpenSSL
6 # DEBUG=1 compiles with debugging symbols
7 # ENABLE_THREAD_SAFETY=1 compiles with threading enabled
8
9 !MESSAGE Building the Win32 static library...
10 !MESSAGE
11
12 !IFDEF DEBUG
13 OPT=/Od /Zi /MDd
14 LOPT=/DEBUG
15 DEBUGDEF=/D _DEBUG
16 OUTFILENAME=libpqd
17 !ELSE
18 OPT=/O2 /MD
19 LOPT=
20 DEBUGDEF=/D NDEBUG
21 OUTFILENAME=libpq
22 !ENDIF
23
24 !IF "$(OS)" == "Windows_NT"
25 NULL=
26 !ELSE 
27 NULL=nul
28 !ENDIF 
29
30 CPP=cl.exe
31 RSC=rc.exe
32
33 !IFDEF DEBUG
34 OUTDIR=.\Debug
35 INTDIR=.\Debug
36 CPP_OBJS=.\Debug/
37 !ELSE
38 OUTDIR=.\Release
39 INTDIR=.\Release
40 CPP_OBJS=.\Release/
41 !ENDIF
42
43
44 ALL : config "$(OUTDIR)\$(OUTFILENAME).lib" "$(OUTDIR)\$(OUTFILENAME).dll"
45
46 CLEAN :
47         -@erase "$(INTDIR)\getaddrinfo.obj"
48         -@erase "$(INTDIR)\pgstrcasecmp.obj"
49         -@erase "$(INTDIR)\thread.obj"
50         -@erase "$(INTDIR)\inet_aton.obj"
51         -@erase "$(INTDIR)\crypt.obj"
52         -@erase "$(INTDIR)\noblock.obj"
53         -@erase "$(INTDIR)\md5.obj"
54         -@erase "$(INTDIR)\ip.obj"
55         -@erase "$(INTDIR)\fe-auth.obj"
56         -@erase "$(INTDIR)\fe-protocol2.obj"
57         -@erase "$(INTDIR)\fe-protocol3.obj"
58         -@erase "$(INTDIR)\fe-connect.obj"
59         -@erase "$(INTDIR)\fe-exec.obj"
60         -@erase "$(INTDIR)\fe-lobj.obj"
61         -@erase "$(INTDIR)\fe-misc.obj"
62         -@erase "$(INTDIR)\fe-print.obj"
63         -@erase "$(INTDIR)\fe-secure.obj"
64         -@erase "$(INTDIR)\pqexpbuffer.obj"
65         -@erase "$(INTDIR)\pqsignal.obj"
66         -@erase "$(OUTDIR)\libpqdll.obj"
67         -@erase "$(OUTDIR)\win32.obj"
68         -@erase "$(INTDIR)\wchar.obj"
69         -@erase "$(INTDIR)\encnames.obj"
70         -@erase "$(INTDIR)\pthread-win32.obj"
71         -@erase "$(OUTDIR)\$(OUTFILENAME).lib"
72         -@erase "$(OUTDIR)\$(OUTFILENAME)dll.lib"
73         -@erase "$(OUTDIR)\libpq.res"
74         -@erase "$(OUTDIR)\$(OUTFILENAME).dll"
75         -@erase "*.pch"
76         -@erase "$(OUTDIR)\libpq.pch"
77         -@erase "$(OUTDIR)\$(OUTFILENAME)dll.exp"
78         -@erase "$(INTDIR)\pg_config_paths.h"
79
80
81 LIB32=link.exe -lib
82 LIB32_FLAGS=$(LOPT) /nologo /out:"$(OUTDIR)\$(OUTFILENAME).lib" 
83 LIB32_OBJS= \
84         "$(INTDIR)\win32.obj" \
85         "$(INTDIR)\getaddrinfo.obj" \
86         "$(INTDIR)\pgstrcasecmp.obj" \
87         "$(INTDIR)\thread.obj" \
88         "$(INTDIR)\inet_aton.obj" \
89         "$(INTDIR)\crypt.obj" \
90         "$(INTDIR)\noblock.obj" \
91         "$(INTDIR)\md5.obj" \
92         "$(INTDIR)\ip.obj" \
93         "$(INTDIR)\fe-auth.obj" \
94         "$(INTDIR)\fe-protocol2.obj" \
95         "$(INTDIR)\fe-protocol3.obj" \
96         "$(INTDIR)\fe-connect.obj" \
97         "$(INTDIR)\fe-exec.obj" \
98         "$(INTDIR)\fe-lobj.obj" \
99         "$(INTDIR)\fe-misc.obj" \
100         "$(INTDIR)\fe-print.obj" \
101         "$(INTDIR)\fe-secure.obj" \
102         "$(INTDIR)\pqexpbuffer.obj" \
103         "$(INTDIR)\pqsignal.obj" \
104         "$(INTDIR)\wchar.obj" \
105         "$(INTDIR)\encnames.obj" \
106         "$(INTDIR)\pthread-win32.obj"
107
108
109 config: ..\..\include\pg_config.h pthread.h pg_config_paths.h
110
111 ..\..\include\pg_config.h: ..\..\include\pg_config.h.win32
112         copy ..\..\include\pg_config.h.win32 ..\..\include\pg_config.h
113
114 pthread.h: pthread.h.win32
115         copy pthread.h.win32 pthread.h
116
117 pg_config_paths.h: win32.mak
118         echo \#define SYSCONFDIR "" > pg_config_paths.h
119
120 "$(OUTDIR)" :
121     if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
122
123 CPP_PROJ=/nologo /W3 /GX $(OPT) /I "..\..\include" /I. /D "FRONTEND" $(DEBUGDEF) /D\
124  "WIN32" /D "_WINDOWS" /Fp"$(INTDIR)\libpq.pch" /YX\
125  /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c  /D "HAVE_VSNPRINTF" /D "HAVE_STRDUP"
126
127 !IFDEF USE_SSL
128 CPP_PROJ=$(CPP_PROJ) /D USE_SSL
129 SSL_LIBS=ssleay32.lib libeay32.lib gdi32.lib
130 !ENDIF
131
132 !IFDEF ENABLE_THREAD_SAFETY
133 CPP_PROJ=$(CPP_PROJ) /D ENABLE_THREAD_SAFETY
134 !ENDIF
135
136 CPP_SBRS=.
137
138 RSC_PROJ=/l 0x409 /fo"$(INTDIR)\libpq.res"
139
140 LINK32=link.exe
141 LINK32_FLAGS=kernel32.lib user32.lib advapi32.lib shfolder.lib wsock32.lib $(SSL_LIBS)  \
142  /nologo /subsystem:windows /dll $(LOPT) /incremental:no\
143  /pdb:"$(OUTDIR)\libpqdll.pdb" /machine:I386 /out:"$(OUTDIR)\$(OUTFILENAME).dll"\
144  /implib:"$(OUTDIR)\$(OUTFILENAME)dll.lib"  /def:$(OUTFILENAME)dll.def
145 LINK32_OBJS= \
146         "$(INTDIR)\libpqdll.obj" \
147         "$(OUTDIR)\$(OUTFILENAME).lib" \
148         "$(OUTDIR)\libpq.res"
149
150
151 # @<< is a Response file, http://www.opussoftware.com/tutorial/TutMakefile.htm
152
153 "$(OUTDIR)\$(OUTFILENAME).lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
154         $(LIB32) @<<
155         $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
156 <<
157
158 "$(INTDIR)\libpq.res" : "$(INTDIR)" libpq.rc
159         $(RSC) $(RSC_PROJ) libpq.rc
160
161
162 "$(OUTDIR)\$(OUTFILENAME).dll" : "$(OUTDIR)" "$(OUTDIR)\libpqdll.obj" "$(INTDIR)\libpqdll.obj" "$(INTDIR)\libpq.res"
163         $(LINK32) @<<
164         $(LINK32_FLAGS) $(LINK32_OBJS)
165 <<
166
167 "$(INTDIR)\getaddrinfo.obj" : ..\..\port\getaddrinfo.c
168         $(CPP) @<<
169         $(CPP_PROJ) ..\..\port\getaddrinfo.c
170 <<
171
172 "$(INTDIR)\pgstrcasecmp.obj" : ..\..\port\pgstrcasecmp.c
173         $(CPP) @<<
174         $(CPP_PROJ) ..\..\port\pgstrcasecmp.c
175 <<
176
177 "$(INTDIR)\thread.obj" : ..\..\port\thread.c
178         $(CPP) @<<
179         $(CPP_PROJ) ..\..\port\thread.c
180 <<
181
182 "$(INTDIR)\inet_aton.obj" : ..\..\port\inet_aton.c
183         $(CPP) @<<
184         $(CPP_PROJ) ..\..\port\inet_aton.c
185 <<
186
187 "$(INTDIR)\crypt.obj" : ..\..\port\crypt.c
188         $(CPP) @<<
189         $(CPP_PROJ) ..\..\port\crypt.c
190 <<
191
192 "$(INTDIR)\noblock.obj" : ..\..\port\noblock.c
193         $(CPP) @<<
194         $(CPP_PROJ) ..\..\port\noblock.c
195 <<
196
197 "$(INTDIR)\md5.obj" : ..\..\backend\libpq\md5.c
198         $(CPP) @<<
199         $(CPP_PROJ) ..\..\backend\libpq\md5.c
200 <<
201
202 "$(INTDIR)\ip.obj" : ..\..\backend\libpq\ip.c
203         $(CPP) @<<
204         $(CPP_PROJ) ..\..\backend\libpq\ip.c
205 <<
206
207 "$(INTDIR)\wchar.obj" : ..\..\backend\utils\mb\wchar.c
208         $(CPP) @<<
209         $(CPP_PROJ) /I"." ..\..\backend\utils\mb\wchar.c
210 <<
211
212
213 "$(INTDIR)\encnames.obj" : ..\..\backend\utils\mb\encnames.c
214         $(CPP) @<<
215         $(CPP_PROJ) /I"." ..\..\backend\utils\mb\encnames.c
216 <<
217
218 .c.obj:
219         $(CPP) $(CPP_PROJ) $<