From cfbb351e22a9f3d3a99317895975d368a1eedf31 Mon Sep 17 00:00:00 2001 From: Guenter Knauf Date: Thu, 29 Jul 2010 03:18:40 +0200 Subject: 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. --- src/Makefile.Watcom | 104 +++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 82 insertions(+), 22 deletions(-) (limited to 'src/Makefile.Watcom') 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 # -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 + -- cgit v1.2.3