# The MIT License (MIT)
#
# Copyright (C) 2026 Scott Duensing
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE.

# The web libraries' suite: JSON (json.c, jsonBas.c and a BASIC program
# through json.bas) and HTTP (http.c and httpBas.c over the host's own
# sockets, against a web server the suite forks; a BASIC program through
# http.bas).

include ../dvxtest/dvxtest.mk

.DEFAULT_GOAL := all

JSON_DIR  = $(DVXTEST_ROOT)/src/libs/kpunch/json
HTTP_DIR  = $(DVXTEST_ROOT)/src/libs/kpunch/http
BINDIR    = $(DVXTEST_BINDIR)/web
TEST_BIN  = $(BINDIR)/webTest
TEST_SRCS = webTest.c jsonTest.c httpTest.c
LIB_SRCS  = $(JSON_DIR)/json.c $(JSON_DIR)/jsonBas.c $(HTTP_DIR)/http.c $(HTTP_DIR)/httpBas.c
CFLAGS    = $(DVXTEST_CFLAGS) -I$(JSON_DIR) -I$(HTTP_DIR) -I$(DVXTEST_BASICDIR) -DBASIC_INCLUDE_DIR='"$(DVXTEST_ROOT)/src/include/basic"'

.PHONY: all run clean

all: run

$(TEST_BIN): $(TEST_SRCS) $(LIB_SRCS) $(DVX_MAKEFILES) $(DVXTEST_ARCHIVES) $(DVXTEST_TASKS_A) $(DVXTEST_BASRT_A) | dvxtest-libs
	@mkdir -p $(BINDIR)
	$(HOSTCC) $(CFLAGS) -o $@ $(TEST_SRCS) $(LIB_SRCS) $(DVXTEST_BASRT_A) $(DVXTEST_LDFLAGS) -Wl,--whole-archive $(DVXTEST_LIBDVX_A) $(DVXTEST_TASKS_A) $(DVXTEST_LIB) -Wl,--no-whole-archive -ldl -lm

run: $(TEST_BIN)
	cd $(BINDIR) && ASAN_OPTIONS=detect_leaks=1 ./webTest

clean:
	rm -rf $(BINDIR)
