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.
This commit is contained in:
Родитель
11f53b9a18
Коммит
cfbb351e22
|
@ -3,38 +3,76 @@
|
|||
# G. Vanem <gvanem@broadpark.no>
|
||||
#
|
||||
|
||||
!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
|
||||
|
||||
TARGETS = libcurl_wc.dll libcurl_wc_imp.lib libcurl_wc.lib
|
||||
|
||||
CC = wcc386
|
||||
LD = wlink
|
||||
RC = wrc
|
||||
AR = wlib
|
||||
|
||||
CFLAGS = -3s -mf -d3 -hc -zff -zgf -zq -zm -zc -s -fr=con -w2 -fpi -oilrtfm -bt=nt &
|
||||
-bd -d+ -dWIN32 -dCURL_CA_BUNDLE=getenv("CURL_CA_BUNDLE") &
|
||||
-dBUILDING_LIBCURL -dHAVE_SPNEGO=1 -dENABLE_IPV6 &
|
||||
-dDEBUG=1 -dDEBUGBUILD -d_WIN32_WINNT=0x0501 -dWINBERAPI=__declspec(cdecl) &
|
||||
-dWINLDAPAPI=__declspec(cdecl) -I. -I..\include
|
||||
!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 -zc -s -fr=con -w2 -fpi -oilrtfm &
|
||||
-wcd=201 -bt=nt -bd -d+ -dWIN32 -dCURL_WANTS_CA_BUNDLE_ENV &
|
||||
-dBUILDING_LIBCURL -dHAVE_SPNEGO=1 -I. -I..\include $(SYS_INCL)
|
||||
#CFLAGS += -dWINBERAPI=__declspec(cdecl) -dWINLDAPAPI=__declspec(cdecl)
|
||||
|
||||
!ifdef %debug
|
||||
DEBUG = -dDEBUG=1 -dDEBUGBUILD
|
||||
CFLAGS += -d3 $(DEBUG)
|
||||
!else
|
||||
CFLAGS += -d0
|
||||
!endif
|
||||
|
||||
!ifdef %use_ipv6
|
||||
CFLAGS += -d_WIN32_WINNT=0x0501 -dENABLE_IPV6
|
||||
!endif
|
||||
|
||||
#
|
||||
# Change to suite.
|
||||
#
|
||||
ZLIB_ROOT = ..\..\..\zlib-1.2.3
|
||||
USE_ZLIB = 0
|
||||
USE_ARES = 0
|
||||
USE_WATT32 = 0
|
||||
!ifdef %zlib_root
|
||||
ZLIB_ROOT = $(%zlib_root)
|
||||
!else
|
||||
ZLIB_ROOT = ..\..\zlib-1.2.5
|
||||
!endif
|
||||
|
||||
!ifeq USE_ZLIB 1
|
||||
!ifdef %ares_root
|
||||
ARES_ROOT = $(%ares_root)
|
||||
!else
|
||||
ARES_ROOT = ..\ares
|
||||
!endif
|
||||
|
||||
!ifdef %use_zlib
|
||||
CFLAGS += -dHAVE_ZLIB_H -dHAVE_LIBZ -I$(ZLIB_ROOT)
|
||||
!endif
|
||||
|
||||
!ifeq USE_ARES 1
|
||||
CFLAGS += -dUSE_ARES -I..\ares
|
||||
!ifdef %use_ares
|
||||
CFLAGS += -dUSE_ARES -I$(ARES_ROOT)
|
||||
!endif
|
||||
|
||||
!ifeq USE_WATT32 1
|
||||
!ifdef %use_watt32
|
||||
CFLAGS += -dUSE_WATT32 -I$(%watt_root)\inc
|
||||
!endif
|
||||
|
||||
OBJ_BASE = WC_Win32.obj
|
||||
C_ARG = $(OBJ_BASE)\wcc386.arg
|
||||
LINK_ARG = $(OBJ_BASE)\dyn\wlink.arg
|
||||
LIB_ARG = $(OBJ_BASE)\stat\wlib.arg
|
||||
|
||||
|
@ -50,7 +88,7 @@ CSOURCES = file.c timeval.c base64.c hostip.c progress.c formdata.c &
|
|||
http_negotiate.c http_ntlm.c inet_pton.c strtoofft.c strerror.c &
|
||||
hostares.c hostasyn.c hostip4.c hostip6.c hostsyn.c hostthre.c &
|
||||
inet_ntop.c parsedate.c select.c gtls.c sslgen.c tftp.c splay.c &
|
||||
strdup.c socks.c ssh.c nss.c qssl.c rawstr.c curl_addrinfo.c &
|
||||
strdup.c socks.c ssh.c nss.c qssl.c rawstr.c curl_addrinfo.c &
|
||||
socks_gssapi.c socks_sspi.c curl_sspi.c slist.c nonblock.c &
|
||||
curl_memrchr.c imap.c pop3.c smtp.c pingpong.c rtsp.c curl_threads.c &
|
||||
warnless.c hmac.c polarssl.c curl_rtmp.c openldap.c
|
||||
|
@ -69,67 +107,66 @@ OBJS_DYN = $+ $(OBJS) $-
|
|||
|
||||
RESOURCE = $(OBJ_BASE)\dyn\libcurl.res
|
||||
|
||||
all: $(OBJ_BASE) $(C_ARG) $(TARGETS) .SYMBOLIC
|
||||
all: $(OBJ_BASE) $(TARGETS) .SYMBOLIC
|
||||
@echo Welcome to libcurl
|
||||
|
||||
$(OBJ_BASE):
|
||||
- mkdir $(OBJ_BASE)
|
||||
- mkdir $(OBJ_BASE)\stat
|
||||
- mkdir $(OBJ_BASE)\dyn
|
||||
-$(MD) $^@
|
||||
-$(MD) $^@\stat
|
||||
-$(MD) $^@\dyn
|
||||
|
||||
libcurl_wc.dll libcurl_wc_imp.lib: $(OBJS_DYN) $(RESOURCE) $(LINK_ARG)
|
||||
wlink name libcurl_wc.dll @$(LINK_ARG)
|
||||
$(LD) name libcurl_wc.dll @$(LINK_ARG)
|
||||
|
||||
libcurl_wc.lib: $(OBJS_STAT) $(LIB_ARG)
|
||||
wlib -q -b- c $@ @$(LIB_ARG)
|
||||
$(AR) -q -b- c $^@ @$(LIB_ARG)
|
||||
|
||||
clean: .SYMBOLIC
|
||||
- rm -f $(OBJS_STAT) $(OBJS_DYN) $(RESOURCE) $(C_ARG) $(LINK_ARG) $(LIB_ARG)
|
||||
-$(RM) $(OBJS_STAT)
|
||||
-$(RM) $(OBJS_DYN)
|
||||
-$(RM) $(RESOURCE) $(LINK_ARG) $(LIB_ARG)
|
||||
|
||||
vclean realclean: clean .SYMBOLIC
|
||||
- rm -f $(TARGETS) libcurl_wc.map
|
||||
- rmdir $(OBJ_BASE)\stat
|
||||
- rmdir $(OBJ_BASE)\dyn
|
||||
- rmdir $(OBJ_BASE)
|
||||
-$(RM) $(TARGETS) libcurl_wc.map
|
||||
-$(RD) $(OBJ_BASE)\stat
|
||||
-$(RD) $(OBJ_BASE)\dyn
|
||||
-$(RD) $(OBJ_BASE)
|
||||
|
||||
.ERASE
|
||||
$(RESOURCE): libcurl.rc
|
||||
wrc -dDEBUGBUILD=1 -q -r -zm -I..\include -fo=$@ libcurl.rc
|
||||
$(RC) $(DEBUG) -q -r -zm -I..\include $(SYS_INCL) $[@ -fo=$^@
|
||||
|
||||
.ERASE
|
||||
.c{$(OBJ_BASE)\dyn}.obj:
|
||||
$(CC) $[@ @$(C_ARG) -fo=$@
|
||||
$(CC) $(CFLAGS) $[@ -fo=$^@
|
||||
|
||||
.ERASE
|
||||
.c{$(OBJ_BASE)\stat}.obj:
|
||||
$(CC) $[@ @$(C_ARG) -DCURL_STATICLIB -fo=$@
|
||||
|
||||
$(C_ARG): $(__MAKEFILES__)
|
||||
%create $^@
|
||||
%append $^@ $(CFLAGS)
|
||||
$(CC) $(CFLAGS) -DCURL_STATICLIB $[@ -fo=$^@
|
||||
|
||||
$(LINK_ARG): $(__MAKEFILES__)
|
||||
%create $^@
|
||||
@%append $^@ system nt dll
|
||||
@%append $^@ file { $(OBJS_DYN) }
|
||||
@%append $^@ option quiet, map, caseexact, eliminate, implib=libcurl_wc_imp.lib,
|
||||
@%append $^@ res=$(RESOURCE) libpath $(%watcom)\lib386;$(%watcom)\lib386\nt
|
||||
@%append $^@ library clib3s.lib, wldap32.lib
|
||||
!ifeq USE_WATT32 1
|
||||
@%append $^@ res=$(RESOURCE) libpath $(SYS_LIBS)
|
||||
# @%append $^@ library clib3r.lib
|
||||
@%append $^@ library wldap32.lib
|
||||
!ifdef %use_watt32
|
||||
@%append $^@ library $(%watt_root)\lib\wattcpw_imp.lib
|
||||
!else
|
||||
@%append $^@ library ws2_32.lib
|
||||
!endif
|
||||
!ifeq USE_ZLIB 1
|
||||
!ifdef %use_zlib
|
||||
@%append $^@ library $(ZLIB_ROOT)\zlib.lib
|
||||
!endif
|
||||
!ifeq USE_ARES 1
|
||||
@%append $^@ library ..\ares\cares.lib
|
||||
!ifdef %use_ares
|
||||
@%append $^@ library $(ARES_ROOT)\cares.lib
|
||||
!endif
|
||||
|
||||
$(LIB_ARG): $(__MAKEFILES__)
|
||||
%create $^@
|
||||
for %f in ($(OBJS_STAT)) do @%append $^@ +- %f
|
||||
@for %f in ($(OBJS_STAT)) do @%append $^@ +- %f
|
||||
|
||||
#
|
||||
# Dependencies based on "gcc -MM .."
|
||||
|
@ -564,3 +601,4 @@ $(OBJ_DIR)\pingpong.obj: pingpong.c setup.h config-win32.h &
|
|||
..\include\curl\curlrules.h ..\include\curl\easy.h &
|
||||
..\include\curl\multi.h ..\include\curl\curl.h pingpong.h &
|
||||
..\include\curl\mprintf.h curl_memory.h memdebug.h
|
||||
|
||||
|
|
|
@ -504,6 +504,10 @@
|
|||
# define USE_WIN32_LARGE_FILES
|
||||
#endif
|
||||
|
||||
#if defined(__WATCOMC__) && !defined(USE_WIN32_LARGE_FILES)
|
||||
# define USE_WIN32_LARGE_FILES
|
||||
#endif
|
||||
|
||||
#if defined(__POCC__)
|
||||
# undef USE_WIN32_LARGE_FILES
|
||||
#endif
|
||||
|
|
|
@ -3,22 +3,62 @@
|
|||
# G. Vanem <gvanem@broadpark.no>
|
||||
#
|
||||
|
||||
!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
|
||||
|
||||
TARGETS = libcurl_wc.dll libcurl_wc_imp.lib libcurl_wc.lib
|
||||
|
||||
CC = wcc386
|
||||
LD = wlink
|
||||
RC = wrc
|
||||
AR = wlib
|
||||
|
||||
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
|
||||
!ifdef __LOADDLL__
|
||||
! loaddll wcc386 wccd386
|
||||
! loaddll wpp386 wppd386
|
||||
! loaddll wlink wlinkd
|
||||
! loaddll wlib wlibd
|
||||
!endif
|
||||
|
||||
OBJ_DIR = WC_Win32.obj
|
||||
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) $[@ $^@
|
||||
|
||||
hugehelp.c.cvs: .EXISTSONLY
|
||||
$(CP) hugehelp.c $^@
|
||||
|
||||
$(OBJ_DIR):
|
||||
mkdir $(OBJ_DIR)
|
||||
-$(MD) $^@
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
|
|
|
@ -385,6 +385,10 @@
|
|||
# define USE_WIN32_LARGE_FILES
|
||||
#endif
|
||||
|
||||
#if defined(__WATCOMC__) && !defined(USE_WIN32_LARGE_FILES)
|
||||
# define USE_WIN32_LARGE_FILES
|
||||
#endif
|
||||
|
||||
#if defined(__POCC__)
|
||||
# undef USE_WIN32_LARGE_FILES
|
||||
#endif
|
||||
|
|
Загрузка…
Ссылка в новой задаче