!ifdef __LINUX__
REMOVECOMMAND=rm -f
COPYCOMMAND=cp -f
MKDIRCOMMAND=mkdir
DIRSEP=/
OBJ=o
!else
REMOVECOMMAND=del
COPYCOMMAND=copy /y
MKDIRCOMMAND=mkdir
DIRSEP=\
OBJ=obj
!endif

#CFLAGS = -std=gnu89 -march=i386 -O3 -Wall -Wextra -Werror -Wno-long-long -pedantic -Wformat-security
CFLAGS =-0 -mh -k65535 -zq -zm
#SFLAGS=-sg -st -of+ -zu -zdf -zff -zgf -s -k56000#60000#32768
#DFLAGS=-DTARGET_MSDOS=16 -DMSDOS=1 $(SFLAGS)
#ZFLAGS=-zk0 -zq -zc -zp8 #-zm
#FLAGS=$(IFLAGS) -mh -lr -l=dos -wo# -d2##wwww
#OFLAGS=-obmiler -out -oh -ei -zp8 -0 -fpi87  -onac -ol+ -ok####x
#CFLAGS=$(FLAGS) $(OFLAGS) $(DFLAGS) $(ZFLAGS)

CLIBS = wattcp$(DIRSEP)lib$(DIRSEP)wattcphg.lib

all: fdnpkg16.exe test-ver.exe test-url.exe testhttp.exe test-unz.exe
#all: fdnpkg16.exe

# This target produces a fdnpkg0.exe that is not compressed and do not have cwsdpmi embedded
#fdnpkg0.exe: fdnpkg16.$(OBJ) crc32.$(OBJ) kprintf.$(OBJ) kittendj.$(OBJ) fileexst.$(OBJ) http.$(OBJ) libunzip.$(OBJ) loadconf.$(OBJ) lsm.$(OBJ) lzmadec.$(OBJ) pkgdb.$(OBJ) pkginst.$(OBJ) pkgsrch.$(OBJ) pkgrem.$(OBJ) showinst.$(OBJ) getdelim.$(OBJ) rtrim.$(OBJ) parsecmd.$(OBJ) parseurl.$(OBJ) helpers.$(OBJ) tinfl.$(OBJ)
fdnpkg16.exe: fdnpkg16.$(OBJ) crc32.$(OBJ) kprintf.$(OBJ) kittendj.$(OBJ) fileexst.$(OBJ) libunzip.$(OBJ) loadconf.$(OBJ) lsm.$(OBJ) lzmadec.$(OBJ) pkgdb.$(OBJ) pkginst.$(OBJ) pkgsrch.$(OBJ) pkgrem.$(OBJ) showinst.$(OBJ) getdelim.$(OBJ) rtrim.$(OBJ) parsecmd.$(OBJ) parseurl.$(OBJ) helpers.$(OBJ) tinfl.$(OBJ) libgz.$(OBJ) net.$(OBJ) http.$(OBJ)
	wcl fdnpkg16.$(OBJ) crc32.$(OBJ) kprintf.$(OBJ) kittendj.$(OBJ) fileexst.$(OBJ) libunzip.$(OBJ) loadconf.$(OBJ) lsm.$(OBJ) lzmadec.$(OBJ) pkgdb.$(OBJ) pkginst.$(OBJ) pkgsrch.$(OBJ) pkgrem.$(OBJ) showinst.$(OBJ) getdelim.$(OBJ) rtrim.$(OBJ) parsecmd.$(OBJ) parseurl.$(OBJ) helpers.$(OBJ) tinfl.$(OBJ) $(CLIBS) libgz.$(OBJ) net.$(OBJ) http.$(OBJ) $(CLIBS)
#snprintf.$(OBJ)

# Here I strip fdnpkg0.exe, add the cwsdpmi stub and compress the whole thing with UPX
#fdnpkg16.exe: fdnpkg0.exe
#	exe2coff fdnpkg0.exe
#	@$(COPYCOMMAND) /B cwsdstub.bin+fdnpkg0 fdnpkg16.exe
#	$(REMOVECOMMAND) fdnpkg0
#	upx -9 fdnpkg16.exe

fdnpkg16.$(OBJ): fdnpkg16.c
	wcl -c fdnpkg16.c $(CFLAGS)

htget.$(OBJ): htget.c# mtcp$(DIRSEP)lib$(DIRSEP)mtcp.lib
	wcl $(CFLAGS) -c htget.c -I=wattcp$(DIRSEP)include

loadconf.$(OBJ): loadconf.c
	wcl -c loadconf.c $(CFLAGS)

lsm.$(OBJ): lsm.c
	wcl -c lsm.c $(CFLAGS)

net.$(OBJ): net.c# mtcp$(DIRSEP)lib$(DIRSEP)mtcp.lib
	wcl $(CFLAGS) -c net.c -I=wattcp$(DIRSEP)include

parseurl.$(OBJ): parseurl.c
	wcl -c parseurl.c $(CFLAGS)

pkgdb.$(OBJ): pkgdb.c
	wcl -c pkgdb.c $(CFLAGS)

pkgsrch.$(OBJ): pkgsrch.c
	wcl -c pkgsrch.c $(CFLAGS)

pkgrem.$(OBJ): pkgrem.c
	wcl -c pkgrem.c $(CFLAGS)

