#################################################################
# $Id$
#
## Makefile for building libcurl.nlm (NetWare version - gnu make)
## Use: make -f Makefile.netware
##
## Comments to: Guenter Knauf http://www.gknw.de/phpbb
#
#################################################################

# Edit the path below to point to the base of your Novell NDK.
ifndef NDKBASE
NDKBASE	= c:/novell
endif

# Edit the path below to point to the base of your Zlib sources.
ifndef ZLIB_PATH
ZLIB_PATH = ../../zlib-1.2.3
endif

# Edit the path below to point to the base of your OpenSSL package.
ifndef OPENSSL_PATH
OPENSSL_PATH = ../../openssl-0.9.8e
endif

# Edit the path below to point to the base of your LibSSH2 package.
ifndef LIBSSH2_PATH
LIBSSH2_PATH = ../../libssh2-0.15
endif

ifndef INSTDIR
INSTDIR	= ..$(DS)curl-$(LIBCURL_VERSION_STR)-bin-nw
endif

# Edit the vars below to change NLM target settings.
TARGET  = libcurl
VERSION	= $(LIBCURL_VERSION)
COPYR	= Copyright (C) 1996 - 2007, Daniel Stenberg, <daniel@haxx.se>
DESCR	= cURL libcurl $(LIBCURL_VERSION_STR) - http://curl.haxx.se
MTSAFE	= YES
STACK	= 64000
SCREEN	= none
EXPORTS	= @libcurl.imp

# Edit the var below to point to your lib architecture.
ifndef LIBARCH
LIBARCH = LIBC
endif

# must be equal to NDEBUG or DEBUG, CURLDEBUG
ifndef DB
DB	= NDEBUG
endif
# Optimization: -O<n> or debugging: -g
ifeq ($(DB),NDEBUG)
	OPT	= -O2
	OBJDIR	= release
else
	OPT	= -g
	OBJDIR	= debug
endif

# Include the version info retrieved from curlver.h
-include $(OBJDIR)/version.inc

# The following line defines your compiler.
ifdef METROWERKS
	CC = mwccnlm
else
	CC = gcc
endif
AWK	= awk
YACC	= bison -y
CP	= cp -afv
# RM	= rm -f
# if you want to mark the target as MTSAFE you will need a tool for
# generating the xdc data for the linker; here's a minimal tool:
# http://www.gknw.net/development/prgtools/mkxdc.zip
MPKXDC	= mkxdc

# Global flags for all compilers
CFLAGS	= $(OPT) -D$(DB) -DNETWARE -DHAVE_CONFIG_H -nostdinc

ifeq ($(CC),mwccnlm)
LD	= mwldnlm
LDFLAGS	= -nostdlib $(PRELUDE) $(OBJL) -o $@ -commandfile
AR	= mwldnlm
ARFLAGS	= -nostdlib -type library -o
LIBEXT	= lib
#RANLIB	=
CFLAGS	+= -msgstyle gcc -gccinc -inline off -opt nointrinsics -proc 586
CFLAGS	+= -relax_pointers
#CFLAGS	+= -w on
ifeq ($(LIBARCH),LIBC)
	PRELUDE = $(SDK_LIBC)/imports/libcpre.o
	CFLAGS += -align 4
else
	PRELUDE = "$(METROWERKS)/Novell Support/libraries/runtime/prelude.obj"
#	CFLAGS += -include "$(METROWERKS)/Novell Support/headers/nlm_prefix.h"
	CFLAGS += -align 1
endif
else
LD	= nlmconv
LDFLAGS	= -T
AR	= ar
ARFLAGS	= -cq
LIBEXT	= a
RANLIB	= ranlib
CFLAGS	+= -fno-builtin -fpcc-struct-return -fno-strict-aliasing
CFLAGS	+= -Wall # -pedantic
ifeq ($(LIBARCH),LIBC)
	PRELUDE = $(SDK_LIBC)/imports/libcpre.gcc.o
else
	PRELUDE = $(SDK_CLIB)/imports/clibpre.gcc.o
	CFLAGS += -include $(NDKBASE)/nlmconv/genlm.h
endif
endif

NDK_ROOT = $(NDKBASE)/ndk
SDK_CLIB = $(NDK_ROOT)/nwsdk
SDK_LIBC = $(NDK_ROOT)/libc
SDK_LDAP = $(NDK_ROOT)/cldapsdk/netware
CURL_INC = ../include
CURL_LIB = ../lib
ARES_LIB = ../ares

INCLUDES = -I$(CURL_INC) -I$(CURL_LIB)

