Makefile.b32: Borland makefile adjustments. Tested with BCC 5.5.1
authorYang Tse <yangsita@gmail.com>
Fri, 19 Jul 2013 10:05:22 +0000 (12:05 +0200)
committerYang Tse <yangsita@gmail.com>
Fri, 19 Jul 2013 10:33:11 +0000 (12:33 +0200)
lib/Makefile.b32
src/Makefile.b32

index 86251ba..7dbb37f 100644 (file)
@@ -52,7 +52,7 @@ LDFLAGS  = -q -lq -laa -tWD
 SRCDIR   = .
 OBJDIR   = .\BCC_objs
 INCDIRS  = -I.;..\include
-LINKLIB  = $(BCCDIR)\lib\cw32mt.lib
+LINKLIB  = $(BCCDIR)\lib\cw32mt.lib $(BCCDIR)\lib\ws2_32.lib
 DEFINES  = -DNDEBUG -DWIN32 -DBUILDING_LIBCURL
 
 # By default SSPI support is enabled for BCC
@@ -88,8 +88,24 @@ LINKLIB  = $(LINKLIB) $(OPENSSL_PATH)\out32\ssleay32.lib $(OPENSSL_PATH)\out32\l
 # Makefile.inc provides the CSOURCES and HHEADERS defines
 !include Makefile.inc
 
-OBJECTS = $(CSOURCES:.c=.obj)
-PREPROCESSED = $(CSOURCES:.c=.int)
+# Borland's command line librarian program TLIB version 4.5 is not capable
+# of building a library when any of its objects contains an hypen in its
+# name, due to a command line parsing bug. In order to workaround this, we
+# build source files with hyphens in their name as objects with underscores
+# using explicit compilation build rules instead of implicit ones.
+
+NOHYPHEN = $(CSOURCES:-=_)
+
+OBJECTS = $(NOHYPHEN:.c=.obj)
+PREPROCESSED = $(NOHYPHEN:.c=.int)
+
+# Borland's command line compiler (BCC32) version 5.5.1 integrated
+# preprocessor has a bug which results in silently generating wrong
+# definitions for libcurl macros such as CURL_OFF_T_C, on the other
+# hand Borland's command line preprocessor (CPP32) version 5.5.1 does
+# not have the bug and achieves proper results. In order to avoid the
+# silent bug we first preprocess source files and later compile the
+# preprocessed result.
 
 .c.obj:
        @-$(RM) $(@R).int
@@ -98,6 +114,21 @@ PREPROCESSED = $(CSOURCES:.c=.int)
 
 all:   $(OBJDIR) $(LIBCURL_LIB) $(LIBCURL_DLL)
 
+asyn_ares.obj: asyn-ares.c
+       @-$(RM) $(@R).int
+       $(PP_CMD) $(CC_FLAGS) $(INCDIRS) $(DEFINES) -o$(@R).int $(?)
+       $(CC_CMD) $(CC_FLAGS) -o$(@) $(@R).int
+
+asyn_thread.obj: asyn-thread.c
+       @-$(RM) $(@R).int
+       $(PP_CMD) $(CC_FLAGS) $(INCDIRS) $(DEFINES) -o$(@R).int $(?)
+       $(CC_CMD) $(CC_FLAGS) -o$(@) $(@R).int
+
+non_ascii.obj: non-ascii.c
+       @-$(RM) $(@R).int
+       $(PP_CMD) $(CC_FLAGS) $(INCDIRS) $(DEFINES) -o$(@R).int $(?)
+       $(CC_CMD) $(CC_FLAGS) -o$(@) $(@R).int
+
 clean:
        cd $(OBJDIR)
        @-$(RM) $(OBJECTS)
@@ -122,7 +153,10 @@ $(LIBCURL_LIB): $(OBJECTS)
 $(LIBCURL_DLL) $(LIBCURL_IMPLIB): $(OBJECTS) $(LINKLIB)
        @-$(RM) $(LIBCURL_DLL)
        @-$(RM) $(LIBCURL_IMPLIB)
