This build environment provides a way to build 16-bit Apple //gs software in C or assembly from within Apple’s Xcode development environment under MacOS. Features of this build environment include:
- Supports the two major cross development systems available for the Apple //gs. Use the ORCA tools and build a project in C or assembly or a mix of the two. Use Merlin32 and build an assembly project. Regardless of the toolset you choose, a full set of project templates are provided to get you started quickly.
- Attempts to hide all of the infrastructure which you don’t need to modify in a make directory.
- Supports linking together multiple ORCA/C and ORCA/M assembly files. To add a new file to the project, just create a new *.c or *.s file in the project directory.
- Supports a single resource file in your project. Any files included in your resource files are detected in the build and if you change the header, the resource file will rebuild automatically.
- Supports putting your source files in multiple directories. Just make sure to add those directories to the SRCDIRS variable in the root Makefile. Once you add the source directory to the build, any source files in that directory will automatically be built and linked into your executable.
- If you change a header file, the right source files will rebuild automatically. Header file dependencies are generated during the build.
- If you change a macro file used by one or more assembly source files, the right files will be re-assembled automatically. Assembly file dependencies are generated during the build.
- Supports project types like ORCA or GNO shell executable, GUI executable, new desk accessory, classic desk accessory and control panel. In Xcode, when you create a project, you will see options for each of these project types. Select one and you will have a skeleton project which includes enough code to give you a basic “hello world” style application of that type.
- For shell targets, when you build and run, the shell command is executed right in Xcode itself using Golden Gate. You can edit your run scheme configuration in Xcode to customize the arguments passed to your shell command.
- Creates a bootable disk image from a template as part of the build for non-shell targets. If your target is a CDA, NDA or CDev, the executable is copied to the appropriate place in the System folder.
- Creates a distribution disk image with your build products on it. Also, it creates a ShrinkIt archive of your distribution as part of the build.
- Automatically launches an Apple //gs emulator when you select build and run so you can go from coding to testing your latest build as quickly as possible. GSPort, GSPlus and mame are the supported emulators. It boots to the bootable disk image created and the distribution disk image is open in the Finder when the emulatoed machine boots.
- Write documenation for your project in markdown in Xcode and commit the markdown files into git. At build time, these markdown files can be optionally converted to a Teach text file format and copied into your distribution. That way, you can write your documentation in a form that is easy to manage on the “modern” side and have that converted to something usable on a GS.
- C source and header files (including ORCA system includes) are indexed by Xcode. By doing this, code completion and other features of Xcode should work. That means, if you are coding in C and type “NewW”, Xcode will suggest the toolbox calls NewWindow() and NewWindow2(). Select the one you want and Xcode fills it in, including the arguments that the toolbox call expects.
- There is an optional code generation phase in the build. If you want to write some scripts which generate C source files, C header files or assembly files which are then compiled/assembled in later phases of the build, this would let you do exactly that.
- You can copy a directory of files onto the disk image beyond just the executable. This is useful if you have other files you need to generate and/or distribute in your project.
- Syntax highlighting and better editor support for ORCA/M assembly, Merlin assembly and resource files. Keywords are completed and highlighted. Indentation between start/end and data/end tokens for assembly and inside braces for resource files should be automatic.
- Errors returned by the ORCA/C compiler, the ORCA/M assembler, the resource compiler and the Merlin assembler are now understood by Xcode. The error will be visible in the editor itself and Xcode will jump to the line reported by the compiler to contain the error.
Watch a demo of the build engine here