summaryrefslogtreecommitdiff
path: root/lib/Makefile.b32
blob: 37c2648717f98bb720c1a2b5a9ef923a58a027cc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
############################################################
#
#  Makefile.b32 - Borland's C++ Compiler 5.X
#
#  'lib' directory
#
#  'BCCDIR' has to be set up to point to the base directory
#  of the compiler, i.e. SET BCCDIR = c:\Borland\BCC55
#
#  Initially written by Jaepil Kim, pit@paradise.net.nz
############################################################

!if "$(__MAKE__)" == ""
!error __MAKE__ not defined. Use Borlands's MAKE to process this makefile.
!endif

# Borland's $(MAKEDIR) expands to the path where make.exe is located,
# use this feature to define BCCDIR when user has not defined BCCDIR.
!ifndef BCCDIR
BCCDIR = $(MAKEDIR)\..
!endif

# Edit the path below to point to the base of your Zlib sources.
!ifndef ZLIB_PATH
ZLIB_PATH = ..\..\zlib-1.2.8
!endif

# Edit the path below to point to the base of your OpenSSL package.
!ifndef OPENSSL_PATH
OPENSSL_PATH = ..\..\openssl-1.0.2a
!endif

# Set libcurl static lib, dll and import lib
LIBCURL_LIB    = libcurl.lib
LIBCURL_DLL    = libcurl.dll
LIBCURL_IMPLIB = libcurl_imp.lib

# Setup environment
PP_CMD   = cpp32 -q -P-
CC_CMD   = bcc32 -q -c
LD       = bcc32
RM       = del 2>NUL
MKDIR    = md
RMDIR    = rd /q
LIB      = tlib
IMPLIB   = implib

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
LIBFLAGS = /C /P32
LDFLAGS  = -q -lq -laa -tWD

SRCDIR   = .;.\vtls
OBJDIR   = .\BCC_objs
INCDIRS  = -I.;.\lib;..\include
LINKLIB  = $(BCCDIR)\lib\cw32mt.lib $(BCCDIR)\lib\ws2_32.lib
DEFINES  = -DNDEBUG -DWIN32 -DBUILDING_LIBCURL

# By default SSPI support is enabled for BCC
!ifndef DISABLE_SSPI
DEFINES  = $(DEFINES) -DUSE_WINDOWS_SSPI
!endif

# By default LDAP support is disabled for BCC
!ifndef WITH_LDAP
DEFINES  = $(DEFINES) -DCURL_DISABLE_LDAP
!endif

# ZLIB support is enabled setting WITH_ZLIB=1
!ifdef WITH_ZLIB
DEFINES  = $(DEFINES) -DHAVE_LIBZ -DHAVE_ZLIB_H
INCDIRS  = $(INCDIRS);$(ZLIB_PATH)
LINKLIB  = $(LINKLIB) $(ZLIB_PATH)\zlib.lib
!endif

# SSL support is enabled setting WITH_SSL=1
!ifdef WITH_SSL
DEFINES  = $(DEFINES) -DUSE_OPENSSL
INCDIRS  = $(INCDIRS);$(OPENSSL_PATH)\inc32;$(OPENSSL_PATH)\inc32\openssl
LINKLIB  = $(LINKLIB) $(OPENSSL_PATH)\out32\ssleay32.lib $(OPENSSL_PATH)\out32\libeay32.lib
!endif

.autodepend

.path.c   = $(SRCDIR)
.path.obj = $(OBJDIR)
.path.int = $(OBJDIR)

# Makefile.inc provides the CSOURCES and HHEADERS defines
!include Makefile.inc

# 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.

NOHYPHEN1 = $(CSOURCES:-=_)
NOHYPHEN2 = $(NOHYPHEN1:vtls/=)

OBJECTS = $(NOHYPHEN2:.c=.obj)
PREPROCESSED = $(NOHYPHEN2:.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
	$(PP_CMD) $(CC_FLAGS) $(INCDIRS) $(DEFINES) -o$(@R).int $(<)
	$(CC_CMD) $(CC_FLAGS) -o$(@) $(@R).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)
	@-$(RM) $(PREPROCESSED)
	cd ..
	@-$(RMDIR) $(OBJDIR)
	@-$(RM) $(LIBCURL_LIB)
	@-$(RM) $(LIBCURL_IMPLIB)
	@-$(RM) libcurl.tds

$(OBJDIR):
	@-$(RMDIR) $(OBJDIR)
	@-$(MKDIR) $(OBJDIR)

$(LIBCURL_LIB): $(OBJECTS)
	@-$(RM) $(LIBCURL_LIB)
	$(LIB) $(LIBFLAGS) $@ @&&!
+$(**: = &^
+)
!

$(LIBCURL_DLL) $(LIBCURL_IMPLIB): $(OBJECTS) $(LINKLIB)
	@-$(RM) $(LIBCURL_DLL)
	@-$(RM) $(LIBCURL_IMPLIB)
	$(LD) $(LDFLAGS) -e$(LIBCURL_DLL) @&&!
$(**: = ^
)
!
	$(IMPLIB) $(LIBCURL_IMPLIB) $(LIBCURL_DLL)


# End of Makefile.b32