aboutsummaryrefslogtreecommitdiff
path: root/src/Makefile.Watcom
diff options
context:
space:
mode:
authorGuenter Knauf <lists@gknw.net>2010-07-29 03:18:40 +0200
committerGuenter Knauf <lists@gknw.net>2010-07-29 03:18:40 +0200
commitcfbb351e22a9f3d3a99317895975d368a1eedf31 (patch)
treed0ebc6d5b2d6789124ac58c1db9966d411d2efee /src/Makefile.Watcom
parent11f53b9a18bc721ac966b8a6794d9b891bcde589 (diff)
Watcom makefiles overhaul.
- make both libcurl and curl makefiles use register calling convention (previously libcurl had stack calling convention). - added include paths to the Watcom headers so its no longer required to set the environment vars for this. - added -wcd=201 to supress compiler warning about unreachable code. - use macros for all tools, and removed dependency on GNU tools like rm. - make ipv6 and debug builds controlable via env vars and so make them optional instead of default. - commented WINLDAPAPI and WINBERAPI since they broke with OW 1.8, and it seems they're not needed (anymore?). - added rule for hugehelp.c.cvs so that it will be created when not already exist - this is required for building from a release tarball since there we have no hugehelp.c.cvs, thus compilation broke. - removed C_ARG creation from lib/Makefile.Watcom and use CFLAGS directly as done too in src/Makefile.Watcom - this has the benefit that we will see all active cflags and defines during compile. - added LINK-ARG to src/Makefile.Watcom in order to better control linker input. - a couple of other minor makefile tweaks here and there ... - added largefile support for Watcom builds to config-win32.h. Not yet tested if it really works, but should since Win32 supports it. - added loaddll stuff to speed up builds if supported.
Diffstat (limited to 'src/Makefile.Watcom')
-rw-r--r--src/Makefile.Watcom104
1 files changed, 82 insertions, 22 deletions
diff --git a/src/Makefile.Watcom b/src/Makefile.Watcom
index 423f946b1..cae281e67 100644
--- a/src/Makefile.Watcom
+++ b/src/Makefile.Watcom
@@ -3,22 +3,62 @@
# G. Vanem <gvanem@broadpark.no>
#
-CC = wcc386
+!ifndef %watcom
+!error WATCOM environment variable not set!
+!else
+SYS_INCL = -I$(%watcom)\h\nt -I$(%watcom)\h
+SYS_LIBS = $(%watcom)\lib386\nt;$(%watcom)\lib386
+!endif
-CFLAGS = -3r -mf -d3 -hc -zff -zgf -zq -zm -s -fr=con -w2 -fpi -oilrtfm &
- -bt=nt -d+ -dWIN32 -dHAVE_STRTOLL -dDEBUGBUILD -dENABLE_IPV6 &
- -dHAVE_WINSOCK2_H -I..\include -I..\lib
+TARGETS = libcurl_wc.dll libcurl_wc_imp.lib libcurl_wc.lib
-OBJ_DIR = WC_Win32.obj
+CC = wcc386
+LD = wlink
+RC = wrc
+AR = wlib
+
+!ifdef __LOADDLL__
+! loaddll wcc386 wccd386
+! loaddll wpp386 wppd386
+! loaddll wlink wlinkd
+! loaddll wlib wlibd
+!endif
+
+MD = mkdir
+RM = del /q /f >NUL 2>&1
+RD = rmdir /q /s >NUL 2>&1
+CP = copy
+
+CFLAGS = -3r -mf -hc -zff -zgf -zq -zm -s -fr=con -w2 -fpi -oilrtfm &
+ -wcd=201 -bt=nt -d+ -dWIN32 -dHAVE_STRTOLL &
+ -I..\include -I..\lib $(SYS_INCL)
+
+!ifdef %debug
+DEBUG = -dDEBUG=1 -dDEBUGBUILD
+CFLAGS += -d3 $(DEBUG)
+!else
+CFLAGS += -d0
+!endif
+
+!ifdef %use_ipv6
+CFLAGS += -d_WIN32_WINNT=0x0501 -dENABLE_IPV6
+!endif
+
+OBJ_DIR = WC_Win32.obj
+LINK_ARG = $(OBJ_DIR)\wlink.arg
# Unfortunately, we can't include Makefile.inc here because wmake doesn't
# use backslash as the line continuation character by default
CURL_SOURCES = main.c hugehelp.c urlglob.c writeout.c writeenv.c &
getpass.c homedir.c curlutil.c os-specific.c
-CURLX_SOURCES = rawstr.c
+CURLX_SOURCES = rawstr.c nonblock.c
-OBJS = $(CURL_SOURCES:.c=.obj) $(CURLX_SOURCES:.c=.obj)
+OBJS = $(CURL_SOURCES:.c=.obj)
+!ifndef %curl_static
+CFLAGS += -DCURL_STATICLIB
+OBJS += $(CURLX_SOURCES:.c=.obj)
+!endif
OBJS = $OBJ_DIR\$(OBJS: = $OBJ_DIR\)
RESOURCE = $(OBJ_DIR)\curl.res
@@ -27,38 +67,57 @@ all: hugehelp.c $(OBJ_DIR) curl.exe .SYMBOLIC
@echo Welcome to cURL
hugehelp.c: hugehelp.c.cvs
- copy hugehelp.c.cvs hugehelp.c
+ $(CP) $[@ $^@
-$(OBJ_DIR):
- mkdir $(OBJ_DIR)
+hugehelp.c.cvs: .EXISTSONLY
+ $(CP) hugehelp.c $^@
-curl.exe: $(OBJS) $(RESOURCE)
- wlink name $@ system nt file { $(OBJS) } &
- option quiet, map, caseexact, eliminate, res=$(RESOURCE) &
- libpath $(%watcom)\lib386;$(%watcom)\lib386\nt &
- library ..\lib\libcurl_wc_imp.lib, clib3r.lib, ws2_32.lib
+$(OBJ_DIR):
+ -$(MD) $^@
+
+curl.exe: $(OBJS) $(RESOURCE) $(LINK_ARG)
+ $(LD) name $^@ @$(LINK_ARG)
+
+$(LINK_ARG): $(__MAKEFILES__)
+ %create $^@
+ @%append $^@ system nt
+ @%append $^@ file { $(OBJS) }
+ @%append $^@ option quiet, map, caseexact, eliminate,
+ @%append $^@ res=$(RESOURCE) libpath $(SYS_LIBS)
+# @%append $^@ library clib3r.lib
+!ifdef %curl_static
+ @%append $^@ library ..\lib\libcurl_wc.lib
+!else
+ @%append $^@ library ..\lib\libcurl_wc_imp.lib
+!endif
+!ifeq USE_WATT32 1
+ @%append $^@ library $(%watt_root)\lib\wattcpw_imp.lib
+!else
+ @%append $^@ library ws2_32.lib
+!endif
clean: .SYMBOLIC
- - rm -f $(OBJS) $(RESOURCE)
+ -$(RM) $(OBJS)
+ -$(RM) $(RESOURCE) $(LINK_ARG)
vclean realclean: clean .SYMBOLIC
- - rm -f curl.exe curl.map hugehelp.c
- - rmdir $(OBJ_DIR)
+ -$(RD) $(OBJ_DIR)
+ -$(RM) curl.exe curl.map hugehelp.c
$(RESOURCE): curl.rc
- wrc -dDEBUGBUILD=1 -q -r -zm -I..\include -fo=$@ curl.rc
+ $(RC) $(DEBUG) -q -r -zm -I..\include $(SYS_INCL) $[@ -fo=$^@
.ERASE
.c{$(OBJ_DIR)}.obj:
- $(CC) $[@ $(CFLAGS) -fo=$@
+ $(CC) $(CFLAGS) $[@ -fo=$^@
.ERASE
$(OBJ_DIR)\rawstr.obj: ..\lib\rawstr.c
- $(CC) $[@ $(CFLAGS) -fo=$@
+ $(CC) $(CFLAGS) $[@ -fo=$^@
.ERASE
$(OBJ_DIR)\nonblock.obj: ..\lib\nonblock.c
- $(CC) $[@ $(CFLAGS) -fo=$@
+ $(CC) $(CFLAGS) $[@ -fo=$^@
#
# Dependencies based on "gcc -MM .."
@@ -127,3 +186,4 @@ $(OBJ_DIR)\nonblock.obj: ..\lib\nonblock.c ..\lib\setup.h ..\lib\config-win32.h
..\lib\strerror.h ..\lib\urldata.h ..\lib\cookie.h ..\lib\formdata.h &
..\lib\timeval.h ..\lib\http_chunks.h ..\lib\hostip.h ..\lib\hash.h &
..\lib\llist.h ..\lib\splay.h ..\include\curl\mprintf.h ..\lib\nonblock.h
+