Major project layout change. Source locations now more match where binaries end up.

This commit is contained in:
Scott Duensing 2026-04-16 19:33:17 -05:00
parent dcd120d769
commit e6305db3b5
737 changed files with 589 additions and 480 deletions

181
Makefile
View file

@ -2,131 +2,164 @@
# #
# Builds the full DVX stack: core library, task switcher, # Builds the full DVX stack: core library, task switcher,
# bootstrap loader, text help library, widgets, shell, and apps. # 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 core tasks loader texthelp listhelp widgets shell taskmgr serial sql apps tools deploy-helpsrc compile-help deploy-sdk .PHONY: all clean libdvx libtasks loader texthelp listhelp widgets dvxshell taskmgr serial sql apps tools deploy-helpsrc compile-help deploy-sdk
all: core tasks loader texthelp listhelp tools widgets shell taskmgr serial sql apps 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
core: libdvx:
$(MAKE) -C core $(MAKE) -C src/libs/kpunch/libdvx
tasks: libtasks:
$(MAKE) -C tasks $(MAKE) -C src/libs/kpunch/libtasks
loader: core tasks loader: libdvx libtasks
$(MAKE) -C loader $(MAKE) -C src/loader
texthelp: core tasks texthelp: libdvx libtasks
$(MAKE) -C texthelp $(MAKE) -C src/libs/kpunch/texthelp
listhelp: core tasks listhelp: libdvx libtasks
$(MAKE) -C listhelp $(MAKE) -C src/libs/kpunch/listhelp
widgets: core tasks texthelp listhelp widgets: libdvx libtasks texthelp listhelp
$(MAKE) -C widgets $(MAKE) -C src/widgets/kpunch
shell: core tasks dvxshell: libdvx libtasks
$(MAKE) -C shell $(MAKE) -C src/libs/kpunch/dvxshell
taskmgr: shell taskmgr: dvxshell
$(MAKE) -C taskmgr $(MAKE) -C src/libs/kpunch/taskmgr
serial: core tasks serial: libdvx libtasks
$(MAKE) -C serial $(MAKE) -C src/libs/kpunch/serial
sql: core tasks sql: libdvx libtasks
$(MAKE) -C sql $(MAKE) -C src/libs/kpunch/sql
tools: tools:
$(MAKE) -C tools $(MAKE) -C src/tools
apps: core tasks shell tools apps: libdvx libtasks dvxshell tools
$(MAKE) -C apps $(MAKE) -C src/apps/kpunch
deploy-helpsrc: deploy-helpsrc:
$(MAKE) -C tools deploy-helpsrc $(MAKE) -C src/tools deploy-helpsrc
HLPC = bin/host/dvxhlpc HLPC = bin/host/dvxhlpc
SYSTEM_DHS = core/sysdoc.dhs \ SYSTEM_DHS = src/libs/kpunch/libdvx/sysdoc.dhs \
core/arch.dhs core/apiref.dhs \ src/libs/kpunch/libdvx/arch.dhs src/libs/kpunch/libdvx/apiref.dhs \
tasks/libtasks.dhs shell/dvxshell.dhs sql/dvxsql.dhs \ src/libs/kpunch/libtasks/libtasks.dhs src/libs/kpunch/dvxshell/dvxshell.dhs src/libs/kpunch/sql/dvxsql.dhs \
texthelp/texthelp.dhs listhelp/listhelp.dhs \ src/libs/kpunch/texthelp/texthelp.dhs src/libs/kpunch/listhelp/listhelp.dhs \
taskmgr/taskmgr.dhs serial/serial.dhs \ src/libs/kpunch/taskmgr/taskmgr.dhs src/libs/kpunch/serial/serial.dhs \
apps/dvxbasic/basrt.dhs \ src/apps/kpunch/dvxbasic/basrt.dhs \
widgets/wgtsys.dhs src/widgets/kpunch/wgtsys.dhs
BASIC_DHS = apps/dvxbasic/ideguide.dhs apps/dvxbasic/langref.dhs \ BASIC_DHS = src/apps/kpunch/dvxbasic/ideguide.dhs src/apps/kpunch/dvxbasic/langref.dhs \
apps/dvxbasic/ctrlover.dhs apps/dvxbasic/form.dhs src/apps/kpunch/dvxbasic/ctrlover.dhs src/apps/kpunch/dvxbasic/form.dhs
compile-help: compile-help:
@mkdir -p docs @mkdir -p docs
$(HLPC) -o bin/apps/kpunch/dvxhelp/dvxhelp.hlp \ $(HLPC) -o bin/apps/kpunch/dvxhelp/dvxhelp.hlp \
--html docs/dvx_help_viewer.html \ --html docs/dvx_help_viewer.html \
apps/dvxhelp/help.dhs src/apps/kpunch/dvxhelp/help.dhs
$(HLPC) -o bin/apps/kpunch/progman/dvxhelp.hlp \ $(HLPC) -o bin/apps/kpunch/progman/dvxhelp.hlp \
--html docs/dvx_system_reference.html \ --html docs/dvx_system_reference.html \
-i core \ -i src/libs/kpunch/libdvx \
$(SYSTEM_DHS) \ $(SYSTEM_DHS) \
$$(find widgets -name "*.dhs" ! -path "widgets/wgtsys.dhs" | sort) $$(find src/widgets/kpunch -name "*.dhs" ! -path "*/wgtsys.dhs" | sort)
$(HLPC) -o bin/apps/kpunch/dvxbasic/dvxbasic.hlp \ $(HLPC) -o bin/apps/kpunch/dvxbasic/dvxbasic.hlp \
--html docs/dvx_basic_reference.html \ --html docs/dvx_basic_reference.html \
$(BASIC_DHS) \ $(BASIC_DHS) \
$$(find widgets -name "*.bhs" | sort) $$(find src/widgets/kpunch -name "*.bhs" | sort)
SDKDIR = bin/sdk SDKDIR = bin/sdk
deploy-sdk: deploy-sdk:
@echo "Building SDK..." @echo "Building SDK..."
@mkdir -p $(SDKDIR)/include/core $(SDKDIR)/include/shell $(SDKDIR)/include/tasks $(SDKDIR)/include/sql @mkdir -p $(SDKDIR)/include/core $(SDKDIR)/include/shell $(SDKDIR)/include/tasks $(SDKDIR)/include/sql $(SDKDIR)/include/basic
@mkdir -p $(SDKDIR)/samples/hello $(SDKDIR)/samples/widget @# Core headers (libdvx public API)
@# Core headers @for f in src/libs/kpunch/libdvx/dvxApp.h src/libs/kpunch/libdvx/dvxTypes.h \
@for f in core/dvxApp.h core/dvxTypes.h core/dvxWgt.h core/dvxWgtP.h \ src/libs/kpunch/libdvx/dvxWgt.h src/libs/kpunch/libdvx/dvxWgtP.h \
core/dvxWm.h core/dvxDraw.h core/dvxVideo.h core/dvxComp.h \ src/libs/kpunch/libdvx/dvxWm.h src/libs/kpunch/libdvx/dvxDraw.h \
core/dvxPrefs.h core/dvxDlg.h core/dvxRes.h core/dvxFont.h \ src/libs/kpunch/libdvx/dvxVideo.h src/libs/kpunch/libdvx/dvxComp.h \
core/dvxCur.h core/dvxPal.h core/dvxPlat.h; do \ src/libs/kpunch/libdvx/dvxPrefs.h src/libs/kpunch/libdvx/dvxDlg.h \
[ -f "$$f" ] || continue; \ src/libs/kpunch/libdvx/dvxRes.h src/libs/kpunch/libdvx/dvxFont.h \
cp "$$f" $(SDKDIR)/include/core/; \ 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 done
@# Shell header @# Shell header
@cp shell/shellApp.h $(SDKDIR)/include/shell/ 2>/dev/null || true @cp src/libs/kpunch/dvxshell/shellApp.h $(SDKDIR)/include/shell/
@cp src/libs/kpunch/dvxshell/shellInf.h $(SDKDIR)/include/shell/
@# Tasks header @# Tasks header
@for f in tasks/taskSwch.h tasks/taskswitch.h; do \ @cp src/libs/kpunch/libtasks/taskSwch.h $(SDKDIR)/include/tasks/
[ -f "$$f" ] && cp "$$f" $(SDKDIR)/include/tasks/ && break; \
done
@# SQL header @# SQL header
@cp sql/dvxSql.h $(SDKDIR)/include/sql/ 2>/dev/null || true @cp src/libs/kpunch/sql/dvxSql.h $(SDKDIR)/include/sql/
@# Widget headers — one per widget @# Widget headers -- one subdir per widget
@for d in widgets/*/; do \ @for d in src/widgets/kpunch/*/; do \
for h in "$$d"*.h; do \ for h in "$$d"*.h; do \
[ -f "$$h" ] || continue; \ [ -f "$$h" ] || continue; \
base=$$(basename "$$h"); \
wgt=$$(basename "$$d"); \ wgt=$$(basename "$$d"); \
mkdir -p $(SDKDIR)/include/widget/"$$wgt"; \ mkdir -p $(SDKDIR)/include/widget/"$$wgt"; \
cp "$$h" $(SDKDIR)/include/widget/"$$wgt"/; \ cp "$$h" $(SDKDIR)/include/widget/"$$wgt"/; \
done; \ done; \
done done
@# BASIC include files @# BASIC include files
@mkdir -p $(SDKDIR)/include/basic @cp src/include/basic/*.bas $(SDKDIR)/include/basic/
@cp sdk/include/basic/*.bas $(SDKDIR)/include/basic/ 2>/dev/null || true @# README
@# Samples and readme @printf '%s\n' \
@cp -r sdk/samples $(SDKDIR)/ 'DVX SDK' \
@cp sdk/readme.txt $(SDKDIR)/README.TXT '=======' \
'' \
'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: clean:
$(MAKE) -C core clean $(MAKE) -C src/libs/kpunch/libdvx clean
$(MAKE) -C tasks clean $(MAKE) -C src/libs/kpunch/libtasks clean
$(MAKE) -C loader clean $(MAKE) -C src/loader clean
$(MAKE) -C texthelp clean $(MAKE) -C src/libs/kpunch/texthelp clean
$(MAKE) -C listhelp clean $(MAKE) -C src/libs/kpunch/listhelp clean
$(MAKE) -C widgets clean $(MAKE) -C src/widgets/kpunch clean
$(MAKE) -C shell clean $(MAKE) -C src/libs/kpunch/dvxshell clean
$(MAKE) -C taskmgr clean $(MAKE) -C src/libs/kpunch/taskmgr clean
$(MAKE) -C serial clean $(MAKE) -C src/libs/kpunch/serial clean
$(MAKE) -C sql clean $(MAKE) -C src/libs/kpunch/sql clean
$(MAKE) -C apps clean $(MAKE) -C src/apps/kpunch clean
$(MAKE) -C tools clean $(MAKE) -C src/tools clean
-rmdir obj 2>/dev/null -rmdir obj 2>/dev/null
-rm -rf bin/config bin/widgets bin/libs bin/sdk -rm -rf bin/config bin/widgets bin/libs bin/sdk
-rm -f docs/*.html -rm -f docs/*.html
-rmdir bin/apps/kpunch/cpanel bin/apps/kpunch/imgview bin/apps/kpunch/progman bin/apps/kpunch/notepad bin/apps/kpunch/clock bin/apps/kpunch/dvxdemo bin/apps/kpunch bin/apps bin 2>/dev/null

View file

@ -1,166 +0,0 @@
# DVX Shell Applications Makefile -- builds DXE3 modules
DJGPP_PREFIX = $(HOME)/djgpp/djgpp
DJGPP_LIBPATH = $(HOME)/claude/windriver/tools/lib
CC = $(DJGPP_PREFIX)/bin/i586-pc-msdosdjgpp-gcc
DXE3GEN = PATH=$(DJGPP_PREFIX)/bin:$(PATH) DJDIR=$(DJGPP_PREFIX)/i586-pc-msdosdjgpp $(DJGPP_PREFIX)/i586-pc-msdosdjgpp/bin/dxe3gen
CFLAGS = -O2 -Wall -Wextra -Werror -Wno-type-limits -Wno-sign-compare -Wno-format-truncation -march=i486 -mtune=i586 -I../core -I../core/platform -I../core/thirdparty -I../widgets -I../tasks -I../core/thirdparty -I../shell
OBJDIR = ../obj/apps
BINDIR = ../bin/apps
DVXRES = ../bin/host/dvxres
# App definitions: each is a subdir with a single .c file
APPS = progman clock dvxdemo cpanel dvxhelp
BASCOMP = ../bin/host/bascomp
BASICAPPS = iconed notepad-bas imgview-bas helpedit resedit basicdemo
.PHONY: all clean $(APPS) dvxbasic $(BASICAPPS)
all: $(APPS) dvxbasic $(BASICAPPS)
dvxbasic:
$(MAKE) -C dvxbasic
cpanel: $(BINDIR)/kpunch/cpanel/cpanel.app
imgview: $(BINDIR)/kpunch/imgview/imgview.app
progman: $(BINDIR)/kpunch/progman/progman.app
notepad: $(BINDIR)/kpunch/notepad/notepad.app
clock: $(BINDIR)/kpunch/clock/clock.app
dvxdemo: $(BINDIR)/kpunch/dvxdemo/dvxdemo.app
dvxhelp: $(BINDIR)/kpunch/dvxhelp/dvxhelp.app
$(BINDIR)/kpunch/cpanel/cpanel.app: $(OBJDIR)/cpanel.o cpanel/cpanel.res cpanel/icon32.bmp | $(BINDIR)/kpunch/cpanel
$(DXE3GEN) -o $@ -U $<
cd cpanel && ../$(DVXRES) build ../$@ cpanel.res
$(BINDIR)/kpunch/imgview/imgview.app: $(OBJDIR)/imgview.o imgview/imgview.res imgview/icon32.bmp | $(BINDIR)/kpunch/imgview
$(DXE3GEN) -o $@ -U $<
cd imgview && ../$(DVXRES) build ../$@ imgview.res
$(BINDIR)/kpunch/progman/progman.app: $(OBJDIR)/progman.o | $(BINDIR)/kpunch/progman
$(DXE3GEN) -o $@ -U $<
$(BINDIR)/kpunch/notepad/notepad.app: $(OBJDIR)/notepad.o notepad/notepad.res notepad/icon32.bmp | $(BINDIR)/kpunch/notepad
$(DXE3GEN) -o $@ -U $<
cd notepad && ../$(DVXRES) build ../$@ notepad.res
$(BINDIR)/kpunch/clock/clock.app: $(OBJDIR)/clock.o clock/clock.res clock/icon32.bmp | $(BINDIR)/kpunch/clock
$(DXE3GEN) -o $@ -U $<
cd clock && ../$(DVXRES) build ../$@ clock.res
DVXDEMO_BMPS = logo.bmp new.bmp open.bmp sample.bmp save.bmp
$(BINDIR)/kpunch/dvxdemo/dvxdemo.app: $(OBJDIR)/dvxdemo.o $(addprefix dvxdemo/,$(DVXDEMO_BMPS)) dvxdemo/dvxdemo.res dvxdemo/icon32.bmp | $(BINDIR)/kpunch/dvxdemo
$(DXE3GEN) -o $@ -U $<
cd dvxdemo && ../$(DVXRES) build ../$@ dvxdemo.res
cp $(addprefix dvxdemo/,$(DVXDEMO_BMPS)) $(BINDIR)/kpunch/dvxdemo/
$(OBJDIR)/cpanel.o: cpanel/cpanel.c | $(OBJDIR)
$(CC) $(CFLAGS) -c -o $@ $<
$(OBJDIR)/imgview.o: imgview/imgview.c | $(OBJDIR)
$(CC) $(CFLAGS) -c -o $@ $<
$(OBJDIR)/progman.o: progman/progman.c | $(OBJDIR)
$(CC) $(CFLAGS) -c -o $@ $<
$(OBJDIR)/notepad.o: notepad/notepad.c | $(OBJDIR)
$(CC) $(CFLAGS) -c -o $@ $<
$(OBJDIR)/clock.o: clock/clock.c | $(OBJDIR)
$(CC) $(CFLAGS) -c -o $@ $<
$(OBJDIR)/dvxdemo.o: dvxdemo/dvxdemo.c | $(OBJDIR)
$(CC) $(CFLAGS) -c -o $@ $<
$(BINDIR)/kpunch/dvxhelp/dvxhelp.app: $(OBJDIR)/dvxhelp.o dvxhelp/dvxhelp.res dvxhelp/icon32.bmp | $(BINDIR)/kpunch/dvxhelp
$(DXE3GEN) -o $@ -U $<
cd dvxhelp && ../$(DVXRES) build ../$@ dvxhelp.res
$(OBJDIR)/dvxhelp.o: dvxhelp/dvxhelp.c dvxhelp/hlpformat.h | $(OBJDIR)
$(CC) $(CFLAGS) -c -o $@ $<
# BASIC apps (compiled from .dbp projects via bascomp)
iconed: $(BINDIR)/kpunch/iconed/iconed.app
$(BINDIR)/kpunch/iconed/iconed.app: ../sdk/samples/basic/iconed/iconed.dbp ../sdk/samples/basic/iconed/iconed.frm ../sdk/samples/basic/iconed/ICON32.BMP $(BASCOMP) | $(BINDIR)/kpunch/iconed dvxbasic
$(BASCOMP) ../sdk/samples/basic/iconed/iconed.dbp -o $@ -release
notepad-bas: $(BINDIR)/kpunch/notepad/notepad.app
$(BINDIR)/kpunch/notepad/notepad.app: ../sdk/samples/basic/notepad/notepad.dbp ../sdk/samples/basic/notepad/notepad.frm ../sdk/samples/basic/notepad/ICON32.BMP $(BASCOMP) | $(BINDIR)/kpunch/notepad dvxbasic
$(BASCOMP) ../sdk/samples/basic/notepad/notepad.dbp -o $@ -release
imgview-bas: $(BINDIR)/kpunch/imgview/imgview.app
$(BINDIR)/kpunch/imgview/imgview.app: ../sdk/samples/basic/imgview/imgview.dbp ../sdk/samples/basic/imgview/imgview.frm ../sdk/samples/basic/imgview/ICON32.BMP $(BASCOMP) | $(BINDIR)/kpunch/imgview dvxbasic
$(BASCOMP) ../sdk/samples/basic/imgview/imgview.dbp -o $@ -release
helpedit: $(BINDIR)/kpunch/dvxhelp/helpedit.app
$(BINDIR)/kpunch/dvxhelp/helpedit.app: ../sdk/samples/basic/helpedit/helpedit.dbp ../sdk/samples/basic/helpedit/helpedit.frm ../sdk/samples/basic/helpedit/ICON32.BMP $(BASCOMP) | $(BINDIR)/kpunch/dvxhelp dvxbasic
$(BASCOMP) ../sdk/samples/basic/helpedit/helpedit.dbp -o $@ -release
$(DVXRES) add $@ helpfile text "dvxhelp.hlp"
resedit: $(BINDIR)/kpunch/resedit/resedit.app
$(BINDIR)/kpunch/resedit/resedit.app: ../sdk/samples/basic/resedit/resedit.dbp ../sdk/samples/basic/resedit/resedit.frm ../sdk/samples/basic/resedit/ICON32.BMP $(BASCOMP) | $(BINDIR)/kpunch/resedit dvxbasic
$(BASCOMP) ../sdk/samples/basic/resedit/resedit.dbp -o $@ -release
$(BINDIR)/kpunch/resedit:
mkdir -p $(BINDIR)/kpunch/resedit
basicdemo: $(BINDIR)/kpunch/basicdemo/basicdemo.app
$(BINDIR)/kpunch/basicdemo/basicdemo.app: ../sdk/samples/basic/basicdemo/basicdemo.dbp ../sdk/samples/basic/basicdemo/basicdemo.frm ../sdk/samples/basic/basicdemo/ICON32.BMP $(BASCOMP) | $(BINDIR)/kpunch/basicdemo dvxbasic
$(BASCOMP) ../sdk/samples/basic/basicdemo/basicdemo.dbp -o $@ -release
$(BINDIR)/kpunch/basicdemo:
mkdir -p $(BINDIR)/kpunch/basicdemo
$(BINDIR)/kpunch/iconed:
mkdir -p $(BINDIR)/kpunch/iconed
$(OBJDIR):
mkdir -p $(OBJDIR)
$(BINDIR)/kpunch/cpanel:
mkdir -p $(BINDIR)/kpunch/cpanel
$(BINDIR)/kpunch/imgview:
mkdir -p $(BINDIR)/kpunch/imgview
$(BINDIR)/kpunch/progman:
mkdir -p $(BINDIR)/kpunch/progman
$(BINDIR)/kpunch/notepad:
mkdir -p $(BINDIR)/kpunch/notepad
$(BINDIR)/kpunch/clock:
mkdir -p $(BINDIR)/kpunch/clock
$(BINDIR)/kpunch/dvxdemo:
mkdir -p $(BINDIR)/kpunch/dvxdemo
$(BINDIR)/kpunch/dvxhelp:
mkdir -p $(BINDIR)/kpunch/dvxhelp
# Dependencies
$(OBJDIR)/imgview.o: imgview/imgview.c ../core/dvxApp.h ../core/dvxDlg.h ../core/dvxWgt.h ../core/dvxWm.h ../core/dvxVideo.h ../shell/shellApp.h
$(OBJDIR)/cpanel.o: cpanel/cpanel.c ../core/dvxApp.h ../core/dvxDlg.h ../core/dvxPrefs.h ../core/dvxWgt.h ../core/dvxWm.h ../core/platform/dvxPlat.h ../shell/shellApp.h
$(OBJDIR)/progman.o: progman/progman.c ../core/dvxApp.h ../core/dvxDlg.h ../core/dvxWgt.h ../core/dvxWm.h ../shell/shellApp.h ../shell/shellInf.h
$(OBJDIR)/notepad.o: notepad/notepad.c ../core/dvxApp.h ../core/dvxDlg.h ../core/dvxWgt.h ../core/dvxWm.h ../shell/shellApp.h
$(OBJDIR)/clock.o: clock/clock.c ../core/dvxApp.h ../core/dvxWgt.h ../core/dvxDraw.h ../core/dvxVideo.h ../shell/shellApp.h ../tasks/taskSwch.h
$(OBJDIR)/dvxdemo.o: dvxdemo/dvxdemo.c ../core/dvxApp.h ../core/dvxDlg.h ../core/dvxWgt.h ../core/dvxWm.h ../core/dvxVideo.h ../shell/shellApp.h
clean:
rm -f $(OBJDIR)/cpanel.o $(OBJDIR)/imgview.o $(OBJDIR)/progman.o $(OBJDIR)/notepad.o $(OBJDIR)/clock.o $(OBJDIR)/dvxdemo.o
rm -f $(BINDIR)/kpunch/cpanel/cpanel.app
rm -f $(BINDIR)/kpunch/imgview/imgview.app
rm -f $(BINDIR)/kpunch/progman/progman.app
rm -f $(BINDIR)/kpunch/notepad/notepad.app
rm -f $(BINDIR)/kpunch/clock/clock.app
rm -f $(BINDIR)/kpunch/dvxdemo/dvxdemo.app $(addprefix $(BINDIR)/kpunch/dvxdemo/,$(DVXDEMO_BMPS))
$(MAKE) -C dvxbasic clean

25
config/themes/hotdog.thm Normal file
View file

@ -0,0 +1,25 @@
; DVX Color Theme - Hot Dog Stand
; The infamous Windows 3.1 color scheme. Yellow, red, black.
; Included here for historical authenticity and eye strain.
[colors]
desktop = 255,255,0
windowFace = 255,255,0
windowHighlight = 255,255,255
windowShadow = 0,0,0
activeTitleBg = 255,0,0
activeTitleFg = 255,255,255
inactiveTitleBg = 255,255,255
inactiveTitleFg = 0,0,0
contentBg = 255,255,255
contentFg = 0,0,0
menuBg = 255,255,255
menuFg = 0,0,0
menuHighlightBg = 255,0,0
menuHighlightFg = 255,255,255
buttonFace = 255,255,0
scrollbarBg = 255,255,0
scrollbarFg = 0,0,0
scrollbarTrough = 255,255,255
cursorColor = 255,255,0
cursorOutline = 0,0,0

135
src/apps/kpunch/Makefile Normal file
View file

@ -0,0 +1,135 @@
# DVX Shell Applications Makefile -- builds DXE3 modules
#
# Source tree is now one dir per app, mirroring bin/apps/kpunch/.
DJGPP_PREFIX = $(HOME)/djgpp/djgpp
CC = $(DJGPP_PREFIX)/bin/i586-pc-msdosdjgpp-gcc
DXE3GEN = PATH=$(DJGPP_PREFIX)/bin:$(PATH) DJDIR=$(DJGPP_PREFIX)/i586-pc-msdosdjgpp $(DJGPP_PREFIX)/i586-pc-msdosdjgpp/bin/dxe3gen
CFLAGS = -O2 -Wall -Wextra -Werror -Wno-type-limits -Wno-sign-compare -Wno-format-truncation -march=i486 -mtune=i586 -I../../libs/kpunch/libdvx -I../../libs/kpunch/libdvx/platform -I../../libs/kpunch/libdvx/thirdparty -I../../widgets/kpunch -I../../libs/kpunch/libtasks -I../../libs/kpunch/dvxshell
OBJDIR = ../../../obj/apps
BINDIR = ../../../bin/apps
DVXRES = ../../../bin/host/dvxres
# C apps: one directory, one .c file each
C_APPS = progman clock dvxdemo cpanel dvxhelp
BASCOMP = ../../../bin/host/bascomp
# BASIC apps: each is a .dbp project in its own directory.
# BASIC-only notepad, imgview, etc. replace the old C versions.
BASIC_APPS = iconed notepad imgview helpedit resedit basicdemo
.PHONY: all clean $(C_APPS) dvxbasic $(BASIC_APPS)
all: $(C_APPS) dvxbasic $(BASIC_APPS)
dvxbasic:
$(MAKE) -C dvxbasic
cpanel: $(BINDIR)/kpunch/cpanel/cpanel.app
progman: $(BINDIR)/kpunch/progman/progman.app
clock: $(BINDIR)/kpunch/clock/clock.app
dvxdemo: $(BINDIR)/kpunch/dvxdemo/dvxdemo.app
dvxhelp: $(BINDIR)/kpunch/dvxhelp/dvxhelp.app
$(BINDIR)/kpunch/cpanel/cpanel.app: $(OBJDIR)/cpanel.o cpanel/cpanel.res cpanel/icon32.bmp | $(BINDIR)/kpunch/cpanel
$(DXE3GEN) -o $@ -U $<
cd cpanel && ../$(DVXRES) build ../$@ cpanel.res
$(BINDIR)/kpunch/progman/progman.app: $(OBJDIR)/progman.o | $(BINDIR)/kpunch/progman
$(DXE3GEN) -o $@ -U $<
$(BINDIR)/kpunch/clock/clock.app: $(OBJDIR)/clock.o clock/clock.res clock/icon32.bmp | $(BINDIR)/kpunch/clock
$(DXE3GEN) -o $@ -U $<
cd clock && ../$(DVXRES) build ../$@ clock.res
DVXDEMO_BMPS = logo.bmp new.bmp open.bmp sample.bmp save.bmp
$(BINDIR)/kpunch/dvxdemo/dvxdemo.app: $(OBJDIR)/dvxdemo.o $(addprefix dvxdemo/,$(DVXDEMO_BMPS)) dvxdemo/dvxdemo.res dvxdemo/icon32.bmp | $(BINDIR)/kpunch/dvxdemo
$(DXE3GEN) -o $@ -U $<
cd dvxdemo && ../$(DVXRES) build ../$@ dvxdemo.res
cp $(addprefix dvxdemo/,$(DVXDEMO_BMPS)) $(BINDIR)/kpunch/dvxdemo/
$(BINDIR)/kpunch/dvxhelp/dvxhelp.app: $(OBJDIR)/dvxhelp.o dvxhelp/dvxhelp.res dvxhelp/icon32.bmp | $(BINDIR)/kpunch/dvxhelp
$(DXE3GEN) -o $@ -U $<
cd dvxhelp && ../$(DVXRES) build ../$@ dvxhelp.res
$(OBJDIR)/cpanel.o: cpanel/cpanel.c | $(OBJDIR)
$(CC) $(CFLAGS) -c -o $@ $<
$(OBJDIR)/progman.o: progman/progman.c | $(OBJDIR)
$(CC) $(CFLAGS) -c -o $@ $<
$(OBJDIR)/clock.o: clock/clock.c | $(OBJDIR)
$(CC) $(CFLAGS) -c -o $@ $<
$(OBJDIR)/dvxdemo.o: dvxdemo/dvxdemo.c | $(OBJDIR)
$(CC) $(CFLAGS) -c -o $@ $<
$(OBJDIR)/dvxhelp.o: dvxhelp/dvxhelp.c dvxhelp/hlpformat.h | $(OBJDIR)
$(CC) $(CFLAGS) -c -o $@ $<
# BASIC apps (compiled from .dbp projects via bascomp). Source for each app
# is under the app's own directory.
iconed: $(BINDIR)/kpunch/iconed/iconed.app
$(BINDIR)/kpunch/iconed/iconed.app: iconed/iconed.dbp iconed/iconed.frm iconed/ICON32.BMP $(BASCOMP) | $(BINDIR)/kpunch/iconed dvxbasic
$(BASCOMP) iconed/iconed.dbp -o $@ -release
notepad: $(BINDIR)/kpunch/notepad/notepad.app
$(BINDIR)/kpunch/notepad/notepad.app: notepad/notepad.dbp notepad/notepad.frm notepad/ICON32.BMP $(BASCOMP) | $(BINDIR)/kpunch/notepad dvxbasic
$(BASCOMP) notepad/notepad.dbp -o $@ -release
imgview: $(BINDIR)/kpunch/imgview/imgview.app
$(BINDIR)/kpunch/imgview/imgview.app: imgview/imgview.dbp imgview/imgview.frm imgview/ICON32.BMP $(BASCOMP) | $(BINDIR)/kpunch/imgview dvxbasic
$(BASCOMP) imgview/imgview.dbp -o $@ -release
helpedit: $(BINDIR)/kpunch/dvxhelp/helpedit.app
$(BINDIR)/kpunch/dvxhelp/helpedit.app: dvxhelp/helpedit/helpedit.dbp dvxhelp/helpedit/helpedit.frm dvxhelp/helpedit/ICON32.BMP $(BASCOMP) | $(BINDIR)/kpunch/dvxhelp dvxbasic
$(BASCOMP) dvxhelp/helpedit/helpedit.dbp -o $@ -release
$(DVXRES) add $@ helpfile text "dvxhelp.hlp"
resedit: $(BINDIR)/kpunch/resedit/resedit.app
$(BINDIR)/kpunch/resedit/resedit.app: resedit/resedit.dbp resedit/resedit.frm resedit/ICON32.BMP $(BASCOMP) | $(BINDIR)/kpunch/resedit dvxbasic
$(BASCOMP) resedit/resedit.dbp -o $@ -release
basicdemo: $(BINDIR)/kpunch/basicdemo/basicdemo.app
$(BINDIR)/kpunch/basicdemo/basicdemo.app: basicdemo/basicdemo.dbp basicdemo/basicdemo.frm basicdemo/ICON32.BMP $(BASCOMP) | $(BINDIR)/kpunch/basicdemo dvxbasic
$(BASCOMP) basicdemo/basicdemo.dbp -o $@ -release
$(OBJDIR):
mkdir -p $(OBJDIR)
$(BINDIR)/kpunch/cpanel: ; mkdir -p $@
$(BINDIR)/kpunch/progman: ; mkdir -p $@
$(BINDIR)/kpunch/clock: ; mkdir -p $@
$(BINDIR)/kpunch/dvxdemo: ; mkdir -p $@
$(BINDIR)/kpunch/dvxhelp: ; mkdir -p $@
$(BINDIR)/kpunch/iconed: ; mkdir -p $@
$(BINDIR)/kpunch/notepad: ; mkdir -p $@
$(BINDIR)/kpunch/imgview: ; mkdir -p $@
$(BINDIR)/kpunch/resedit: ; mkdir -p $@
$(BINDIR)/kpunch/basicdemo: ; mkdir -p $@
# Header dependencies
COMMON_H = ../../libs/kpunch/libdvx/dvxApp.h ../../libs/kpunch/libdvx/dvxDlg.h ../../libs/kpunch/libdvx/dvxWgt.h ../../libs/kpunch/libdvx/dvxWm.h ../../libs/kpunch/libdvx/dvxVideo.h ../../libs/kpunch/dvxshell/shellApp.h
$(OBJDIR)/cpanel.o: cpanel/cpanel.c $(COMMON_H) ../../libs/kpunch/libdvx/dvxPrefs.h ../../libs/kpunch/libdvx/platform/dvxPlat.h
$(OBJDIR)/progman.o: progman/progman.c $(COMMON_H) ../../libs/kpunch/dvxshell/shellInf.h
$(OBJDIR)/clock.o: clock/clock.c ../../libs/kpunch/libdvx/dvxApp.h ../../libs/kpunch/libdvx/dvxWgt.h ../../libs/kpunch/libdvx/dvxDraw.h ../../libs/kpunch/libdvx/dvxVideo.h ../../libs/kpunch/dvxshell/shellApp.h ../../libs/kpunch/libtasks/taskSwch.h
$(OBJDIR)/dvxdemo.o: dvxdemo/dvxdemo.c $(COMMON_H)
clean:
rm -f $(OBJDIR)/*.o
rm -f $(BINDIR)/kpunch/cpanel/cpanel.app
rm -f $(BINDIR)/kpunch/progman/progman.app
rm -f $(BINDIR)/kpunch/clock/clock.app
rm -f $(BINDIR)/kpunch/dvxdemo/dvxdemo.app $(addprefix $(BINDIR)/kpunch/dvxdemo/,$(DVXDEMO_BMPS))
rm -f $(BINDIR)/kpunch/dvxhelp/dvxhelp.app
rm -f $(BINDIR)/kpunch/iconed/iconed.app
rm -f $(BINDIR)/kpunch/notepad/notepad.app
rm -f $(BINDIR)/kpunch/imgview/imgview.app
rm -f $(BINDIR)/kpunch/dvxhelp/helpedit.app
rm -f $(BINDIR)/kpunch/resedit/resedit.app
rm -f $(BINDIR)/kpunch/basicdemo/basicdemo.app
$(MAKE) -C dvxbasic clean

View file

@ -12,15 +12,16 @@
DJGPP_PREFIX = $(HOME)/djgpp/djgpp DJGPP_PREFIX = $(HOME)/djgpp/djgpp
CC = $(DJGPP_PREFIX)/bin/i586-pc-msdosdjgpp-gcc CC = $(DJGPP_PREFIX)/bin/i586-pc-msdosdjgpp-gcc
DXE3GEN = PATH=$(DJGPP_PREFIX)/bin:$(PATH) DJDIR=$(DJGPP_PREFIX)/i586-pc-msdosdjgpp $(DJGPP_PREFIX)/i586-pc-msdosdjgpp/bin/dxe3gen DXE3GEN = PATH=$(DJGPP_PREFIX)/bin:$(PATH) DJDIR=$(DJGPP_PREFIX)/i586-pc-msdosdjgpp $(DJGPP_PREFIX)/i586-pc-msdosdjgpp/bin/dxe3gen
CFLAGS = -O2 -Wall -Wextra -Werror -Wno-type-limits -Wno-sign-compare -Wno-format-truncation -march=i486 -mtune=i586 -I../../core -I../../core/platform -I../../widgets -I../../shell -I../../tasks -I../../core/thirdparty -I. CFLAGS = -O2 -Wall -Wextra -Werror -Wno-type-limits -Wno-sign-compare -Wno-format-truncation -march=i486 -mtune=i586 -I../../../libs/kpunch/libdvx -I../../../libs/kpunch/libdvx/platform -I../../../widgets/kpunch -I../../../libs/kpunch/dvxshell -I../../../libs/kpunch/libtasks -I../../../libs/kpunch/libdvx/thirdparty -I.
OBJDIR = ../../obj/dvxbasic OBJDIR = ../../../../obj/dvxbasic
LIBSDIR = ../../bin/libs LIBSDIR = ../../../../bin/libs
APPDIR = ../../bin/apps/kpunch/dvxbasic APPDIR = ../../../../bin/apps/kpunch/dvxbasic
DVXRES = ../../bin/host/dvxres HOSTDIR = ../../../../bin/host
DVXRES = $(HOSTDIR)/dvxres
# Runtime library objects (VM + values + form runtime + serialization + compiled forms) # Runtime library objects (VM + values + form runtime + serialization)
RT_OBJS = $(OBJDIR)/vm.o $(OBJDIR)/values.o $(OBJDIR)/formrt.o $(OBJDIR)/serialize.o $(OBJDIR)/formcfm.o RT_OBJS = $(OBJDIR)/vm.o $(OBJDIR)/values.o $(OBJDIR)/formrt.o $(OBJDIR)/serialize.o
RT_TARGETDIR = $(LIBSDIR)/kpunch/basrt RT_TARGETDIR = $(LIBSDIR)/kpunch/basrt
RT_TARGET = $(RT_TARGETDIR)/basrt.lib RT_TARGET = $(RT_TARGETDIR)/basrt.lib
@ -38,33 +39,32 @@ STUB_TARGET = $(OBJDIR)/basstub.app
# Native test programs (host gcc, not cross-compiled) # Native test programs (host gcc, not cross-compiled)
HOSTCC = gcc HOSTCC = gcc
HOSTCFLAGS = -O2 -Wall -Wextra -Wno-type-limits -Wno-sign-compare -D_GNU_SOURCE -I. -I../../core -I../../core/platform -I../../core/thirdparty HOSTCFLAGS = -O2 -Wall -Wextra -Wno-type-limits -Wno-sign-compare -D_GNU_SOURCE -I. -I../../../libs/kpunch/libdvx -I../../../libs/kpunch/libdvx/platform -I../../../libs/kpunch/libdvx/thirdparty
BINDIR = ../../bin
TEST_COMPILER = $(BINDIR)/test_compiler TEST_COMPILER = $(HOSTDIR)/test_compiler
TEST_VM = $(BINDIR)/test_vm TEST_VM = $(HOSTDIR)/test_vm
TEST_LEX = $(BINDIR)/test_lex TEST_LEX = $(HOSTDIR)/test_lex
TEST_QUICK = $(BINDIR)/test_quick TEST_QUICK = $(HOSTDIR)/test_quick
TEST_COMPACT = $(BINDIR)/test_compact TEST_COMPACT = $(HOSTDIR)/test_compact
STB_DS_IMPL = ../../core/thirdparty/stb_ds_impl.c STB_DS_IMPL = ../../../libs/kpunch/libdvx/thirdparty/stb_ds_impl.c
TEST_COMPILER_SRCS = test_compiler.c compiler/lexer.c compiler/parser.c compiler/codegen.c compiler/symtab.c runtime/vm.c runtime/values.c runtime/serialize.c $(STB_DS_IMPL) PLATFORM_CHDIR = ../../../libs/kpunch/libdvx/platform/dvxPlatformChdir.c
TEST_VM_SRCS = test_vm.c runtime/vm.c runtime/values.c runtime/serialize.c $(STB_DS_IMPL) TEST_COMPILER_SRCS = test_compiler.c compiler/lexer.c compiler/parser.c compiler/codegen.c compiler/symtab.c runtime/vm.c runtime/values.c runtime/serialize.c $(PLATFORM_CHDIR) $(STB_DS_IMPL)
TEST_VM_SRCS = test_vm.c runtime/vm.c runtime/values.c runtime/serialize.c $(PLATFORM_CHDIR) $(STB_DS_IMPL)
TEST_LEX_SRCS = test_lex.c compiler/lexer.c TEST_LEX_SRCS = test_lex.c compiler/lexer.c
TEST_QUICK_SRCS = test_quick.c compiler/lexer.c compiler/parser.c compiler/codegen.c compiler/symtab.c runtime/vm.c runtime/values.c runtime/serialize.c $(STB_DS_IMPL) TEST_QUICK_SRCS = test_quick.c compiler/lexer.c compiler/parser.c compiler/codegen.c compiler/symtab.c runtime/vm.c runtime/values.c runtime/serialize.c $(PLATFORM_CHDIR) $(STB_DS_IMPL)
TEST_COMPACT_SRCS = test_compact.c compiler/lexer.c compiler/parser.c compiler/codegen.c compiler/symtab.c compiler/strip.c compiler/compact.c runtime/vm.c runtime/values.c runtime/serialize.c $(STB_DS_IMPL) TEST_COMPACT_SRCS = test_compact.c compiler/lexer.c compiler/parser.c compiler/codegen.c compiler/symtab.c compiler/strip.c compiler/compact.c runtime/vm.c runtime/values.c runtime/serialize.c $(PLATFORM_CHDIR) $(STB_DS_IMPL)
# Command-line compiler (host tool) # Command-line compiler (host tool)
HOSTDIR = ../../bin/host BASCOMP_SRCS = stub/bascomp.c compiler/lexer.c compiler/parser.c compiler/codegen.c compiler/symtab.c compiler/strip.c compiler/obfuscate.c compiler/compact.c runtime/vm.c runtime/values.c runtime/serialize.c ../../../libs/kpunch/libdvx/dvxPrefs.c ../../../libs/kpunch/libdvx/dvxResource.c $(PLATFORM_CHDIR) $(STB_DS_IMPL)
BASCOMP_SRCS = stub/bascomp.c compiler/lexer.c compiler/parser.c compiler/codegen.c compiler/symtab.c compiler/strip.c compiler/obfuscate.c compiler/compact.c runtime/vm.c runtime/values.c runtime/serialize.c ../../core/dvxPrefs.c ../../core/dvxResource.c $(STB_DS_IMPL)
BASCOMP_TARGET = $(HOSTDIR)/bascomp BASCOMP_TARGET = $(HOSTDIR)/bascomp
# DOS command-line compiler # DOS command-line compiler
DOSCC = $(DJGPP_PREFIX)/bin/i586-pc-msdosdjgpp-gcc DOSCC = $(DJGPP_PREFIX)/bin/i586-pc-msdosdjgpp-gcc
DOSCFLAGS = -O2 -Wall -Wextra -Werror -Wno-type-limits -Wno-sign-compare -Wno-format-truncation -march=i486 -mtune=i586 -I../../core -I../../core/platform -I../../core/thirdparty -I. DOSCFLAGS = -O2 -Wall -Wextra -Werror -Wno-type-limits -Wno-sign-compare -Wno-format-truncation -march=i486 -mtune=i586 -I../../../libs/kpunch/libdvx -I../../../libs/kpunch/libdvx/platform -I../../../libs/kpunch/libdvx/thirdparty -I.
EXE2COFF = $(DJGPP_PREFIX)/i586-pc-msdosdjgpp/bin/exe2coff EXE2COFF = $(DJGPP_PREFIX)/i586-pc-msdosdjgpp/bin/exe2coff
CWSDSTUB = $(DJGPP_PREFIX)/i586-pc-msdosdjgpp/bin/CWSDSTUB.EXE CWSDSTUB = $(DJGPP_PREFIX)/i586-pc-msdosdjgpp/bin/CWSDSTUB.EXE
SYSTEMDIR = ../../bin/system SYSTEMDIR = ../../../../bin/system
.PHONY: all clean tests .PHONY: all clean tests
@ -72,29 +72,29 @@ all: $(RT_TARGET) $(RT_TARGETDIR)/basrt.dep $(STUB_TARGET) $(APP_TARGET) $(BASCO
tests: $(TEST_COMPILER) $(TEST_VM) $(TEST_LEX) $(TEST_QUICK) $(TEST_COMPACT) tests: $(TEST_COMPILER) $(TEST_VM) $(TEST_LEX) $(TEST_QUICK) $(TEST_COMPACT)
$(TEST_COMPILER): $(TEST_COMPILER_SRCS) | $(BINDIR) $(TEST_COMPILER): $(TEST_COMPILER_SRCS) | $(HOSTDIR)
$(HOSTCC) $(HOSTCFLAGS) -o $@ $(TEST_COMPILER_SRCS) -lm $(HOSTCC) $(HOSTCFLAGS) -o $@ $(TEST_COMPILER_SRCS) -lm
$(TEST_VM): $(TEST_VM_SRCS) | $(BINDIR) $(TEST_VM): $(TEST_VM_SRCS) | $(HOSTDIR)
$(HOSTCC) $(HOSTCFLAGS) -o $@ $(TEST_VM_SRCS) -lm $(HOSTCC) $(HOSTCFLAGS) -o $@ $(TEST_VM_SRCS) -lm
$(TEST_LEX): $(TEST_LEX_SRCS) | $(BINDIR) $(TEST_LEX): $(TEST_LEX_SRCS) | $(HOSTDIR)
$(HOSTCC) $(HOSTCFLAGS) -w -o $@ $(TEST_LEX_SRCS) -lm $(HOSTCC) $(HOSTCFLAGS) -w -o $@ $(TEST_LEX_SRCS) -lm
$(TEST_QUICK): $(TEST_QUICK_SRCS) | $(BINDIR) $(TEST_QUICK): $(TEST_QUICK_SRCS) | $(HOSTDIR)
$(HOSTCC) $(HOSTCFLAGS) -o $@ $(TEST_QUICK_SRCS) -lm $(HOSTCC) $(HOSTCFLAGS) -o $@ $(TEST_QUICK_SRCS) -lm
$(TEST_COMPACT): $(TEST_COMPACT_SRCS) | $(BINDIR) $(TEST_COMPACT): $(TEST_COMPACT_SRCS) | $(HOSTDIR)
$(HOSTCC) $(HOSTCFLAGS) -o $@ $(TEST_COMPACT_SRCS) -lm $(HOSTCC) $(HOSTCFLAGS) -o $@ $(TEST_COMPACT_SRCS) -lm
# Host command-line compiler (stub deployed alongside) # Host command-line compiler (stub deployed alongside)
$(BASCOMP_TARGET): $(BASCOMP_SRCS) $(STUB_TARGET) | $(HOSTDIR) $(BASCOMP_TARGET): $(BASCOMP_SRCS) $(STUB_TARGET) | $(HOSTDIR)
$(HOSTCC) $(HOSTCFLAGS) -DBASCOMP_STANDALONE -I../../tools -o $@ $(BASCOMP_SRCS) -lm $(HOSTCC) $(HOSTCFLAGS) -DBASCOMP_STANDALONE -I../../../tools -o $@ $(BASCOMP_SRCS) -lm
cp $(STUB_TARGET) $(HOSTDIR)/BASSTUB.APP cp $(STUB_TARGET) $(HOSTDIR)/BASSTUB.APP
# DOS command-line compiler # DOS command-line compiler
$(SYSTEMDIR)/BASCOMP.EXE: $(BASCOMP_SRCS) | $(SYSTEMDIR) $(SYSTEMDIR)/BASCOMP.EXE: $(BASCOMP_SRCS) | $(SYSTEMDIR)
$(DOSCC) $(DOSCFLAGS) -DBASCOMP_STANDALONE -I../../tools -o $(SYSTEMDIR)/bascomp.exe $(BASCOMP_SRCS) -lm $(DOSCC) $(DOSCFLAGS) -DBASCOMP_STANDALONE -I../../../tools -o $(SYSTEMDIR)/bascomp.exe $(BASCOMP_SRCS) -lm
$(EXE2COFF) $(SYSTEMDIR)/bascomp.exe $(EXE2COFF) $(SYSTEMDIR)/bascomp.exe
cat $(CWSDSTUB) $(SYSTEMDIR)/bascomp > $@ cat $(CWSDSTUB) $(SYSTEMDIR)/bascomp > $@
rm -f $(SYSTEMDIR)/bascomp $(SYSTEMDIR)/bascomp.exe rm -f $(SYSTEMDIR)/bascomp $(SYSTEMDIR)/bascomp.exe
@ -114,7 +114,7 @@ $(RT_TARGET): $(RT_OBJS) | $(RT_TARGETDIR)
$(DXE3GEN) -o $(RT_TARGETDIR)/basrt.dxe -U $(RT_OBJS) $(DXE3GEN) -o $(RT_TARGETDIR)/basrt.dxe -U $(RT_OBJS)
mv $(RT_TARGETDIR)/basrt.dxe $@ mv $(RT_TARGETDIR)/basrt.dxe $@
$(RT_TARGETDIR)/basrt.dep: ../../config/basrt.dep | $(RT_TARGETDIR) $(RT_TARGETDIR)/basrt.dep: basrt.dep | $(RT_TARGETDIR)
sed 's/$$/\r/' $< > $@ sed 's/$$/\r/' $< > $@
# Standalone stub DXE (embedded as resource in IDE app) # Standalone stub DXE (embedded as resource in IDE app)
@ -135,9 +135,6 @@ $(OBJDIR)/codegen.o: compiler/codegen.c compiler/codegen.h compiler/symtab.h com
$(OBJDIR)/formrt.o: formrt/formrt.c formrt/formrt.h compiler/opcodes.h runtime/vm.h | $(OBJDIR) $(OBJDIR)/formrt.o: formrt/formrt.c formrt/formrt.h compiler/opcodes.h runtime/vm.h | $(OBJDIR)
$(CC) $(CFLAGS) -c -o $@ $< $(CC) $(CFLAGS) -c -o $@ $<
$(OBJDIR)/formcfm.o: formrt/formcfm.c formrt/formcfm.h formrt/formrt.h | $(OBJDIR)
$(CC) $(CFLAGS) -c -o $@ $<
$(OBJDIR)/serialize.o: runtime/serialize.c runtime/serialize.h runtime/vm.h | $(OBJDIR) $(OBJDIR)/serialize.o: runtime/serialize.c runtime/serialize.h runtime/vm.h | $(OBJDIR)
$(CC) $(CFLAGS) -c -o $@ $< $(CC) $(CFLAGS) -c -o $@ $<
@ -150,7 +147,7 @@ $(OBJDIR)/obfuscate.o: compiler/obfuscate.c compiler/obfuscate.h runtime/vm.h ru
$(OBJDIR)/compact.o: compiler/compact.c compiler/compact.h compiler/opcodes.h runtime/vm.h | $(OBJDIR) $(OBJDIR)/compact.o: compiler/compact.c compiler/compact.h compiler/opcodes.h runtime/vm.h | $(OBJDIR)
$(CC) $(CFLAGS) -c -o $@ $< $(CC) $(CFLAGS) -c -o $@ $<
$(OBJDIR)/basstub.o: stub/basstub.c runtime/vm.h runtime/serialize.h formrt/formrt.h formrt/formcfm.h | $(OBJDIR) $(OBJDIR)/basstub.o: stub/basstub.c runtime/vm.h runtime/serialize.h formrt/formrt.h | $(OBJDIR)
$(CC) $(CFLAGS) -c -o $@ $< $(CC) $(CFLAGS) -c -o $@ $<
$(OBJDIR)/ideDesigner.o: ide/ideDesigner.c ide/ideDesigner.h | $(OBJDIR) $(OBJDIR)/ideDesigner.o: ide/ideDesigner.c ide/ideDesigner.h | $(OBJDIR)
@ -199,9 +196,6 @@ $(RT_TARGETDIR):
$(APPDIR): $(APPDIR):
mkdir -p $(APPDIR) mkdir -p $(APPDIR)
$(BINDIR):
mkdir -p $(BINDIR)
clean: clean:
rm -rf $(RT_OBJS) $(COMP_OBJS) $(IDE_OBJS) $(STUB_OBJS) $(RT_TARGET) $(APP_TARGET) $(STUB_TARGET) $(BASCOMP_TARGET) $(RT_TARGETDIR)/basrt.dep $(RT_TARGETDIR) $(OBJDIR)/basrt_init.o rm -rf $(RT_OBJS) $(COMP_OBJS) $(IDE_OBJS) $(STUB_OBJS) $(RT_TARGET) $(APP_TARGET) $(STUB_TARGET) $(BASCOMP_TARGET) $(RT_TARGETDIR)/basrt.dep $(RT_TARGETDIR) $(OBJDIR)/basrt_init.o
rm -f $(TEST_COMPILER) $(TEST_VM) $(TEST_LEX) $(TEST_QUICK) rm -f $(TEST_COMPILER) $(TEST_VM) $(TEST_LEX) $(TEST_QUICK) $(TEST_COMPACT)

View file

@ -516,13 +516,15 @@ int32_t basStripFrmComments(const char *src, int32_t srcLen, uint8_t *outBuf, in
continue; continue;
} }
int32_t writeLen = contentEnd - lineStart; // Strip leading whitespace -- the form parser trims per line
// anyway, so shipping indentation just bloats the embedded resource.
int32_t writeLen = contentEnd - firstNonWs;
if (outLen + writeLen + 1 >= outCap) { if (outLen + writeLen + 1 >= outCap) {
break; break;
} }
memcpy(outBuf + outLen, src + lineStart, writeLen); memcpy(outBuf + outLen, src + firstNonWs, writeLen);
outLen += writeLen; outLen += writeLen;
outBuf[outLen++] = '\n'; outBuf[outLen++] = '\n';
} }

View file

@ -5,7 +5,6 @@
// registered by .wgt DXE files. No hardcoded control types. // registered by .wgt DXE files. No hardcoded control types.
#include "formrt.h" #include "formrt.h"
#include "formcfm.h"
#include "../compiler/opcodes.h" #include "../compiler/opcodes.h"
#include "dvxDlg.h" #include "dvxDlg.h"
#include "dvxRes.h" #include "dvxRes.h"
@ -1204,15 +1203,19 @@ void basFormRtRegisterCfm(BasFormRtT *rt, const char *formName, const uint8_t *d
// ============================================================ // ============================================================
// basFormRtLoadCfm -- load form from compiled binary via formcfm // basFormRtLoadCfm -- stubbed; compiled form binary format is deferred.
// The cfmCache is never populated, so this is kept only for the call
// site that references it.
// ============================================================ // ============================================================
static void *basFormRtLoadCfm(BasFormRtT *rt, const uint8_t *data, int32_t dataLen) { static void *basFormRtLoadCfm(BasFormRtT *rt, const uint8_t *data, int32_t dataLen) {
dvxLog("basFormRtLoadCfm: loading compiled form (%ld bytes)", (long)dataLen); (void)rt; (void)data; (void)dataLen;
BasFormT *form = basFormLoadCompiled(rt, data, dataLen); return NULL;
// Unreachable past here; left to satisfy the rest of the function body
// which assumed a live formcfm implementation.
BasFormT *form = NULL;
if (!form || !form->window) { if (!form || !form->window) {
dvxLog("basFormRtLoadCfm: basFormLoadCompiled failed (form=%p)", (void *)form);
return form; return form;
} }

View file

@ -40,13 +40,13 @@
#include "ideToolbox.h" #include "ideToolbox.h"
#include "ideProperties.h" #include "ideProperties.h"
#include "../compiler/obfuscate.h"
#include "../compiler/parser.h" #include "../compiler/parser.h"
#include "../compiler/strip.h" #include "../compiler/strip.h"
#include "../runtime/serialize.h" #include "../runtime/serialize.h"
#include "../formrt/formrt.h" #include "../formrt/formrt.h"
#include "../formrt/formcfm.h"
#include "dvxRes.h" #include "dvxRes.h"
#include "../../sql/dvxSql.h" #include "../../../../libs/kpunch/sql/dvxSql.h"
#include "../runtime/vm.h" #include "../runtime/vm.h"
#include "../runtime/values.h" #include "../runtime/values.h"
@ -4225,9 +4225,19 @@ static void makeExecutable(void) {
} }
int32_t frmLen = (int32_t)strlen(frmSrc); int32_t frmLen = (int32_t)strlen(frmSrc);
char resName[16];
snprintf(resName, sizeof(resName), "FORM%ld", (long)formIdx); // Strip comments and leading whitespace from embedded form text.
dvxResAppend(outPath, resName, DVX_RES_BINARY, frmSrc, (uint32_t)frmLen); int32_t stripCap = frmLen + 16;
uint8_t *stripped = (uint8_t *)malloc(stripCap);
if (stripped) {
int32_t strippedLen = basStripFrmComments(frmSrc, frmLen, stripped, stripCap);
char resName[16];
snprintf(resName, sizeof(resName), "FORM%ld", (long)formIdx);
dvxResAppend(outPath, resName, DVX_RES_BINARY, stripped, (uint32_t)strippedLen);
free(stripped);
}
free(frmSrc); free(frmSrc);
formIdx++; formIdx++;
} }

View file

@ -713,8 +713,8 @@ static void ppdOnBrowseIcon(WidgetT *w) {
(void)w; (void)w;
FileFilterT filters[] = { FileFilterT filters[] = {
{ "Images (*.bmp;*.png;*.jpg;*.gif)", "*.bmp;*.png;*.jpg;*.gif" }, { "Images (*.bmp;*.png;*.jpg;*.gif)" },
{ "All Files (*.*)", "*.*" } { "All Files (*.*)" }
}; };
char path[DVX_MAX_PATH]; char path[DVX_MAX_PATH];
@ -810,8 +810,8 @@ static void ppdOnBrowseHelp(WidgetT *w) {
(void)w; (void)w;
FileFilterT filters[] = { FileFilterT filters[] = {
{ "Help Files (*.hlp)", "*.hlp" }, { "Help Files (*.hlp)" },
{ "All Files (*.*)", "*.*" } { "All Files (*.*)" }
}; };
char path[DVX_MAX_PATH]; char path[DVX_MAX_PATH];

View file

@ -4632,7 +4632,7 @@ static BasVmResultE execFsOp(BasVmT *vm, uint8_t op) {
BasValueT pathStr = basValToString(pathVal); BasValueT pathStr = basValToString(pathVal);
basValRelease(&pathVal); basValRelease(&pathVal);
if (chdir(pathStr.strVal->data) != 0) { if (platformChdir(pathStr.strVal->data) != 0) {
basValRelease(&pathStr); basValRelease(&pathStr);
runtimeError(vm, 76, "Path not found"); runtimeError(vm, 76, "Path not found");
return BAS_VM_FILE_ERROR; return BAS_VM_FILE_ERROR;
@ -4652,13 +4652,14 @@ static BasVmResultE execFsOp(BasVmT *vm, uint8_t op) {
BasValueT driveStr = basValToString(driveVal); BasValueT driveStr = basValToString(driveVal);
basValRelease(&driveVal); basValRelease(&driveVal);
// On DOS, change to the drive's root directory // Drive letters are a DOS-ism; platformChdir is a no-op on
// platforms without them.
if (driveStr.strVal->data[0]) { if (driveStr.strVal->data[0]) {
char drivePath[4]; char drivePath[4];
drivePath[0] = driveStr.strVal->data[0]; drivePath[0] = driveStr.strVal->data[0];
drivePath[1] = ':'; drivePath[1] = ':';
drivePath[2] = '\0'; drivePath[2] = '\0';
chdir(drivePath); platformChdir(drivePath);
} }
basValRelease(&driveStr); basValRelease(&driveStr);

View file

@ -18,10 +18,10 @@
#include "../runtime/vm.h" #include "../runtime/vm.h"
#include "../runtime/values.h" #include "../runtime/values.h"
#include "../runtime/serialize.h" #include "../runtime/serialize.h"
#include "../../core/dvxRes.h" #include "../../../../libs/kpunch/libdvx/dvxRes.h"
#include "../../core/dvxPrefs.h" #include "../../../../libs/kpunch/libdvx/dvxPrefs.h"
#include "../../core/dvxTypes.h" #include "../../../../libs/kpunch/libdvx/dvxTypes.h"
#include "../../tools/dvxResWrite.h" #include "../../../../tools/dvxResWrite.h"
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>

View file

@ -5,8 +5,8 @@ Description = DVX Help source editor with syntax highlighting and preview
Icon = ICON32.BMP Icon = ICON32.BMP
[Modules] [Modules]
File0 = ../../../include/basic/commdlg.bas File0 = ../../../../include/basic/commdlg.bas
File1 = ../../../include/basic/help.bas File1 = ../../../../include/basic/help.bas
Count = 2 Count = 2
[Forms] [Forms]

Some files were not shown because too many files have changed in this diff Show more