pkginst.$(OBJ): pkginst.c
	wcl -c pkginst.c $(CFLAGS)

showinst.$(OBJ): showinst.c
	wcl -c showinst.c $(CFLAGS)

getdelim.$(OBJ): getdelim.c
	wcl -c getdelim.c $(CFLAGS)

fileexst.$(OBJ): fileexst.c
	wcl -c fileexst.c $(CFLAGS)

http.$(OBJ): http.c
	wcl -c http.c $(CFLAGS)

kittendj.$(OBJ): kittendj.c
	wcl -c kittendj.c $(CFLAGS)

kprintf.$(OBJ): kprintf.c
	wcl -c kprintf.c $(CFLAGS)

rtrim.$(OBJ): rtrim.c
	wcl -c rtrim.c $(CFLAGS)

parsecmd.$(OBJ): parsecmd.c
	wcl -c parsecmd.c $(CFLAGS)

snprintf.$(OBJ): snprintf.c
	wcl -c snprintf.c $(CFLAGS)

libunzip.$(OBJ): libunzip.c
	wcl -c libunzip.c $(CFLAGS)

lzmadec.$(OBJ): lzmadec.c
	wcl -c lzmadec.c $(CFLAGS)

helpers.$(OBJ): helpers.c
	wcl -c helpers.c  $(CFLAGS)

crc32.$(OBJ): crc32.c
	wcl -c crc32.c  $(CFLAGS)

tinfl.$(OBJ): tinfl.c
	wcl -c tinfl.c $(CFLAGS)

libgz.$(OBJ): libgz.c
	wcl -c libgz.c $(CFLAGS)

# targets below are useful only for testing purposes
test-url.exe: test-url.c parseurl.$(OBJ)
	wcl test-url.c parseurl.$(OBJ) $(CFLAGS)

test-ver.exe: test-ver.c kprintf.$(OBJ) kittendj.$(OBJ) helpers.$(OBJ) lsm.$(OBJ) rtrim.$(OBJ) snprintf.$(OBJ)
	wcl test-ver.c kprintf.$(OBJ) kittendj.$(OBJ) helpers.$(OBJ) lsm.$(OBJ) rtrim.$(OBJ) snprintf.$(OBJ) $(CFLAGS)

testhttp.exe: testhttp.c helpers.$(OBJ) http.$(OBJ) parseurl.$(OBJ) net.$(OBJ)
	wcl testhttp.c helpers.$(OBJ) http.$(OBJ) parseurl.$(OBJ) net.$(OBJ)# mtcp$(DIRSEP)lib$(DIRSEP)mtcp.lib $(CFLAGS)

test-unz.exe: test-unz.c crc32.$(OBJ) kittendj.$(OBJ) kprintf.$(OBJ) libunzip.$(OBJ) lzmadec.$(OBJ) tinfl.$(OBJ)
	wcl test-unz.c crc32.$(OBJ) kittendj.$(OBJ) kprintf.$(OBJ) libunzip.$(OBJ) lzmadec.$(OBJ) tinfl.$(OBJ) $(CFLAGS)

test-gz.exe: test-gz.c crc32.$(OBJ) libgz.$(OBJ) tinfl.$(OBJ)
	wcl  test-gz.c crc32.$(OBJ) libgz.$(OBJ) tinfl.$(OBJ) $(CFLAGS)

pkg: fdnpkg16.exe
	@$(MKDIRCOMMAND) appinfo
	@$(MKDIRCOMMAND) bin
	@$(MKDIRCOMMAND) doc
	@$(MKDIRCOMMAND) doc$(DIRSEP)fdnpkg
	@$(MKDIRCOMMAND) source
	@$(MKDIRCOMMAND) source$(DIRSEP)fdnpkg
	@$(COPYCOMMAND) fdnpkg16.lsm appinfo
	@$(COPYCOMMAND) fdnpkg16.exe bin
	@$(COPYCOMMAND) fdnpkg16.cfg bin
	@$(COPYCOMMAND) fdnpkg16.txt doc$(DIRSEP)fdnpkg
	@$(COPYCOMMAND) history.txt doc$(DIRSEP)fdnpkg
	@$(COPYCOMMAND) license.txt doc$(DIRSEP)fdnpkg
	@$(COPYCOMMAND) *.c source$(DIRSEP)fdnpkg
	@$(COPYCOMMAND) *.h source$(DIRSEP)fdnpkg
	@$(COPYCOMMAND) *.txt source$(DIRSEP)fdnpkg
	@$(COPYCOMMAND) makefile source$(DIRSEP)fdnpkg
	@$(COPYCOMMAND) *.a source$(DIRSEP)fdnpkg
	@$(COPYCOMMAND) *.cfg source$(DIRSEP)fdnpkg
	@$(COPYCOMMAND) *.bin source$(DIRSEP)fdnpkg
	$(REMOVECOMMAND) fdnpkg16.zip
	zip -r -k -9 fdnpkg16.zip appinfo bin doc nls source
	deltree /Y appinfo
	deltree /Y bin
	deltree /Y doc
	deltree /Y source
	echo "fdnpkg16.zip ready!"

clean: .symbolic
	$(REMOVECOMMAND) *.$(OBJ)
	$(REMOVECOMMAND) *.exe
	$(REMOVECOMMAND) *.err
