#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 2003 - 2021, Gisle Vanem <gvanem@yahoo.no>.
# Copyright (C) 2003 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
# furnished to do so, under the terms of the COPYING file.
#
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
#***************************************************************************

#
#  Adapted for djgpp2 / Watt-32 / DOS
#

DEPEND_PREREQ = # tool_hugehelp.c

TOPDIR = ..

vpath %.c ../lib

include ../packages/DOS/common.dj
include Makefile.inc

CSOURCES = $(CURL_CFILES) $(CURLX_CFILES)

ifeq ($(USE_OPENSSL),1)
  EX_LIBS += $(OPENSSL_LIBS)
endif

ifeq ($(USE_ARES),1)
  EX_LIBS += $(ARES_ROOT)/libcares.a
endif

ifeq ($(USE_ZLIB),1)
  EX_LIBS += $(ZLIB_ROOT)/libz.a
  CFLAGS  += -DUSE_MANUAL
endif

ifeq ($(USE_IDNA),1)
  EX_LIBS += $(LIBIDN_ROOT)/lib/dj_obj/libidn.a -liconv
endif

EX_LIBS += $(WATT32_ROOT)/lib/libwatt.a

PROGRAM = curl.exe
OBJECTS = $(addprefix $(OBJ_DIR)/, $(notdir $(CSOURCES:.c=.o)))

all: $(OBJ_DIR) $(PROGRAM)
	@echo Welcome to curl

$(PROGRAM): $(OBJECTS) ../lib/libcurl.a
	$(CC) -o $@ $^ $(LDFLAGS) $(EX_LIBS)

#
# groff 1.18+ requires "-P -c"
# If 'USE_ZLIB = 1', create a compressed help-file.
#
ifeq ($(USE_ZLIB),1)
  COMPRESS_OPT = -c
endif

tool_hugehelp.c: ../docs/curl.1 mkhelp.pl Makefile.dj
	groff -Tascii -man $< | perl -w mkhelp.pl $(COMPRESS_OPT) $< > $@

# clean generated files
#
genclean:
	- $(DELETE) tool_hugehelp.c

# clean object files and subdir
#
objclean: genclean
	- $(DELETE) $(OBJ_DIR)$(DS)*.o
	- $(RMDIR) $(OBJ_DIR)

# clean without removing built program
#
clean: objclean
	- $(DELETE) depend.dj

# clean everything
#
realclean vclean: clean
	- $(DELETE) $(PROGRAM)

-include depend.dj
