Re: Borland c++ compile problems...

Steve Holdoway <[email protected]>
Newsgroups gmane.comp.db.postgresql.devel.win32
Message-ID <[email protected]>
Bruce Momjian wrote:

>Steve Holdoway wrote:
>  
>
>>Bruce Momjian wrote:
>>
>>    
>>
>>>Steve Holdoway wrote:
>>> 
>>>
>>>      
>>>
>>>>Sorry to be a pest, and all that. However, it looks like make needs to 
>>>>be run in src\port, to create pg_config_paths.h, and compile stuff to 
>>>>resolve externals _set_noblock, _pg_strcasecmp, _pg_tolower, and _popen 
>>>>(? bit worried about that one!)
>>>>
>>>>I had a go at rewriting an existing bcc32.mak, but just seemed to 
>>>>generate more errors!
>>>>   
>>>>
>>>>        
>>>>
>>>Uh, I don't see how those would fail.  What errors are you seeing?
>>>
>>> 
>>>
>>>      
>>>
>>Well, in the port subdirectory, one of the things that is generated by 
>>the makefile is pg_config_paths.h. Without this, libpq will not compile. 
>>As I stated above, cobbling this together manually then gets me to the 
>>place where the aforementioned external references are not resolved. All 
>>are in source files in the port directory.
>>
>>The errors I'm seeing are all caused by includes not being found, etc. I 
>>don't know what to do when they are ones like strings.h, which I do not 
>>have either in the snapshot source tree, or in the Borland bcc 5.5 tree.
>>
>>I also don't know how you want the above files building... into a 
>>library, static or dynamic/straight object code, etc. There is also no 
>>listing in the current bcc32.mak files to include them into the libpq 
>>dll generation.
>>    
>>
>
>OK, if you look at the last few commits to interfaces/libpq/win32.mak,
>you will see changes for pg_config_paths.h and for thread safety.  Can
>you look at those changes, merge them into bcc.mak.  There might be
>other changes in there you want to add to bcc.mak too.
>
>  
>
OK, having no M$ diff, I attach files src\interfaces\libpq\bcc32.mak and 
src\interfaces\libpq\win32.h

bcc32.mak incorporates the changes in win32.mak, and adds a couple of 
extra source files from the ..\..\port directory, and win32.h was used 
to #define popen -> _popen.

All seems to work after a *very* cursory test!

Can I get back to the land of proper slashes now???

Cheers,

Steve


---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
      subscribe-nomail command to [email protected] so that your
      message can get through to the mailing list cleanly
bcc32.mak (text/plain, 4.5 KB)
# Makefile for Borland C++ 5.5

# Will build a Win32 static library libpq.lib
#        and a Win32 dynamic library libpq.dll with import library libpqdll.lib

# Borland C++ base install directory goes here
BCB=c:\Borland\Bcc55

!MESSAGE Building the Win32 DLL and Static Library...
!MESSAGE
!IF "$(CFG)" == ""
CFG=Release
!MESSAGE No configuration specified. Defaulting to Release.
!MESSAGE
!ELSE
!MESSAGE Configuration "$(CFG)"
!MESSAGE
!ENDIF

!IF "$(CFG)" != "Release" && "$(CFG)" != "Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running MAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE make  -DCFG=[Release | Debug] /f bcc32.mak
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "Release" (Win32 Release DLL and Static Library)
!MESSAGE "Debug" (Win32 Debug DLL and Static Library)
!MESSAGE
!ERROR An invalid configuration was specified.
!ENDIF

!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE 
NULL=nul
!ENDIF 

!IF "$(CFG)" == "Debug"
DEBUG=1
OUTDIR=.\Debug
INTDIR=.\Debug
!else
OUTDIR=.\Release
INTDIR=.\Release
!endif

USERDEFINES=FRONTEND;NDEBUG;WIN32;_WINDOWS;HAVE_VSNPRINTF;HAVE_STRDUP;

CPP=bcc32.exe
CPP_PROJ = -I$(BCB)\include;..\..\include -WD -c -D$(USERDEFINES) -tWM \
		-a8 -X -w-use -w-par -w-pia -w-csu -w-aus -w-ccc

!IFDEF DEBUG
CPP_PROJ	= $(CPP_PROJ) -Od -r- -k -v -y -vi- -D_DEBUG
!else
CPP_PROJ        = $(CPP_PROJ) -O -Oi -OS -DNDEBU
!endif

LIB32=tlib.exe
LIB32_FLAGS= 
LIB32_OBJS= \
	"$(OUTDIR)\win32.obj" \
	"$(INTDIR)\getaddrinfo.obj" \
	"$(INTDIR)\thread.obj" \
	"$(INTDIR)\inet_aton.obj" \
	"$(INTDIR)\crypt.obj" \
	"$(INTDIR)\path.obj" \
        "$(INTDIR)\noblock.obj" \
        "$(INTDIR)\pgstrcasecmp.obj" \
	"$(INTDIR)\dllist.obj" \
	"$(INTDIR)\md5.obj" \
	"$(INTDIR)\ip.obj" \
	"$(INTDIR)\fe-auth.obj" \
	"$(INTDIR)\fe-protocol2.obj" \
	"$(INTDIR)\fe-protocol3.obj" \
	"$(INTDIR)\fe-connect.obj" \
	"$(INTDIR)\fe-exec.obj" \
	"$(INTDIR)\fe-lobj.obj" \
	"$(INTDIR)\fe-misc.obj" \
	"$(INTDIR)\fe-print.obj" \
	"$(INTDIR)\fe-secure.obj" \
	"$(INTDIR)\pqexpbuffer.obj" \
	"$(INTDIR)\wchar.obj" \
        "$(INTDIR)\encnames.obj"


