DVX SDK
=======
This SDK contains everything needed to develop applications and
widgets for the DVX GUI system.
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
samples/
hello/ Minimal "Hello World" application
widget/ Minimal custom widget
Requirements
------------
- DJGPP cross-compiler (i586-pc-msdosdjgpp-gcc)
- dxe3gen (included with DJGPP)
- DVX resource compiler (SYSTEM/DVXRES.EXE on the target,
or bin/dvxres on the host)
- DVX help compiler (SYSTEM/DVXHLPC.EXE on the target,
or bin/dvxhlpc on the host)
Building an Application
-----------------------
1. Write your app with appDescriptor and appMain exports
2. Compile: gcc -c -o myapp.o myapp.c -Isdk/include/core ...
3. Link: dxe3gen -o myapp.app -E _appDescriptor -E _appMain -U myapp.o
4. Optionally create a .res file and build resources with dvxres
See samples/hello/ for a complete example.
Building a Widget
-----------------
1. Write your widget with wgtRegister export
2. Compile: gcc -c -o mywgt.o mywgt.c -Isdk/include/core
3. Link: dxe3gen -o mywgt.wgt -E _wgtRegister -U mywgt.o
See samples/widget/ for a complete example.
Deployment
----------
Applications: APPS/<vendor>/<appname>/<appname>.APP
Widgets: WIDGETS/<vendor>/<wgtname>/<wgtname>.WGT
Libraries: LIBS/<vendor>/<libname>/<libname>.LIB
Each component can include:
- .DHS file for C API documentation (compiled into system help)
- .BHS file for BASIC documentation (compiled into BASIC help)
- .DEP file listing load-before dependencies
- .HCF file defining help compilation rules
- .RES file for embedded resources (icons, text, binary data)
Help is recompiled automatically at startup when module counts
change.
DXE3 Symbol Resolution
----------------------
DXE modules resolve symbols at load time via dlopen/dlsym.
All DVX core functions, widget APIs, and C runtime functions
are available automatically. You do not need import libraries.
The loader ensures libraries are loaded before widgets, and
widgets before applications, respecting .dep dependencies.