mirror of https://github.com/postgres/postgres
Through some minor changes, I have been able to compile the libpq client libraries on the Win32 platform. Since the libpq communications part has been rewritten, this has become much easier. Enclosed is a patch that will allow at least Microsoft Visual C++ to compile libpq into both a static and a dynamic library. I will take a look at porting the psql frontend as well, but I figured it was a good idea to send in these patches first - so no major changes are done to the files before it gets applied (if it does). Regards, Magnus Haganderpull/50/head
parent
d5283ccd3e
commit
c765b4b052
@ -0,0 +1,6 @@ |
|||||||
|
#define WIN32_LEAN_AND_MEAN |
||||||
|
#include <windows.h> |
||||||
|
BOOL WINAPI DllMain( HINSTANCE hinstDLL, DWORD fdwReason, |
||||||
|
LPVOID lpReserved ){ |
||||||
|
return (TRUE); |
||||||
|
} |
@ -0,0 +1,73 @@ |
|||||||
|
LIBRARY LIBPQ |
||||||
|
DESCRIPTION "Postgres Client Access Library" |
||||||
|
EXPORTS |
||||||
|
PQconnectdb @ 1 |
||||||
|
PQconndefaults @ 2 |
||||||
|
PQsetdbLogin @ 3 |
||||||
|
PQfinish @ 4 |
||||||
|
PQreset @ 5 |
||||||
|
PQdb @ 6 |
||||||
|
PQuser @ 7 |
||||||
|
PQhost @ 8 |
||||||
|
PQoptions @ 9 |
||||||
|
PQport @ 10 |
||||||
|
PQtty @ 11 |
||||||
|
PQstatus @ 12 |
||||||
|
PQerrorMessage @ 13 |
||||||
|
PQsocket @ 14 |
||||||
|
PQtrace @ 15 |
||||||
|
PQuntrace @ 16 |
||||||
|
PQexec @ 17 |
||||||
|
PQnotifies @ 18 |
||||||
|
PQsendQuery @ 19 |
||||||
|
PQgetResult @ 20 |
||||||
|
PQisBusy @ 21 |
||||||
|
PQconsumeInput @ 22 |
||||||
|
PQrequestCancel @ 23 |
||||||
|
PQgetline @ 24 |
||||||
|
PQputline @ 25 |
||||||
|
PQendcopy @ 26 |
||||||
|
PQfn @ 27 |
||||||
|
PQclearAsyncResult @ 28 |
||||||
|
PQresultStatus @ 29 |
||||||
|
PQntuples @ 30 |
||||||
|
PQnfields @ 31 |
||||||
|
PQfname @ 32 |
||||||
|
PQfnumber @ 33 |
||||||
|
PQftype @ 34 |
||||||
|
PQfsize @ 35 |
||||||
|
PQfmod @ 36 |
||||||
|
PQcmdStatus @ 37 |
||||||
|
PQoidStatus @ 38 |
||||||
|
PQcmdTuples @ 39 |
||||||
|
PQgetvalue @ 40 |
||||||
|
PQgetlength @ 41 |
||||||
|
PQgetisnull @ 42 |
||||||
|
PQclear @ 43 |
||||||
|
PQprint @ 44 |
||||||
|
PQdisplayTuples @ 45 |
||||||
|
PQprintTuples @ 46 |
||||||
|
fe_getauthsvc @ 47 |
||||||
|
fe_setauthsvc @ 48 |
||||||
|
fe_getauthname @ 49 |
||||||
|
pqGetc @ 50 |
||||||
|
pqGets @ 51 |
||||||
|
pqPuts @ 52 |
||||||
|
pqGetnchar @ 53 |
||||||
|
pqPutnchar @ 54 |
||||||
|
pqGetInt @ 55 |
||||||
|
pqPutInt @ 56 |
||||||
|
pqReadData @ 57 |
||||||
|
pqFlush @ 58 |
||||||
|
pqWait @ 59 |
||||||
|
lo_open @ 60 |
||||||
|
lo_close @ 61 |
||||||
|
lo_read @ 62 |
||||||
|
lo_write @ 63 |
||||||
|
lo_lseek @ 64 |
||||||
|
lo_creat @ 65 |
||||||
|
lo_tell @ 66 |
||||||
|
lo_unlink @ 67 |
||||||
|
lo_import @ 68 |
||||||
|
lo_export @ 69 |
||||||
|
|
@ -0,0 +1,35 @@ |
|||||||
|
#include <winsock.h> |
||||||
|
|
||||||
|
/*
|
||||||
|
* strcasecmp() is not in Windows, stricmp is, though |
||||||
|
*/ |
||||||
|
#define strcasecmp(a,b) stricmp(a,b) |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define NO_UNISTD_H |
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Some compat functions
|
||||||
|
*/ |
||||||
|
#define open(a,b,c) _open(a,b,c) |
||||||
|
#define read(a,b,c) _read(a,b,c) |
||||||
|
#define write(a,b,c) _write(a,b,c) |
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* crypt not available (yet) |
||||||
|
*/ |
||||||
|
#define crypt(a,b) a |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Parts of config.h that you get with autoconf on other systems |
||||||
|
*/ |
||||||
|
|
||||||
|
/*
|
||||||
|
* Default port to connect to |
||||||
|
*/ |
||||||
|
#define DEF_PGPORT "5432" |
@ -0,0 +1,112 @@ |
|||||||
|
# Makefile for Microsoft Visual C++ 5.0 (or compat)
|
||||||
|
|
||||||
|
# Will build a Win32 static library (non-debug) libpq.lib
|
||||||
|
# and a Win32 dynamic library (non-debug) libpq.dll with import library libpqdll.lib
|
||||||
|
|
||||||
|
|
||||||
|
!IF "$(OS)" == "Windows_NT" |
||||||
|
NULL=
|
||||||
|
!ELSE
|
||||||
|
NULL=nul
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
CPP=cl.exe
|
||||||
|
|
||||||
|
OUTDIR=.\Release
|
||||||
|
INTDIR=.\Release
|
||||||
|
# Begin Custom Macros
|
||||||
|
OutDir=.\Release
|
||||||
|
# End Custom Macros
|
||||||
|
|
||||||
|
ALL : "$(OUTDIR)\libpq.lib" "$(OUTDIR)\libpq.dll" |
||||||
|
|
||||||
|
CLEAN : |
||||||
|
-@erase "$(INTDIR)\dllist.obj"
|
||||||
|
-@erase "$(INTDIR)\fe-auth.obj"
|
||||||
|
-@erase "$(INTDIR)\fe-connect.obj"
|
||||||
|
-@erase "$(INTDIR)\fe-exec.obj"
|
||||||
|
-@erase "$(INTDIR)\fe-lobj.obj"
|
||||||
|
-@erase "$(INTDIR)\fe-misc.obj"
|
||||||
|
-@erase "$(INTDIR)\fe-print.obj"
|
||||||
|
-@erase "$(OUTDIR)\libpqdll.obj"
|
||||||
|
-@erase "$(INTDIR)\vc50.idb"
|
||||||
|
-@erase "$(OUTDIR)\libpq.lib"
|
||||||
|
-@erase "$(OUTDIR)\libpq.dll"
|
||||||
|
|
||||||
|
"$(OUTDIR)" : |
||||||
|
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||||
|
|
||||||
|
CPP_PROJ=/nologo /ML /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D\
|
||||||
|
"WIN32" /D "_WINDOWS" /Fp"$(INTDIR)\libpq.pch" /YX\
|
||||||
|
/Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
|
||||||
|
CPP_OBJS=.\Release/
|
||||||
|
CPP_SBRS=.
|
||||||
|
|
||||||
|
LIB32=link.exe -lib
|
||||||
|
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\libpq.lib"
|
||||||
|
LIB32_OBJS= \
|
||||||
|
"$(INTDIR)\dllist.obj" \
|
||||||
|
"$(INTDIR)\fe-auth.obj" \
|
||||||
|
"$(INTDIR)\fe-connect.obj" \
|
||||||
|
"$(INTDIR)\fe-exec.obj" \
|
||||||
|
"$(INTDIR)\fe-lobj.obj" \
|
||||||
|
"$(INTDIR)\fe-misc.obj" \
|
||||||
|
"$(INTDIR)\fe-print.obj"
|
||||||
|
|
||||||
|
LINK32=link.exe
|
||||||
|
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
|
||||||
|
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib wsock32.lib\
|
||||||
|
odbccp32.lib /nologo /subsystem:windows /dll /incremental:no\
|
||||||
|
/pdb:"$(OUTDIR)\libpqdll.pdb" /machine:I386 /out:"$(OUTDIR)\libpq.dll"\
|
||||||
|
/implib:"$(OUTDIR)\libpqdll.lib" /def:libpqdll.def
|
||||||
|
LINK32_OBJS= \
|
||||||
|
"$(INTDIR)\libpqdll.obj" \
|
||||||
|
"$(OUTDIR)\libpq.lib"
|
||||||
|
|
||||||
|
|
||||||
|
"$(OUTDIR)\libpq.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS) |
||||||
|
$(LIB32) @<<
|
||||||
|
$(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
|
||||||
|
<< |
||||||
|
|
||||||
|
"$(OUTDIR)\libpq.dll" : "$(OUTDIR)" "$(OUTDIR)\libpqdll.obj" "$(INTDIR)\libpqdll.obj" |
||||||
|
$(LINK32) @<<
|
||||||
|
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||||
|
<< |
||||||
|
|
||||||
|
|
||||||
|
"$(OUTDIR)\dllist.obj" : ..\..\backend\lib\dllist.c |
||||||
|
$(CPP) @<<
|
||||||
|
$(CPP_PROJ) ..\..\backend\lib\dllist.c
|
||||||
|
<< |
||||||
|
|
||||||
|
|
||||||
|
.c{$(CPP_OBJS)}.obj:: |
||||||
|
$(CPP) @<<
|
||||||
|
$(CPP_PROJ) $<
|
||||||
|
<< |
||||||
|
|
||||||
|
.cpp{$(CPP_OBJS)}.obj:: |
||||||
|
$(CPP) @<<
|
||||||
|
$(CPP_PROJ) $<
|
||||||
|
<< |
||||||
|
|
||||||
|
.cxx{$(CPP_OBJS)}.obj:: |
||||||
|
$(CPP) @<<
|
||||||
|
$(CPP_PROJ) $<
|
||||||
|
<< |
||||||
|
|
||||||
|
.c{$(CPP_SBRS)}.sbr:: |
||||||
|
$(CPP) @<<
|
||||||
|
$(CPP_PROJ) $<
|
||||||
|
<< |
||||||
|
|
||||||
|
.cpp{$(CPP_SBRS)}.sbr:: |
||||||
|
$(CPP) @<<
|
||||||
|
$(CPP_PROJ) $<
|
||||||
|
<< |
||||||
|
|
||||||
|
.cxx{$(CPP_SBRS)}.sbr:: |
||||||
|
$(CPP) @<<
|
||||||
|
$(CPP_PROJ) $<
|
||||||
|
<< |
@ -0,0 +1,17 @@ |
|||||||
|
# Makefile for Microsoft Visual C++ 5.0 (or compat)
|
||||||
|
|
||||||
|
# Top-file makefile for Win32 parts of postgresql.
|
||||||
|
|
||||||
|
# Note that most parts are not ported to Win32!
|
||||||
|
|
||||||
|
!IF "$(OS)" == "Windows_NT" |
||||||
|
NULL=
|
||||||
|
!ELSE
|
||||||
|
NULL=nul
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
ALL: |
||||||
|
cd interfaces\libpq
|
||||||
|
nmake /f win32.mak
|
||||||
|
cd ..\..
|
||||||
|
echo All Win32 parts have been built!
|
Loading…
Reference in new issue