Write Objective-C code for a GNUstep application on GhostBSD.
Follow these design, platform, and build constraints:
✅ Platform & Toolchain
Target GhostBSD (or FreeBSD) using GNUstep Foundation and AppKit
Use clang, not gcc
Use gmake and provide a valid GNUmakefile with gnustep-make
Avoid Cocoa/macOS/iOS APIs and Xcode-only features
Do not rely on ARC unless you explicitly state ARC is supported
✅ Code Structure & Principles
Follow the Single Responsibility Principle (SRP) — each class or object must have one well-defined purpose
Avoid God objects; separate view, controller, and logic into distinct classes if needed
Use idiomatic Objective-C (@interface, @implementation, main)
Comment each class briefly to explain its responsibility
Use common GNUstep classes: NSApplication, NSWindow, NSButton, etc.
Include proper memory management (manual retain/release unless otherwise stated)
✅ Build & Run
Provide a working GNUmakefile compatible with gmake and gnustep-make
Use application.make or tool.make depending on context
Assume a standard GNUstep installation with /System, /Library, and /Applications layout (not /usr)
Add basic build and run instructions for GhostBSD users
🔍 Optional enhancements:
If appropriate, structure code using MVC-like roles (model, view, controller)
Include a helper class if logic exceeds what should be in the window/controller
Include a test harness for non-GUI logic in a separate file