ifdef WITH_ARES
	INCLUDES += -I$(ARES_LIB)
	LDLIBS = $(ARES_LIB)/libcares.$(LIBEXT)
endif
ifdef WITH_ZLIB
	INCLUDES += -I$(ZLIB_PATH)
ifdef LINK_STATIC
	LDLIBS += $(ZLIB_PATH)/nw/libz.$(LIBEXT)
else
	MODULES += libz.nlm
	IMPORTS += @$(ZLIB_PATH)/nw/libz.imp
endif
endif
ifdef WITH_SSH2
	INCLUDES += -I$(LIBSSH2_PATH)/include
ifdef LINK_STATIC
	LDLIBS += $(LIBSSH2_PATH)/nw/libssh2.$(LIBEXT)
else
	MODULES += libssh2.nlm
	IMPORTS += @$(LIBSSH2_PATH)/nw/libssh2.imp
endif
endif
ifdef WITH_SSL
	INCLUDES += -I$(OPENSSL_PATH)/outinc_nw_libc -I$(OPENSSL_PATH)/outinc_nw_libc/openssl
	LDLIBS += $(OPENSSL_PATH)/out_nw_libc/ssl.$(LIBEXT)
	LDLIBS += $(OPENSSL_PATH)/out_nw_libc/crypto.$(LIBEXT)
	IMPORTS += GetProcessSwitchCount RunningProcess
endif

ifeq ($(LIBARCH),LIBC)
	INCLUDES += -I$(SDK_LIBC)/include -I$(SDK_LIBC)/include/nks
	# INCLUDES += -I$(SDK_LIBC)/include/winsock
	# INCLUDES += -I$(SDK_LDAP)/libc/inc
	CFLAGS += -D_POSIX_SOURCE
	# CFLAGS += -D__ANSIC__
else
	INCLUDES += -I$(SDK_CLIB)/include/nlm -I$(SDK_CLIB)/include
	# INCLUDES += -I$(SDK_CLIB)/include/nlm/obsolete
	# INCLUDES += -I$(SDK_LDAP)/clib/inc
	CFLAGS += -DNETDB_USE_INTERNET
endif
CFLAGS	+= $(INCLUDES)

ifeq ($(MTSAFE),YES)
	XDCOPT = -n
endif
ifeq ($(MTSAFE),NO)
	XDCOPT = -u
endif
ifdef XDCOPT
	XDCDATA = $(OBJDIR)/$(TARGET).xdc
endif

ifeq ($(findstring linux,$(OSTYPE)),linux)
DL	= '
DS	= /
#-include $(NDKBASE)/nlmconv/ncpfs.inc
else
DS	= \\
endif

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

OBJS	:= $(patsubst %.c,$(OBJDIR)/%.o,$(strip $(CSOURCES)))

OBJL	= $(OBJS) $(OBJDIR)/nwlib.o $(LDLIBS)

all: lib nlm

nlm: prebuild $(TARGET).nlm

lib: prebuild $(TARGET).$(LIBEXT)

prebuild: $(OBJDIR) $(OBJDIR)/version.inc config.h ca-bundle.h

$(OBJDIR)/%.o: %.c
#	@echo Compiling $<
	$(CC) $(CFLAGS) -c $< -o $@

$(OBJDIR)/version.inc: ../include/curl/curlver.h $(OBJDIR)
	@echo Creating $@
	@$(AWK) -f ../packages/NetWare/get_ver.awk $< > $@

