Beta Version, but fully fonctionnal, so this may already help a lot.
Templates are defined under directory "templates" with a json and a zip each.
First: this is not part of official Amiga NDK, but is an opensource effort
from individual developpers, with call to participation, at
https://github.com/krabobmkd/boopsiwizard
A lot of aspect of Amiga OS development are difficult to set up, and setting
a simple project for a library, class, gadget, datatype, commodity project,
for a given C compiler, is cryptic, and can take days if not months. This tool
is intended to generate instantly working project with their makefiles, able
to generate classes (and hopefully one day libraries) even when a compiler
offers no straightforward way to do that - like GCC -, by assembling and
linking specific startups, in "no standard C environement" modes. This
project aims as many OS3 compilers as possible.
There is only 2 templates for the moment:
- "Paint Gadget" will generate a BOOPSI gadget that draws something, resize,
react to attributes change, and send updates event from clicks.
- "Class Gadget" defines a simple BOOPSI class, a basic model class, not a
gadget.
Each Template projects generate:
- smakefile for compiler SAS-C6.5 (C90)
- makefile for GCC2.95 (C99) or later GCC versions,
- CMakeLists.txt for cross-compilation (like GCC6.5 Bebbo, C11).
*** IMPORTANT PRE-REQUESITES ***
Correct BOOPSI includes are missing in most old compilers installations, which
have their os-include dirs back from OS3.0 times. As BOOPSI were updated with
recent Amiga OS3.2.x NDK, after installing a compiler you will have to follow
the instructions (basically add or replace some files in include/:
https://developer.amigaos3.net/article/12-ndk-setup-sasc-compiler
This also work for GCC2.95 from package ADE on aminet, with directory
"os-include"
If you install this GCC2.95, Projects will need assembler PhxAss to be also
installed, because its own assembler "as" uses a different syntax than usual
Amiga assemblers. Assembler is needed to generate shared binaries startups.
Once created, you can usually open a shell in the generated directory, then
type "make" to compile with GCC, or "smake" to compile with SAS-C. compiled
binaries will be found in build-XXX directories.
Class and Gadget templates are generated in 2 forms: the shared .class or
.gadget, with a Test use case using them, but also a "statically linked"
version, with class kept private and not published with AddClass(), all using
the same sources. So that way you can develop your class the static-private
way, and one day, if needed, switch to a publishable version that can be
shared: no trouble, the project is already set up for this !
Also if you wonder "what to do next" after the poject is generated, search for
tag "DEVTODO" in the comments, it will guide you through your development.
(ADE users will be able to type a good old: ">grep -ir "DEVTODO" .")
The templates code proposed here will try to be the more compliant possible
with official Amiga guidelines, but may not be 100% compliant. You are loudly
welcome to make any suggestion on the code at:
https://github.com/krabobmkd/boopsiwizard/issues
Your resources for coding Amiga OS3 should primarily be:
- https://developer.amigaos3.net/article/13-recommended-reading-amiga-developer
- https://developer.amigaos3.net/forum
- The Amiga Developer CD v2.1
How does Project generation work ?
Project generation will just rename file names and source inside files from
the project name you give, usually the name of the class. You can basically
create your own template with a project called "BaseName", where if target is
MyProject, renaming will happen like this:
BaseName -> MyProject
BASENAME -> MYPROJECT
basename -> myproject
zip all that, Then configure a .json like the other, place the .json and the
.zip in templates/ , you created another template !
BOOPSI is a trademark of... I'm not sure who, but it's a trademark. In
"BoopsiWizard", note letter case differs.
License for BoopsiWizard is LGPL2.1 . Yeah, that means you can both fork it,
in which case you have to publish sources, or include it in commercial project
as long as it's told were it comes from and it comes with its licence.
-Krb, Nov.2025 .
|