RSC=brcc32.exe
RSC_PROJ=-l 0x409 -i$(BCB)\include -fo"$(INTDIR)\libpq.res"

LINK32=ilink32.exe
LINK32_FLAGS = -Gn -L$(BCB)\lib;$(INTDIR); -x -Tpd -v
LINK32_OBJS= "$(INTDIR)\libpqdll.obj"
	
# ---------------------------------------------------------------------------

.path.obj = $(INTDIR)
.path.c = .;..\..\port;..\..\backend\libpq;..\..\backend\lib;..\..\backend\utils\mb

# ---------------------------------------------------------------------------

ALL: config "$(OUTDIR)" "$(OUTDIR)\blibpq.dll" "$(OUTDIR)\blibpq.lib"

CLEAN :
	-@erase "$(INTDIR)\getaddrinfo.obj"
	-@erase "$(INTDIR)\thread.obj"
	-@erase "$(INTDIR)\inet_aton.obj"
	-@erase "$(INTDIR)\crypt.obj"
	-@erase "$(INTDIR)\path.obj"
	-@erase "$(INTDIR)\dllist.obj"
	-@erase "$(INTDIR)\md5.obj"
	-@erase "$(INTDIR)\ip.obj"
	-@erase "$(INTDIR)\fe-auth.obj"
	-@erase "$(INTDIR)\fe-protocol2.obj"
	-@erase "$(INTDIR)\fe-protocol3.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 "$(INTDIR)\fe-secure.obj"
	-@erase "$(INTDIR)\pqexpbuffer.obj"
	-@erase "$(OUTDIR)\libpqdll.obj"
	-@erase "$(OUTDIR)\win32.obj"
	-@erase "$(INTDIR)\wchar.obj"
	-@erase "$(INTDIR)\encnames.obj"
        -@erase "$(INTDIR)\noblock.obj"
        -@erase "$(INTDIR)\pgstrcasecmp.obj"
	-@erase "$(OUTDIR)\libpq.res"
	-@erase "$(OUTDIR)\blibpq.lib"
	-@erase "$(OUTDIR)\blibpqdll.lib"
	-@erase "$(OUTDIR)\blibpq.dll"
	-@erase "$(OUTDIR)\blibpq.tds"

config: ..\..\include\pg_config.h pthread.h pg_config_paths.h

..\..\include\pg_config.h: ..\..\include\pg_config.h.win32
	copy ..\..\include\pg_config.h.win32 ..\..\include\pg_config.h

pthread.h: pthread.h.win32
	copy pthread.h.win32 pthread.h

pg_config_paths.h: win32.mak
	echo #define SYSCONFDIR "" >pg_config_paths.h

"$(OUTDIR)" :
	@if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"

"$(OUTDIR)\blibpq.dll": "$(OUTDIR)\blibpq.lib" $(LINK32_OBJS) "$(INTDIR)\libpq.res" blibpqdll.def 
	$(LINK32) @&&!
	$(LINK32_FLAGS) +
        c0d32.obj $(LINK32_OBJS), +
	$@,, +
        "$(OUTDIR)\blibpq.lib" import32.lib cw32mti.lib, +
	blibpqdll.def,"$(INTDIR)\libpq.res"
!
	implib -w "$(OUTDIR)\blibpqdll.lib" blibpqdll.def $@

"$(INTDIR)\libpq.res" : "$(INTDIR)" libpq.rc
    $(RSC) $(RSC_PROJ) libpq.rc

"$(OUTDIR)\blibpq.lib": $(LIB32_OBJS)
	$(LIB32) $@ @&&!
+-"$(**: =" &^
+-")"
!


.c.obj:
	$(CPP) -o"$(INTDIR)\$&" $(CPP_PROJ) $<
win32.h (text/x-c-header, 756 B)
#ifndef __win32_h_included
#define __win32_h_included

/*
 * Some compatibility functions
 */
#ifdef __BORLANDC__
#define _timeb timeb
#define _ftime(a) ftime(a)
#define _errno errno
#define popen(a,b) _popen(a,b)
#else
/* open provided elsewhere */
#define close(a) _close(a)
#define read(a,b,c) _read(a,b,c)
#define write(a,b,c) _write(a,b,c)
#endif

#define vsnprintf(a,b,c,d) _vsnprintf(a,b,c,d)
#define snprintf _snprintf

#undef EAGAIN					/* doesn't apply on sockets */
#undef EINTR
#define EINTR WSAEINTR
#define EWOULDBLOCK WSAEWOULDBLOCK
#define ECONNRESET WSAECONNRESET
#define EINPROGRESS WSAEINPROGRESS

/*
 * support for handling Windows Socket errors
 */
extern const char *winsock_strerror(int err, char *strerrbuf, size_t buflen);

#endif
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.