dist: all
	-$(RM) $(OBJDIR)/*.o $(OBJDIR)/$(TARGET).map $(OBJDIR)/$(TARGET).ncv
	-$(RM) $(OBJDIR)/$(TARGET).def $(OBJDIR)/version.inc $(XDCDATA)

install: $(INSTDIR) all
	@$(CP) $(TARGET).nlm $(INSTDIR)
	@$(CP) $(TARGET).$(LIBEXT) $(INSTDIR)
	@$(CP) ../CHANGES $(INSTDIR)
	@$(CP) ../COPYING $(INSTDIR)
	@$(CP) ../README $(INSTDIR)
	@$(CP) ../RELEASE-NOTES $(INSTDIR)
ifdef WITH_SSL
	@$(CP) ca-bundle.crt $(INSTDIR)
endif

clean:
	-$(RM) config.h ca-bundle.h
	-$(RM) -r $(OBJDIR)

distclean: clean
	-$(RM) -r $(TARGET).$(LIBEXT) $(TARGET).nlm

$(INSTDIR):
	@mkdir $(INSTDIR)

$(OBJDIR):
	@mkdir $(OBJDIR)

$(TARGET).$(LIBEXT): $(OBJS)
	@echo Creating $@
	@-$(RM) $@
	@$(AR) $(ARFLAGS) $@ $^
ifdef RANLIB
	@$(RANLIB) $@
endif

$(TARGET).nlm: $(OBJDIR)/$(TARGET).def $(OBJL) $(XDCDATA)
	@echo Linking $@
	@-$(RM) $@
	@$(LD) $(LDFLAGS) $<

$(OBJDIR)/%.xdc: Makefile.netware
	@echo Creating $@
	@$(MPKXDC) $(XDCOPT) $@

$(OBJDIR)/%.def: Makefile.netware
	@echo $(DL)# DEF file for linking with $(LD)$(DL) > $@
	@echo $(DL)# Do not edit this file - it is created by make!$(DL) >> $@
	@echo $(DL)# All your changes will be lost!!$(DL) >> $@
	@echo $(DL)#$(DL) >> $@
	@echo $(DL)copyright "$(COPYR)"$(DL) >> $@
	@echo $(DL)description "$(DESCR)"$(DL) >> $@
	@echo $(DL)version $(VERSION)$(DL) >> $@
ifdef NLMTYPE
	@echo $(DL)type $(NLMTYPE)$(DL) >> $@
endif
ifdef STACK
	@echo $(DL)stack $(STACK)$(DL) >> $@
endif
ifdef SCREEN
	@echo $(DL)screenname "$(SCREEN)"$(DL) >> $@
else
	@echo $(DL)screenname "DEFAULT"$(DL) >> $@
endif
ifneq ($(DB),NDEBUG)
	@echo $(DL)debug$(DL) >> $@
endif
	@echo $(DL)threadname "$(TARGET)"$(DL) >> $@
ifdef XDCDATA
	@echo $(DL)xdcdata $(XDCDATA)$(DL) >> $@
endif
ifeq ($(LIBARCH),CLIB)
	@echo $(DL)start _Prelude$(DL) >> $@
	@echo $(DL)exit _Stop$(DL) >> $@
	@echo $(DL)import @$(SDK_CLIB)/imports/clib.imp$(DL) >> $@
	@echo $(DL)import @$(SDK_CLIB)/imports/threads.imp$(DL) >> $@
	@echo $(DL)import @$(SDK_CLIB)/imports/nlmlib.imp$(DL) >> $@
	@echo $(DL)import @$(SDK_CLIB)/imports/socklib.imp$(DL) >> $@
#	@echo $(DL)import @$(SDK_LDAP)/clib/imports/ldapsdk.imp$(DL) >> $@
#	@echo $(DL)import @$(SDK_LDAP)/clib/imports/ldapssl.imp$(DL) >> $@
#	@echo $(DL)import @$(SDK_LDAP)/clib/imports/ldapx.imp$(DL) >> $@
	@echo $(DL)module clib$(DL) >> $@
else
	@echo $(DL)flag_on 64$(DL) >> $@
	@echo $(DL)pseudopreemption$(DL) >> $@
	@echo $(DL)start _LibCPrelude$(DL) >> $@
	@echo $(DL)exit _LibCPostlude$(DL) >> $@
	@echo $(DL)check _LibCCheckUnload$(DL) >> $@
	@echo $(DL)import @$(SDK_LIBC)/imports/libc.imp$(DL) >> $@
	@echo $(DL)import @$(SDK_LIBC)/imports/netware.imp$(DL) >> $@
#	@echo $(DL)import @$(SDK_LDAP)/libc/imports/lldapsdk.imp$(DL) >> $@
#	@echo $(DL)import @$(SDK_LDAP)/libc/imports/lldapssl.imp$(DL) >> $@
#	@echo $(DL)import @$(SDK_LDAP)/libc/imports/lldapx.imp$(DL) >> $@
	@echo $(DL)module libc$(DL) >> $@
endif
ifdef MODULES
	@echo $(DL)module $(MODULES)$(DL) >> $@
endif
ifdef EXPORTS
	@echo $(DL)export $(EXPORTS)$(DL) >> $@
endif
ifdef IMPORTS
	@echo $(DL)import $(IMPORTS)$(DL) >> $@
endif
ifeq ($(LD),nlmconv)
	@echo $(DL)input $(OBJL)$(DL) >> $@
	@echo $(DL)input $(PRELUDE)$(DL) >> $@
#ifdef LDLIBS
#	@echo $(DL)input $(LDLIBS)$(DL) >> $@
#endif
	@echo $(DL)output $(TARGET).nlm$(DL) >> $@
endif

config.h: Makefile.netware
	@echo Creating $@
	@echo $(DL)/* $@ for NetWare target.$(DL) > $@
	@echo $(DL)** Do not edit this file - it is created by make!$(DL) >> $@
	@echo $(DL)** All your changes will be lost!!$(DL) >> $@
	@echo $(DL)*/$(DL) >> $@
	@echo $(DL)#ifndef NETWARE$(DL) >> $@
	@echo $(DL)#error This $(notdir $@) is created for NetWare platform!$(DL) >> $@
	@echo $(DL)#endif$(DL) >> $@
	@echo $(DL)#define OS "i586-pc-NetWare"$(DL) >> $@
	@echo $(DL)#define VERSION "$(LIBCURL_VERSION_STR)"$(DL) >> $@
	@echo $(DL)#define PACKAGE_BUGREPORT "a suitable curl mailing list => http://curl.haxx.se/mail/"$(DL) >> $@
	@echo $(DL)#define HAVE_ARPA_INET_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_ASSERT_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_DLFCN_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_DLOPEN 1$(DL) >> $@
	@echo $(DL)#define HAVE_ERR_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_FCNTL_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_FIONBIO 1$(DL) >> $@
	@echo $(DL)#define HAVE_GETHOSTBYADDR 1$(DL) >> $@
	@echo $(DL)#define HAVE_GETTIMEOFDAY 1$(DL) >> $@
	@echo $(DL)#define HAVE_INET_ADDR 1$(DL) >> $@
	@echo $(DL)#define HAVE_INET_NTOA 1$(DL) >> $@
	@echo $(DL)#define HAVE_INET_PTON 1$(DL) >> $@
	@echo $(DL)#define HAVE_INTTYPES_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_LIMITS_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_LONGLONG 1$(DL) >> $@
	@echo $(DL)#define HAVE_NETINET_IN_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_RECV 1$(DL) >> $@
	@echo $(DL)#define HAVE_SELECT 1$(DL) >> $@
	@echo $(DL)#define HAVE_SEND 1$(DL) >> $@
	@echo $(DL)#define HAVE_SETJMP_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_SIGNAL 1$(DL) >> $@
	@echo $(DL)#define HAVE_SIGNAL_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_SIG_ATOMIC_T 1$(DL) >> $@
	@echo $(DL)#define HAVE_SOCKET 1$(DL) >> $@
	@echo $(DL)#define HAVE_STDINT_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_STDLIB_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_STRCASECMP 1$(DL) >> $@
	@echo $(DL)#define HAVE_STRDUP 1$(DL) >> $@
	@echo $(DL)#define HAVE_STRFTIME 1$(DL) >> $@
	@echo $(DL)#define HAVE_STRING_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_STRLCAT 1$(DL) >> $@
	@echo $(DL)#define HAVE_STRLCPY 1$(DL) >> $@
	@echo $(DL)#define HAVE_STRSTR 1$(DL) >> $@
	@echo $(DL)#define HAVE_SYS_PARAM_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_SYS_SELECT_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_SYS_STAT_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_SYS_TIME_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_TERMIOS_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_TIME_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_UNISTD_H 1$(DL) >> $@
	@echo $(DL)#define RECV_TYPE_ARG1 int$(DL) >> $@
	@echo $(DL)#define RECV_TYPE_ARG2 char *$(DL) >> $@
	@echo $(DL)#define RECV_TYPE_ARG3 int$(DL) >> $@
	@echo $(DL)#define RECV_TYPE_ARG4 int$(DL) >> $@
	@echo $(DL)#define RECV_TYPE_RETV int$(DL) >> $@
	@echo $(DL)#define RETSIGTYPE void$(DL) >> $@
	@echo $(DL)#define SEND_QUAL_ARG2$(DL) >> $@
	@echo $(DL)#define SEND_TYPE_ARG1 int$(DL) >> $@
	@echo $(DL)#define SEND_TYPE_ARG2 char *$(DL) >> $@
	@echo $(DL)#define SEND_TYPE_ARG3 int$(DL) >> $@
	@echo $(DL)#define SEND_TYPE_ARG4 int$(DL) >> $@
	@echo $(DL)#define SEND_TYPE_RETV int$(DL) >> $@
	@echo $(DL)#define SIZEOF_CURL_OFF_T 4$(DL) >> $@
	@echo $(DL)#define STDC_HEADERS 1$(DL) >> $@
	@echo $(DL)#define TIME_WITH_SYS_TIME 1$(DL) >> $@
	@echo $(DL)#define HAVE_AF_INET6 1$(DL) >> $@
	@echo $(DL)#define HAVE_PF_INET6 1$(DL) >> $@
	@echo $(DL)#define HAVE_STRUCT_ADDRINFO 1$(DL) >> $@
	@echo $(DL)#define HAVE_STRUCT_IN6_ADDR 1$(DL) >> $@
	@echo $(DL)#define HAVE_STRUCT_SOCKADDR_IN6 1$(DL) >> $@
	@echo $(DL)#define HAVE_STRUCT_TIMEVAL 1$(DL) >> $@
	@echo $(DL)#define SIZEOF_STRUCT_IN6_ADDR 16$(DL) >> $@
	@echo $(DL)#define SIZEOF_STRUCT_IN_ADDR 4$(DL) >> $@
