CFLAGS = -std=gnu89 -s -O3 -Wall -Wextra -Wno-long-long -pedantic

all: fdnpkg.exe test-ver.exe test-unz.exe test-url.exe testhttp.exe

fdnpkg.exe: fdnpkg.o crc32.o kprintf.o kinflate.o kittendj.o fileexst.o http.o libunzip.o loadconf.o lsm.o net.o lzmadec.o pkgdb.o pkginst.o pkgsrch.o pkgrem.o showinst.o getdelim.o rtrim.o parsecmd.o parseurl.o snprintf.o helpers.o
	gcc fdnpkg.o crc32.o kprintf.o kinflate.o kittendj.o fileexst.o http.o libunzip.o loadconf.o lsm.o net.o lzmadec.o pkgdb.o pkginst.o pkgsrch.o pkgrem.o showinst.o getdelim.o rtrim.o parsecmd.o parseurl.o snprintf.o helpers.o watt32/bin/libwatt.a -o fdnpkg.exe
	upx --lzma --best --all-filters fdnpkg.exe

fdnpkg.o: fdnpkg.c
	gcc -c fdnpkg.c -o fdnpkg.o $(CFLAGS)

htget.o: htget.c
	gcc -c htget.c -o htget.o $(CFLAGS) -I watt32/inc

loadconf.o: loadconf.c
	gcc -c loadconf.c -o loadconf.o $(CFLAGS)

lsm.o: lsm.c
	gcc -c lsm.c -o lsm.o $(CFLAGS)

net.o: net.c
	gcc -c net.c -o net.o -I watt32/inc $(CFLAGS)

parseurl.o: parseurl.c
	gcc -c parseurl.c -o parseurl.o $(CFLAGS)

pkgdb.o: pkgdb.c
	gcc -c pkgdb.c -o pkgdb.o $(CFLAGS)

pkgsrch.o: pkgsrch.c
	gcc -c pkgsrch.c -o pkgsrch.o $(CFLAGS)

pkgrem.o: pkgrem.c
	gcc -c pkgrem.c -o pkgrem.o $(CFLAGS)

pkginst.o: pkginst.c
	gcc -c pkginst.c -o pkginst.o $(CFLAGS)

showinst.o: showinst.c
	gcc -c showinst.c -o showinst.o $(CFLAGS)

getdelim.o: getdelim.c
	gcc -c getdelim.c -o getdelim.o $(CFLAGS)

fileexst.o: fileexst.c
	gcc -c fileexst.c -o fileexst.o $(CFLAGS)

http.o: http.c
	gcc -c http.c -o http.o $(CFLAGS)

kittendj.o: kittendj.c
	gcc -c kittendj.c -o kittendj.o $(CFLAGS)

kinflate.o: kinflate.c
	gcc -c kinflate.c -o kinflate.o $(CFLAGS)

kprintf.o: kprintf.c
	gcc -c kprintf.c -o kprintf.o $(CFLAGS)

rtrim.o: rtrim.c
	gcc -c rtrim.c -o rtrim.o $(CFLAGS)

parsecmd.o: parsecmd.c
	gcc -c parsecmd.c -o parsecmd.o $(CFLAGS)

snprintf.o: snprintf.c
	gcc -c snprintf.c -o snprintf.o $(CFLAGS)

libunzip.o: libunzip.c
	gcc -c libunzip.c -o libunzip.o $(CFLAGS)

lzmadec.o: lzmadec.c
	gcc -c lzmadec.c -o lzmadec.o $(CFLAGS)

helpers.o: helpers.c
	gcc -c helpers.c -o helpers.o $(CFLAGS)

crc32.o: crc32.c
	gcc -c crc32.c -o crc32.o $(CFLAGS)

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

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

testhttp.exe: testhttp.c http.o parseurl.o net.o
	gcc testhttp.c http.o parseurl.o net.o watt32/bin/libwatt.a -o testhttp.exe $(CFLAGS)

test-unz.exe: test-unz.c crc32.o kinflate.o kittendj.o kprintf.o libunzip.o lzmadec.o
	gcc -g test-unz.c crc32.o kinflate.o kittendj.o kprintf.o libunzip.o lzmadec.o -o test-unz.exe $(CFLAGS)

pkg: fdnpkg.exe
	mkdir appinfo
	mkdir bin
	mkdir doc
	mkdir doc\fdnpkg
	mkdir nls
	mkdir source
	mkdir source\fdnpkg
	copy fdnpkg.lsm appinfo
	copy fdnpkg.exe bin
	copy fdnpkg.cfg bin
	copy fdnpkg.txt doc\fdnpkg
	copy history.txt doc\fdnpkg
	copy license.txt doc\fdnpkg
	copy fdnpkg.en nls
	copy *.c source\fdnpkg
	copy *.h source\fdnpkg
	copy *.txt source\fdnpkg
	copy makefile source\fdnpkg
	copy *.a source\fdnpkg
	copy *.cfg source\fdnpkg
	del fdnpkg.zip
	zip -r -9 fdnpkg.zip appinfo bin doc nls source
	deltree /Y appinfo
	deltree /Y bin
	deltree /Y doc
	deltree /Y nls
	deltree /Y source
	echo "fdnpkg.zip ready!"

clean:
	del *.o
	del *.exe