-       $(LD) $(LDFLAGS) -e$(LIBCURL_DLL) $**
+       $(LD) $(LDFLAGS) -e$(LIBCURL_DLL) @&&!
+$(**: = ^
+)
+!
        $(IMPLIB) $(LIBCURL_IMPLIB) $(LIBCURL_DLL)
 
 
index 092c35a..b0ee5b6 100644 (file)
@@ -34,11 +34,12 @@ OPENSSL_PATH = ..\..\openssl-0.9.8y
 PROGNAME = curl.exe
 
 # Setup environment
+PP_CMD   = cpp32 -q -P-
 CC_CMD   = bcc32 -q -c
 LD       = bcc32
 RM       = del 2>NUL
 MKDIR    = md
-RMDIR    = rd /q 2>nul
+RMDIR    = rd /q 2>NUL
 COPY     = $(COMSPEC) /c copy /y
 
 CC_FLAGS = -5 -O2 -tWM -w -w-aus -w-ccc -w-dup -w-prc -w-pro -w-rch -w-sig -w-spa -w-inl -w-pia -w-pin -Dinline=__inline
@@ -47,7 +48,7 @@ LDFLAGS  = -q -lq -lap
 SRCDIRS  = .;..\lib
 OBJDIR   = .\BCC_objs
 INCDIRS  = -I.;..\include;..\lib
-LINKLIB  = $(BCCDIR)\lib\cw32mt.lib
+LINKLIB  = $(BCCDIR)\lib\cw32mt.lib $(BCCDIR)\lib\ws2_32.lib
 DEFINES  = -DNDEBUG -DWIN32
 
 !ifdef DYNAMIC
@@ -75,21 +76,34 @@ LINKLIB  = $(LINKLIB) $(OPENSSL_PATH)\out32\ssleay32.lib $(OPENSSL_PATH)\out32\l
 
 .path.c   = $(SRCDIRS)
 .path.obj = $(OBJDIR)
+.path.int = $(OBJDIR)
 
 # Makefile.inc provides the CSOURCES and HHEADERS defines
 !include Makefile.inc
 
 CSOURCES = $(CURL_CFILES) $(CURLX_ONES:../lib/=)
 OBJECTS  = $(CSOURCES:.c=.obj)
+PREPROCESSED = $(CSOURCES:.c=.int)
+
+# Borland's command line compiler (BCC32) version 5.5.1 integrated
+# preprocessor has a bug which results in silently generating wrong
+# definitions for libcurl macros such as CURL_OFF_T_C, on the other
+# hand Borland's command line preprocessor (CPP32) version 5.5.1 does
+# not have the bug and achieves proper results. In order to avoid the
+# silent bug we first preprocess source files and later compile the
+# preprocessed result.
 
 .c.obj:
-       $(CC_CMD) $(CC_FLAGS) $(INCDIRS) $(DEFINES) -o$@ $<
+       @-$(RM) $(@R).int
+       $(PP_CMD) $(CC_FLAGS) $(INCDIRS) $(DEFINES) -o$(@R).int $(<)
+       $(CC_CMD) $(CC_FLAGS) -o$(@) $(@R).int
 
 all:   $(OBJDIR) tool_hugehelp $(PROGNAME)
 
 clean:
        cd $(OBJDIR)
        @-$(RM) $(OBJECTS)
+       @-$(RM) $(PREPROCESSED)
        cd ..
        @-$(RMDIR) $(OBJDIR)
        @-$(RM) $(PROGNAME)
@@ -106,12 +120,15 @@ tool_hugehelp: ..\docs\MANUAL ..\docs\curl.1 mkhelp.pl
        @-$(RM) tool_hugehelp.tmp
 !else
 tool_hugehelp:
-       $(COPY) tool_hugehelp.c.cvs tool_hugehelp.c
+       if exist ..\GIT-INFO $(COPY) tool_hugehelp.c.cvs tool_hugehelp.c
 !endif
 
 $(PROGNAME): $(OBJECTS) $(LIBCURL_LIB) $(LINKLIB)
        @-$(RM) $(PROGNAME)
-       $(LD) $(LDFLAGS) -e$@ $**
+       $(LD) $(LDFLAGS) -e$@ @&&!
+$(**: = ^
+)
+!
 
 
 # End of Makefile.b32