ifdef DISABLE_LDAP
	@echo $(DL)#define CURL_DISABLE_LDAP 1$(DL) >> $@
else
	@echo $(DL)#define DL_LDAP_FILE "lldapsdk.nlm"$(DL) >> $@
endif
ifdef ENABLE_IPV6
	@echo $(DL)#define ENABLE_IPV6 1$(DL) >> $@
endif
ifdef NW_WINSOCK
	@echo $(DL)#define HAVE_CLOSESOCKET 1$(DL) >> $@
else
	@echo $(DL)#define HAVE_SYS_TYPES_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_SYS_SOCKET_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_SYS_SOCKIO_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_NETDB_H 1$(DL) >> $@
endif
ifdef WITH_ARES
	@echo $(DL)#define USE_ARES 1$(DL) >> $@
endif
ifdef WITH_ZLIB
	@echo $(DL)#define HAVE_ZLIB_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_LIBZ 1$(DL) >> $@
endif
ifdef WITH_SSL
	@echo $(DL)#define USE_SSLEAY 1$(DL) >> $@
	@echo $(DL)#define USE_OPENSSL 1$(DL) >> $@
	@echo $(DL)#define HAVE_OPENSSL_X509_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_OPENSSL_SSL_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_OPENSSL_RSA_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_OPENSSL_PEM_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_OPENSSL_ERR_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_OPENSSL_CRYPTO_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_OPENSSL_ENGINE_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_LIBSSL 1$(DL) >> $@
	@echo $(DL)#define HAVE_LIBCRYPTO 1$(DL) >> $@
	@echo $(DL)#define OPENSSL_NO_KRB5 1$(DL) >> $@
