1################################################################# 2# 3## Makefile for building curl.nlm (NetWare version - gnu make) 4## Use: make -f Makefile.netware 5## 6## Comments to: Guenter Knauf http://www.gknw.net/phpbb 7# 8################################################################# 9 10# Edit the path below to point to the base of your Novell NDK. 11ifndef NDKBASE 12NDKBASE = c:/novell 13endif 14 15# Edit the path below to point to the base of your Zlib sources. 16ifndef ZLIB_PATH 17ZLIB_PATH = ../../../zlib-1.2.8 18endif 19 20# Edit the path below to point to the base of your OpenSSL package. 21ifndef OPENSSL_PATH 22OPENSSL_PATH = ../../../openssl-1.0.2a 23endif 24 25# Edit the path below to point to the base of your LibSSH2 package. 26ifndef LIBSSH2_PATH 27LIBSSH2_PATH = ../../../libssh2-1.5.0 28endif 29 30# Edit the path below to point to the base of your axTLS package. 31ifndef AXTLS_PATH 32AXTLS_PATH = ../../../axTLS-1.2.7 33endif 34 35# Edit the path below to point to the base of your libidn package. 36ifndef LIBIDN_PATH 37LIBIDN_PATH = ../../../libidn-1.30 38endif 39 40# Edit the path below to point to the base of your librtmp package. 41ifndef LIBRTMP_PATH 42LIBRTMP_PATH = ../../../librtmp-2.4 43endif 44 45# Edit the path below to point to the base of your fbopenssl package. 46ifndef FBOPENSSL_PATH 47FBOPENSSL_PATH = ../../fbopenssl-0.4 48endif 49 50# Edit the path below to point to the base of your c-ares package. 51ifndef LIBCARES_PATH 52LIBCARES_PATH = ../../ares 53endif 54 55ifndef INSTDIR 56INSTDIR = ..$(DS)..$(DS)curl-$(LIBCURL_VERSION_STR)-bin-nw 57endif 58 59# Edit the vars below to change NLM target settings. 60TARGET = examples 61VERSION = $(LIBCURL_VERSION) 62COPYR = Copyright (C) $(LIBCURL_COPYRIGHT_STR) 63DESCR = cURL ($(LIBARCH)) 64MTSAFE = YES 65STACK = 8192 66SCREEN = Example Program 67# Comment the line below if you dont want to load protected automatically. 68# LDRING = 3 69 70# Uncomment the next line to enable linking with POSIX semantics. 71# POSIXFL = 1 72 73# Edit the var below to point to your lib architecture. 74ifndef LIBARCH 75LIBARCH = LIBC 76endif 77 78# must be equal to NDEBUG or DEBUG, CURLDEBUG 79ifndef DB 80DB = NDEBUG 81endif 82# Optimization: -O<n> or debugging: -g 83ifeq ($(DB),NDEBUG) 84 OPT = -O2 85 OBJDIR = release 86else 87 OPT = -g 88 OBJDIR = debug 89endif 90 91# The following lines defines your compiler. 92ifdef CWFolder 93 METROWERKS = $(CWFolder) 94endif 95ifdef METROWERKS 96 # MWCW_PATH = $(subst \,/,$(METROWERKS))/Novell Support 97 MWCW_PATH = $(subst \,/,$(METROWERKS))/Novell Support/Metrowerks Support 98 CC = mwccnlm 99else 100 CC = gcc 101endif 102PERL = perl 103# Here you can find a native Win32 binary of the original awk: 104# http://www.gknw.net/development/prgtools/awk-20100523.zip 105AWK = awk 106CP = cp -afv 107MKDIR = mkdir 108# RM = rm -f 109# If you want to mark the target as MTSAFE you will need a tool for 110# generating the xdc data for the linker; here's a minimal tool: 111# http://www.gknw.net/development/prgtools/mkxdc.zip 112MPKXDC = mkxdc 113 114# LIBARCH_U = $(shell $(AWK) 'BEGIN {print toupper(ARGV[1])}' $(LIBARCH)) 115LIBARCH_L = $(shell $(AWK) 'BEGIN {print tolower(ARGV[1])}' $(LIBARCH)) 116 117# Include the version info retrieved from curlver.h 118-include $(OBJDIR)/version.inc 119 120# Global flags for all compilers 121CFLAGS += $(OPT) -D$(DB) -DNETWARE -DHAVE_CONFIG_H -nostdinc 122 123ifeq ($(CC),mwccnlm) 124LD = mwldnlm 125LDFLAGS = -nostdlib $< $(PRELUDE) $(LDLIBS) -o $@ -commandfile 126LIBEXT = lib 127CFLAGS += -gccinc -inline off -opt nointrinsics -proc 586 128CFLAGS += -relax_pointers 129#CFLAGS += -w on 130ifeq ($(LIBARCH),LIBC) 131ifeq ($(POSIXFL),1) 132 PRELUDE = $(NDK_LIBC)/imports/posixpre.o 133else 134 PRELUDE = $(NDK_LIBC)/imports/libcpre.o 135endif 136 CFLAGS += -align 4 137else 138 # PRELUDE = $(NDK_CLIB)/imports/clibpre.o 139 # to avoid the __init_* / __deinit_* whoes dont use prelude from NDK 140 PRELUDE = "$(MWCW_PATH)/libraries/runtime/prelude.obj" 141 # CFLAGS += -include "$(MWCW_PATH)/headers/nlm_clib_prefix.h" 142 CFLAGS += -align 1 143endif 144else 145LD = nlmconv 146LDFLAGS = -T 147LIBEXT = a 148CFLAGS += -m32 149CFLAGS += -fno-builtin -fno-strict-aliasing 150ifeq ($(findstring gcc,$(CC)),gcc) 151CFLAGS += -fpcc-struct-return 152endif 153CFLAGS += -Wall # -pedantic 154ifeq ($(LIBARCH),LIBC) 155ifeq ($(POSIXFL),1) 156 PRELUDE = $(NDK_LIBC)/imports/posixpre.gcc.o 157else 158 PRELUDE = $(NDK_LIBC)/imports/libcpre.gcc.o 159endif 160else 161 # PRELUDE = $(NDK_CLIB)/imports/clibpre.gcc.o 162 # to avoid the __init_* / __deinit_* whoes dont use prelude from NDK 163 # http://www.gknw.net/development/mk_nlm/gcc_pre.zip 164 PRELUDE = $(NDK_ROOT)/pre/prelude.o 165 CFLAGS += -include $(NDKBASE)/nlmconv/genlm.h 166endif 167endif 168 169NDK_ROOT = $(NDKBASE)/ndk 170ifndef NDK_CLIB 171NDK_CLIB = $(NDK_ROOT)/nwsdk 172endif 173ifndef NDK_LIBC 174NDK_LIBC = $(NDK_ROOT)/libc 175endif 176ifndef NDK_LDAP 177NDK_LDAP = $(NDK_ROOT)/cldapsdk/netware 178endif 179CURL_INC = ../../include 180CURL_LIB = ../../lib 181 182INCLUDES = -I$(CURL_INC) 183 184ifeq ($(findstring -static,$(CFG)),-static) 185LINK_STATIC = 1 186endif 187ifeq ($(findstring -ares,$(CFG)),-ares) 188WITH_ARES = 1 189endif 190ifeq ($(findstring -rtmp,$(CFG)),-rtmp) 191WITH_RTMP = 1 192WITH_SSL = 1 193WITH_ZLIB = 1 194endif 195ifeq ($(findstring -ssh2,$(CFG)),-ssh2) 196WITH_SSH2 = 1 197WITH_SSL = 1 198WITH_ZLIB = 1 199endif 200ifeq ($(findstring -axtls,$(CFG)),-axtls) 201WITH_AXTLS = 1 202WITH_SSL = 203else 204ifeq ($(findstring -ssl,$(CFG)),-ssl) 205WITH_SSL = 1 206endif 207endif 208ifeq ($(findstring -zlib,$(CFG)),-zlib) 209WITH_ZLIB = 1 210endif 211ifeq ($(findstring -idn,$(CFG)),-idn) 212WITH_IDN = 1 213endif 214ifeq ($(findstring -ipv6,$(CFG)),-ipv6) 215ENABLE_IPV6 = 1 216endif 217 218ifdef LINK_STATIC 219 LDLIBS = $(CURL_LIB)/libcurl.$(LIBEXT) 220ifdef WITH_ARES 221 LDLIBS += $(LIBCARES_PATH)/libcares.$(LIBEXT) 222endif 223else 224 MODULES = libcurl.nlm 225 IMPORTS = @$(CURL_LIB)/libcurl.imp 226endif 227ifdef WITH_SSH2 228 # INCLUDES += -I$(LIBSSH2_PATH)/include 229ifdef LINK_STATIC 230 LDLIBS += $(LIBSSH2_PATH)/nw/libssh2.$(LIBEXT) 231else 232 MODULES += libssh2.nlm 233 IMPORTS += @$(LIBSSH2_PATH)/nw/libssh2.imp 234endif 235endif 236ifdef WITH_RTMP 237 # INCLUDES += -I$(LIBRTMP_PATH) 238ifdef LINK_STATIC 239 LDLIBS += $(LIBRTMP_PATH)/librtmp/librtmp.$(LIBEXT) 240endif 241endif 242ifdef WITH_SSL 243 INCLUDES += -I$(OPENSSL_PATH)/outinc_nw_$(LIBARCH_L) 244 LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/ssl.$(LIBEXT) 245 LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/crypto.$(LIBEXT) 246 IMPORTS += GetProcessSwitchCount RunningProcess 247else 248ifdef WITH_AXTLS 249 INCLUDES += -I$(AXTLS_PATH)/inc 250ifdef LINK_STATIC 251 LDLIBS += $(AXTLS_PATH)/lib/libaxtls.$(LIBEXT) 252else 253 MODULES += libaxtls.nlm 254 IMPORTS += $(AXTLS_PATH)/lib/libaxtls.imp 255endif 256endif 257endif 258ifdef WITH_ZLIB 259 # INCLUDES += -I$(ZLIB_PATH) 260ifdef LINK_STATIC 261 LDLIBS += $(ZLIB_PATH)/nw/$(LIBARCH)/libz.$(LIBEXT) 262else 263 MODULES += libz.nlm 264 IMPORTS += @$(ZLIB_PATH)/nw/$(LIBARCH)/libz.imp 265endif 266endif 267ifdef WITH_IDN 268 # INCLUDES += -I$(LIBIDN_PATH)/include 269 LDLIBS += $(LIBIDN_PATH)/lib/libidn.$(LIBEXT) 270endif 271 272ifeq ($(LIBARCH),LIBC) 273 INCLUDES += -I$(NDK_LIBC)/include 274 # INCLUDES += -I$(NDK_LIBC)/include/nks 275 # INCLUDES += -I$(NDK_LIBC)/include/winsock 276 CFLAGS += -D_POSIX_SOURCE 277else 278 INCLUDES += -I$(NDK_CLIB)/include/nlm 279 # INCLUDES += -I$(NDK_CLIB)/include 280endif 281ifndef DISABLE_LDAP 282 # INCLUDES += -I$(NDK_LDAP)/$(LIBARCH_L)/inc 283endif 284CFLAGS += $(INCLUDES) 285 286ifeq ($(MTSAFE),YES) 287 XDCOPT = -n 288endif 289ifeq ($(MTSAFE),NO) 290 XDCOPT = -u 291endif 292ifdef XDCOPT 293 XDCDATA = $(OBJDIR)/$(TARGET).xdc 294endif 295 296ifeq ($(findstring /sh,$(SHELL)),/sh) 297DL = ' 298DS = / 299PCT = % 300#-include $(NDKBASE)/nlmconv/ncpfs.inc 301else 302DS = \\ 303PCT = %% 304endif 305 306# Makefile.inc provides the CSOURCES and HHEADERS defines 307include Makefile.inc 308 309check_PROGRAMS := $(patsubst %,%.nlm,$(strip $(check_PROGRAMS))) 310 311.PRECIOUS: $(OBJDIR)/%.o $(OBJDIR)/%.def $(OBJDIR)/%.xdc 312 313 314all: prebuild $(check_PROGRAMS) 315 316prebuild: $(OBJDIR) $(OBJDIR)/version.inc 317 318$(OBJDIR)/%.o: %.c 319 @echo Compiling $< 320 $(CC) $(CFLAGS) -c $< -o $@ 321 322$(OBJDIR)/version.inc: $(CURL_INC)/curl/curlver.h $(OBJDIR) 323 @echo Creating $@ 324 @$(AWK) -f ../../packages/NetWare/get_ver.awk $< > $@ 325 326install: $(INSTDIR) all 327 @$(CP) $(check_PROGRAMS) $(INSTDIR) 328 329clean: 330 -$(RM) -r $(OBJDIR) 331 332distclean vclean: clean 333 -$(RM) $(check_PROGRAMS) 334 335$(OBJDIR) $(INSTDIR): 336 @$(MKDIR) $@ 337 338%.nlm: $(OBJDIR)/%.o $(OBJDIR)/%.def $(XDCDATA) 339 @echo Linking $@ 340 @-$(RM) $@ 341 @$(LD) $(LDFLAGS) $(OBJDIR)/$(@:.nlm=.def) 342 343$(OBJDIR)/%.xdc: Makefile.netware 344 @echo Creating $@ 345 @$(MPKXDC) $(XDCOPT) $@ 346 347$(OBJDIR)/%.def: Makefile.netware 348 @echo $(DL)# DEF file for linking with $(LD)$(DL) > $@ 349 @echo $(DL)# Do not edit this file - it is created by Make!$(DL) >> $@ 350 @echo $(DL)# All your changes will be lost!!$(DL) >> $@ 351 @echo $(DL)#$(DL) >> $@ 352 @echo $(DL)copyright "$(COPYR)"$(DL) >> $@ 353 @echo $(DL)description "$(DESCR) $(notdir $(@:.def=)) Example"$(DL) >> $@ 354 @echo $(DL)version $(VERSION)$(DL) >> $@ 355ifdef NLMTYPE 356 @echo $(DL)type $(NLMTYPE)$(DL) >> $@ 357endif 358ifdef STACK 359 @echo $(DL)stack $(STACK)$(DL) >> $@ 360endif 361ifdef SCREEN 362 @echo $(DL)screenname "$(DESCR) $(notdir $(@:.def=)) $(SCREEN)"$(DL) >> $@ 363else 364 @echo $(DL)screenname "DEFAULT"$(DL) >> $@ 365endif 366ifneq ($(DB),NDEBUG) 367 @echo $(DL)debug$(DL) >> $@ 368endif 369 @echo $(DL)threadname "_$(notdir $(@:.def=))"$(DL) >> $@ 370ifdef XDCDATA 371 @echo $(DL)xdcdata $(XDCDATA)$(DL) >> $@ 372endif 373ifeq ($(LDRING),0) 374 @echo $(DL)flag_on 16$(DL) >> $@ 375endif 376ifeq ($(LDRING),3) 377 @echo $(DL)flag_on 512$(DL) >> $@ 378endif 379ifeq ($(LIBARCH),CLIB) 380 @echo $(DL)start _Prelude$(DL) >> $@ 381 @echo $(DL)exit _Stop$(DL) >> $@ 382 @echo $(DL)import @$(NDK_CLIB)/imports/clib.imp$(DL) >> $@ 383 @echo $(DL)import @$(NDK_CLIB)/imports/threads.imp$(DL) >> $@ 384 @echo $(DL)import @$(NDK_CLIB)/imports/nlmlib.imp$(DL) >> $@ 385 @echo $(DL)import @$(NDK_CLIB)/imports/socklib.imp$(DL) >> $@ 386 @echo $(DL)module clib$(DL) >> $@ 387ifndef DISABLE_LDAP 388 @echo $(DL)import @$(NDK_LDAP)/clib/imports/ldapsdk.imp$(DL) >> $@ 389 @echo $(DL)import @$(NDK_LDAP)/clib/imports/ldapssl.imp$(DL) >> $@ 390# @echo $(DL)import @$(NDK_LDAP)/clib/imports/ldapx.imp$(DL) >> $@ 391 @echo $(DL)module ldapsdk ldapssl$(DL) >> $@ 392endif 393else 394ifeq ($(POSIXFL),1) 395 @echo $(DL)flag_on 4194304$(DL) >> $@ 396endif 397 @echo $(DL)flag_on 64$(DL) >> $@ 398 @echo $(DL)pseudopreemption$(DL) >> $@ 399ifeq ($(findstring posixpre,$(PRELUDE)),posixpre) 400 @echo $(DL)start POSIX_Start$(DL) >> $@ 401 @echo $(DL)exit POSIX_Stop$(DL) >> $@ 402 @echo $(DL)check POSIX_CheckUnload$(DL) >> $@ 403else 404 @echo $(DL)start _LibCPrelude$(DL) >> $@ 405 @echo $(DL)exit _LibCPostlude$(DL) >> $@ 406 @echo $(DL)check _LibCCheckUnload$(DL) >> $@ 407endif 408 @echo $(DL)import @$(NDK_LIBC)/imports/libc.imp$(DL) >> $@ 409 @echo $(DL)import @$(NDK_LIBC)/imports/netware.imp$(DL) >> $@ 410 @echo $(DL)module libc$(DL) >> $@ 411ifndef DISABLE_LDAP 412 @echo $(DL)import @$(NDK_LDAP)/libc/imports/lldapsdk.imp$(DL) >> $@ 413 @echo $(DL)import @$(NDK_LDAP)/libc/imports/lldapssl.imp$(DL) >> $@ 414# @echo $(DL)import @$(NDK_LDAP)/libc/imports/lldapx.imp$(DL) >> $@ 415 @echo $(DL)module lldapsdk lldapssl$(DL) >> $@ 416endif 417endif 418ifdef MODULES 419 @echo $(DL)module $(MODULES)$(DL) >> $@ 420endif 421ifdef EXPORTS 422 @echo $(DL)export $(EXPORTS)$(DL) >> $@ 423endif 424ifdef IMPORTS 425 @echo $(DL)import $(IMPORTS)$(DL) >> $@ 426endif 427ifeq ($(findstring nlmconv,$(LD)),nlmconv) 428 @echo $(DL)input $(PRELUDE)$(DL) >> $@ 429 @echo $(DL)input $(@:.def=.o)$(DL) >> $@ 430ifdef LDLIBS 431 @echo $(DL)input $(LDLIBS)$(DL) >> $@ 432endif 433 @echo $(DL)output $(notdir $(@:.def=.nlm))$(DL) >> $@ 434endif 435