187 lines
6.8 KiB
Makefile
187 lines
6.8 KiB
Makefile
# 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.
|
|
|
|
# DVX GUI -- Top-level Makefile
|
|
#
|
|
# Builds the full DVX stack: core library, task switcher,
|
|
# bootstrap loader, text help library, widgets, shell, and apps.
|
|
#
|
|
# Source tree mirrors bin/ layout:
|
|
# src/libs/kpunch/<libname>/ -> bin/libs/kpunch/<libname>/<libname>.lib
|
|
# src/widgets/kpunch/<widget>/ -> bin/widgets/kpunch/<widget>/<widget>.wgt
|
|
# src/apps/kpunch/<app>/ -> bin/apps/kpunch/<app>/<app>.app
|
|
# src/loader/ -> bin/DVX.EXE
|
|
# src/tools/ -> bin/host/<tool>
|
|
|
|
.PHONY: all clean libdvx libtasks loader texthelp listhelp widgets dvxshell taskmgr serial sql apps tools deploy-helpsrc compile-help deploy-sdk
|
|
|
|
all: libdvx libtasks loader texthelp listhelp tools widgets dvxshell taskmgr serial sql apps deploy-helpsrc compile-help deploy-sdk
|
|
|
|
libdvx:
|
|
$(MAKE) -C src/libs/kpunch/libdvx
|
|
|
|
libtasks:
|
|
$(MAKE) -C src/libs/kpunch/libtasks
|
|
|
|
loader: libdvx libtasks
|
|
$(MAKE) -C src/loader
|
|
|
|
texthelp: libdvx libtasks
|
|
$(MAKE) -C src/libs/kpunch/texthelp
|
|
|
|
listhelp: libdvx libtasks
|
|
$(MAKE) -C src/libs/kpunch/listhelp
|
|
|
|
widgets: libdvx libtasks texthelp listhelp
|
|
$(MAKE) -C src/widgets/kpunch
|
|
|
|
dvxshell: libdvx libtasks
|
|
$(MAKE) -C src/libs/kpunch/dvxshell
|
|
|
|
taskmgr: dvxshell
|
|
$(MAKE) -C src/libs/kpunch/taskmgr
|
|
|
|
serial: libdvx libtasks
|
|
$(MAKE) -C src/libs/kpunch/serial
|
|
|
|
sql: libdvx libtasks
|
|
$(MAKE) -C src/libs/kpunch/sql
|
|
|
|
tools:
|
|
$(MAKE) -C src/tools
|
|
|
|
apps: libdvx libtasks dvxshell tools
|
|
$(MAKE) -C src/apps/kpunch
|
|
|
|
deploy-helpsrc:
|
|
$(MAKE) -C src/tools deploy-helpsrc
|
|
|
|
HLPC = bin/host/dvxhlpc
|
|
|
|
SYSTEM_DHS = src/libs/kpunch/libdvx/sysdoc.dhs \
|
|
src/libs/kpunch/libdvx/arch.dhs src/libs/kpunch/libdvx/apiref.dhs \
|
|
src/libs/kpunch/libtasks/libtasks.dhs src/libs/kpunch/dvxshell/dvxshell.dhs src/libs/kpunch/sql/dvxsql.dhs \
|
|
src/libs/kpunch/texthelp/texthelp.dhs src/libs/kpunch/listhelp/listhelp.dhs \
|
|
src/libs/kpunch/taskmgr/taskmgr.dhs src/libs/kpunch/serial/serial.dhs \
|
|
src/apps/kpunch/dvxbasic/basrt.dhs \
|
|
src/widgets/kpunch/wgtsys.dhs
|
|
|
|
BASIC_DHS = src/apps/kpunch/dvxbasic/ideguide.dhs src/apps/kpunch/dvxbasic/langref.dhs \
|
|
src/apps/kpunch/dvxbasic/ctrlover.dhs src/apps/kpunch/dvxbasic/form.dhs
|
|
|
|
compile-help:
|
|
@mkdir -p docs
|
|
$(HLPC) -o bin/apps/kpunch/dvxhelp/dvxhelp.hlp \
|
|
--html docs/dvx_help_viewer.html \
|
|
src/apps/kpunch/dvxhelp/help.dhs
|
|
$(HLPC) -o bin/apps/kpunch/progman/dvxhelp.hlp \
|
|
--html docs/dvx_system_reference.html \
|
|
-i src/libs/kpunch/libdvx \
|
|
$(SYSTEM_DHS) \
|
|
$$(find src/widgets/kpunch -name "*.dhs" ! -path "*/wgtsys.dhs" | sort)
|
|
$(HLPC) -o bin/apps/kpunch/dvxbasic/dvxbasic.hlp \
|
|
--html docs/dvx_basic_reference.html \
|
|
$(BASIC_DHS) \
|
|
$$(find src/widgets/kpunch -name "*.bhs" | sort)
|
|
|
|
SDKDIR = bin/sdk
|
|
|
|
deploy-sdk:
|
|
@echo "Building SDK..."
|
|
@mkdir -p $(SDKDIR)/include/core $(SDKDIR)/include/shell $(SDKDIR)/include/tasks $(SDKDIR)/include/sql $(SDKDIR)/include/basic
|
|
@# Core headers (libdvx public API)
|
|
@for f in src/libs/kpunch/libdvx/dvxApp.h src/libs/kpunch/libdvx/dvxTypes.h \
|
|
src/libs/kpunch/libdvx/dvxWgt.h src/libs/kpunch/libdvx/dvxWgtP.h \
|
|
src/libs/kpunch/libdvx/dvxWm.h src/libs/kpunch/libdvx/dvxDraw.h \
|
|
src/libs/kpunch/libdvx/dvxVideo.h src/libs/kpunch/libdvx/dvxComp.h \
|
|
src/libs/kpunch/libdvx/dvxPrefs.h src/libs/kpunch/libdvx/dvxDlg.h \
|
|
src/libs/kpunch/libdvx/dvxRes.h src/libs/kpunch/libdvx/dvxFont.h \
|
|
src/libs/kpunch/libdvx/dvxCur.h src/libs/kpunch/libdvx/dvxPal.h \
|
|
src/libs/kpunch/libdvx/dvxMem.h src/libs/kpunch/libdvx/platform/dvxPlat.h; do \
|
|
[ -f "$$f" ] && cp "$$f" $(SDKDIR)/include/core/; \
|
|
done
|
|
@# Shell header
|
|
@cp src/libs/kpunch/dvxshell/shellApp.h $(SDKDIR)/include/shell/
|
|
@cp src/libs/kpunch/dvxshell/shellInf.h $(SDKDIR)/include/shell/
|
|
@# Tasks header
|
|
@cp src/libs/kpunch/libtasks/taskSwch.h $(SDKDIR)/include/tasks/
|
|
@# SQL header
|
|
@cp src/libs/kpunch/sql/dvxSql.h $(SDKDIR)/include/sql/
|
|
@# Widget headers -- one subdir per widget
|
|
@for d in src/widgets/kpunch/*/; do \
|
|
for h in "$$d"*.h; do \
|
|
[ -f "$$h" ] || continue; \
|
|
wgt=$$(basename "$$d"); \
|
|
mkdir -p $(SDKDIR)/include/widget/"$$wgt"; \
|
|
cp "$$h" $(SDKDIR)/include/widget/"$$wgt"/; \
|
|
done; \
|
|
done
|
|
@# BASIC include files
|
|
@cp src/include/basic/*.bas $(SDKDIR)/include/basic/
|
|
@# README
|
|
@printf '%s\n' \
|
|
'DVX SDK' \
|
|
'=======' \
|
|
'' \
|
|
'Headers for developing applications and widgets against the DVX GUI.' \
|
|
'' \
|
|
'Directory Structure' \
|
|
'-------------------' \
|
|
'' \
|
|
' include/' \
|
|
' core/ DVX core headers (types, drawing, windows, widgets)' \
|
|
' shell/ Shell/app loading API' \
|
|
' tasks/ Cooperative task switching API' \
|
|
' sql/ SQLite database wrapper API' \
|
|
' widget/ Per-widget public API headers' \
|
|
' basic/ BASIC include files (DECLARE LIBRARY modules)' \
|
|
'' \
|
|
'Requirements' \
|
|
'------------' \
|
|
'' \
|
|
' - DJGPP cross-compiler (i586-pc-msdosdjgpp-gcc)' \
|
|
' - dxe3gen (included with DJGPP)' \
|
|
' - DVX resource compiler (SYSTEM/DVXRES.EXE on the target,' \
|
|
' or bin/host/dvxres on the host)' \
|
|
' - DVX help compiler (SYSTEM/DVXHLPC.EXE on the target,' \
|
|
' or bin/host/dvxhlpc on the host)' \
|
|
'' \
|
|
'For complete working examples, see the app sources under' \
|
|
'src/apps/kpunch/ in the DVX repository.' \
|
|
> $(SDKDIR)/README.TXT
|
|
|
|
clean:
|
|
$(MAKE) -C src/libs/kpunch/libdvx clean
|
|
$(MAKE) -C src/libs/kpunch/libtasks clean
|
|
$(MAKE) -C src/loader clean
|
|
$(MAKE) -C src/libs/kpunch/texthelp clean
|
|
$(MAKE) -C src/libs/kpunch/listhelp clean
|
|
$(MAKE) -C src/widgets/kpunch clean
|
|
$(MAKE) -C src/libs/kpunch/dvxshell clean
|
|
$(MAKE) -C src/libs/kpunch/taskmgr clean
|
|
$(MAKE) -C src/libs/kpunch/serial clean
|
|
$(MAKE) -C src/libs/kpunch/sql clean
|
|
$(MAKE) -C src/apps/kpunch clean
|
|
$(MAKE) -C src/tools clean
|
|
-rmdir obj 2>/dev/null
|
|
-rm -rf bin/config bin/widgets bin/libs bin/sdk
|
|
-rm -f docs/*.html
|