endif
ifdef WITH_SSH2
	@echo $(DL)#define USE_LIBSSH2 1$(DL) >> $@
	@echo $(DL)#define HAVE_LIBSSH2_H 1$(DL) >> $@
endif
	@echo $(DL)#ifdef __GNUC__$(DL) >> $@
	@echo $(DL)#define HAVE_VARIADIC_MACROS_GCC 1$(DL) >> $@
	@echo $(DL)#else$(DL) >> $@
	@echo $(DL)#define HAVE_VARIADIC_MACROS_C99 1$(DL) >> $@
	@echo $(DL)#endif$(DL) >> $@
ifdef OLD_NOVELLSDK
	@echo $(DL)#define socklen_t int$(DL) >> $@
endif

FORCE: ;

ca-bundle.h: FORCE Makefile.netware
	@echo Creating $@
	@echo $(DL)/* Do not edit this file - it is created by make!$(DL) > $@
	@echo $(DL)** All your changes will be lost!!$(DL) >> $@
	@echo $(DL)*/$(DL) >> $@
ifdef CABUNDLE
	@echo $(DL)#define CURL_CA_BUNDLE "$(CABUNDLE)"$(DL) >> $@
else
	@echo $(DL)#define CURL_CA_BUNDLE getenv("CURL_CA_BUNDLE")$(DL) >> $@
endif

info: $(OBJDIR)/version.inc
	@echo Configured to build $(TARGET) with these options:
	@echo curl version:    $(LIBCURL_VERSION_STR)
	@echo compiler/linker: $(CC) / $(LD)
ifdef CABUNDLE
	@echo ca-bundle path:  $(CABUNDLE)
endif
ifdef WITH_SSL
	@echo SSL support:     enabled (OpenSSL)
else
	@echo SSL support:     no
endif
ifdef WITH_SSH2
	@echo SSH2 support:    enabled (libssh2)
else
	@echo SSH2 support:    no
endif
ifdef WITH_ZLIB
	@echo zlib support:    enabled
else
	@echo zlib support:    no
endif
ifdef WITH_ARES
	@echo c-ares support:  enabled
else
	@echo c-ares support:  no
endif
ifdef ENABLE_IPV6
	@echo ipv6 support:    enabled
else
	@echo ipv6 support:    no
endif

$(LIBCARES):
	$(MAKE) -C $(ARES_LIB) -f Makefile.netware lib


