DVX_GUI/tools/Makefile

140 lines
4.5 KiB
Makefile

# DVX Tools Makefile
#
# Builds native (host) utilities and cross-compiled DOS tools.
CC = gcc
CFLAGS = -O2 -Wall -Wextra -Werror -Wno-format-truncation -I../core -I../core/platform
DJGPP_PREFIX = $(HOME)/djgpp/djgpp
DOSCC = $(DJGPP_PREFIX)/bin/i586-pc-msdosdjgpp-gcc
EXE2COFF = $(DJGPP_PREFIX)/i586-pc-msdosdjgpp/bin/exe2coff
CWSDSTUB = $(DJGPP_PREFIX)/i586-pc-msdosdjgpp/bin/CWSDSTUB.EXE
DOSCFLAGS = -O2 -Wall -Wextra -Werror -Wno-format-truncation -march=i486 -mtune=i586 -I../core -I../core/platform
BINDIR = ../bin
HOSTDIR = ../bin/host
CONFIGDIR = ../bin/config
SYSTEMDIR = ../bin/system
.PHONY: all clean deploy-helpsrc
all: $(HOSTDIR)/dvxres $(HOSTDIR)/mkicon $(HOSTDIR)/mktbicon $(HOSTDIR)/mkwgticon $(HOSTDIR)/bmp2raw $(HOSTDIR)/dvxhlpc $(SYSTEMDIR)/SPLASH.RAW $(SYSTEMDIR)/DVXHLPC.EXE $(SYSTEMDIR)/DVXRES.EXE
$(HOSTDIR)/dvxres: dvxres.c ../core/dvxResource.c ../core/dvxRes.h | $(HOSTDIR)
$(CC) $(CFLAGS) -o $@ dvxres.c ../core/dvxResource.c
$(HOSTDIR)/mkicon: mkicon.c | $(HOSTDIR)
$(CC) $(CFLAGS) -o $@ mkicon.c -lm
$(HOSTDIR)/mktbicon: mktbicon.c | $(HOSTDIR)
$(CC) $(CFLAGS) -o $@ mktbicon.c
$(HOSTDIR)/mkwgticon: mkwgticon.c | $(HOSTDIR)
$(CC) $(CFLAGS) -o $@ mkwgticon.c
$(HOSTDIR)/bmp2raw: bmp2raw.c | $(HOSTDIR)
$(CC) $(CFLAGS) -o $@ bmp2raw.c
$(HOSTDIR)/dvxhlpc: dvxhlpc.c ../apps/dvxhelp/hlpformat.h | $(HOSTDIR)
$(CC) $(CFLAGS) -o $@ dvxhlpc.c
$(HOSTDIR):
mkdir -p $(HOSTDIR)
$(SYSTEMDIR)/SPLASH.RAW: $(HOSTDIR)/bmp2raw ../assets/splash.bmp | $(SYSTEMDIR)
$(HOSTDIR)/bmp2raw ../assets/splash.bmp $@
$(BINDIR):
mkdir -p $(BINDIR)
$(CONFIGDIR):
mkdir -p $(CONFIGDIR)
$(SYSTEMDIR)/DVXHLPC.EXE: dvxhlpc.c hlpcCompile.h ../apps/dvxhelp/hlpformat.h | $(SYSTEMDIR)
$(DOSCC) $(DOSCFLAGS) -o $(SYSTEMDIR)/dvxhlpc.exe dvxhlpc.c
$(EXE2COFF) $(SYSTEMDIR)/dvxhlpc.exe
cat $(CWSDSTUB) $(SYSTEMDIR)/dvxhlpc > $@
rm -f $(SYSTEMDIR)/dvxhlpc $(SYSTEMDIR)/dvxhlpc.exe
# Object file for linking into the loader (no main)
../obj/loader/dvxhlpc.o: dvxhlpc.c hlpcCompile.h ../apps/dvxhelp/hlpformat.h | ../obj/loader
$(DOSCC) $(DOSCFLAGS) -DHLPC_NO_MAIN -c -o $@ dvxhlpc.c
../obj/loader:
mkdir -p ../obj/loader
$(SYSTEMDIR)/DVXRES.EXE: dvxres.c ../core/dvxResource.c ../core/dvxRes.h | $(SYSTEMDIR)
$(DOSCC) $(DOSCFLAGS) -o $(SYSTEMDIR)/dvxres.exe dvxres.c ../core/dvxResource.c
$(EXE2COFF) $(SYSTEMDIR)/dvxres.exe
cat $(CWSDSTUB) $(SYSTEMDIR)/dvxres > $@
rm -f $(SYSTEMDIR)/dvxres $(SYSTEMDIR)/dvxres.exe
$(SYSTEMDIR):
mkdir -p $(SYSTEMDIR)
deploy-helpsrc:
@echo "Deploying help source files..."
@# Deploy help images from core/
@for f in ../core/*.png; do \
[ -f "$$f" ] || continue; \
name=$$(basename "$$f" | tr a-z A-Z); \
cp "$$f" $(BINDIR)/libs/kpunch/libdvx/"$$name"; \
done
@for pair in \
"../core/*.dhs:$(BINDIR)/libs/kpunch/libdvx" \
"../tasks/*.dhs:$(BINDIR)/libs/kpunch/libtasks" \
"../shell/*.dhs:$(BINDIR)/libs/kpunch/dvxshell" \
"../sql/*.dhs:$(BINDIR)/libs/kpunch/dvxsql" \
"../texthelp/*.dhs:$(BINDIR)/libs/kpunch/texthelp" \
"../listhelp/*.dhs:$(BINDIR)/libs/kpunch/listhelp" \
"../taskmgr/*.dhs:$(BINDIR)/libs/kpunch/taskmgr" \
"../serial/*.dhs:$(BINDIR)/libs/kpunch/serial" \
"../apps/dvxbasic/basrt.dhs:$(BINDIR)/libs/kpunch/basrt" \
; do \
src=$${pair%%:*}; dst=$${pair##*:}; \
for f in $$src; do \
[ -f "$$f" ] || continue; \
name=$$(basename "$$f" | tr a-z A-Z); \
cp "$$f" "$$dst"/"$$name"; \
done; \
done
@for f in ../widgets/*.dhs; do \
[ -f "$$f" ] || continue; \
name=$$(basename "$$f" | tr a-z A-Z); \
cp "$$f" $(BINDIR)/widgets/kpunch/"$$name"; \
done
@for d in ../widgets/*/; do \
for f in "$$d"*.dhs "$$d"*.bhs; do \
[ -f "$$f" ] || continue; \
name=$$(basename "$$f" | tr a-z A-Z); \
base=$$(basename "$$f" | tr A-Z a-z); \
base=$${base%.dhs}; \
base=$${base%.bhs}; \
if [ -d $(BINDIR)/widgets/kpunch/"$$base" ]; then \
cp "$$f" $(BINDIR)/widgets/kpunch/"$$base"/"$$name"; \
fi; \
done; \
done
@for f in ../apps/dvxbasic/*.dhs; do \
[ -f "$$f" ] || continue; \
name=$$(basename "$$f" | tr a-z A-Z); \
cp "$$f" $(BINDIR)/apps/kpunch/dvxbasic/"$$name"; \
done
@for f in ../apps/dvxhelp/*.dhs; do \
[ -f "$$f" ] || continue; \
name=$$(basename "$$f" | tr a-z A-Z); \
cp "$$f" $(BINDIR)/apps/kpunch/dvxhelp/"$$name"; \
done
@echo "Deploying help config files..."
@for d in ../apps/*/; do \
for f in "$$d"*.hcf; do \
[ -f "$$f" ] || continue; \
appdir=$$(basename "$$d"); \
name=$$(basename "$$f" | tr a-z A-Z); \
cp "$$f" $(BINDIR)/apps/kpunch/"$$appdir"/"$$name"; \
done; \
done
clean:
rm -rf $(HOSTDIR)
rm -rf $(SYSTEMDIR)