# Apple IIgs build rules. # # Uses GoldenGate's iix to drive ORCA/C 2.1.0 + ORCA Linker. The # toolchains/iigs/iix-build.sh wrapper handles ORCA's case-sensitivity # quirks (lowercase .a/.root/.sym vs linker demands for uppercase), # multi-source compile/link, and pragma injection for include paths # and the stdint/stdbool shim headers. include $(dir $(lastword $(MAKEFILE_LIST)))/common.mk PLATFORM := iigs BUILD := $(REPO_DIR)/build/$(PLATFORM) BINDIR := $(BUILD)/bin PORT_C_SRCS := $(wildcard $(SRC_PORT)/iigs/*.c) LIB_SRCS := $(CORE_C_SRCS) $(PORT_C_SRCS) HELLO_SRC := $(EXAMPLES)/hello/hello.c HELLO_BIN := $(BINDIR)/HELLO PATTERN_SRC := $(EXAMPLES)/pattern/pattern.c PATTERN_BIN := $(BINDIR)/PATTERN DISK_IMG := $(BINDIR)/joey.2mg IIGS_PACKAGE := $(REPO_DIR)/toolchains/iigs/package-disk.sh IIX_INCLUDES := \ -I $(IIGS_INCLUDE_SHIM) \ -I $(INCLUDE_DIR) \ -I $(INCLUDE_DIR)/joey \ -I $(SRC_CORE) .PHONY: all iigs iigs-disk clean-iigs all iigs: $(HELLO_BIN) $(PATTERN_BIN) # iix-build.sh takes MAIN.c first, then EXTRA sources (compiled with # #pragma noroot). The example source supplies main(); libjoey sources # are the extras. The chtyp post-step tags the output as GS/OS S16 # ($B3) so GS/OS recognizes it as launchable; the file-type lives in # a user.com.apple.FinderInfo xattr that iix and profuse preserve. $(HELLO_BIN): $(HELLO_SRC) $(LIB_SRCS) $(IIGS_BUILD) @mkdir -p $(dir $@) $(IIGS_BUILD) $(IIX_INCLUDES) -o $@ $(HELLO_SRC) $(LIB_SRCS) $(IIGS_IIX) chtyp -t S16 $@ $(PATTERN_BIN): $(PATTERN_SRC) $(LIB_SRCS) $(IIGS_BUILD) @mkdir -p $(dir $@) $(IIGS_BUILD) $(IIX_INCLUDES) -o $@ $(PATTERN_SRC) $(LIB_SRCS) $(IIGS_IIX) chtyp -t S16 $@ # Assemble an 800KB ProDOS 2img containing both examples, ready to # mount in GSplus alongside a GS/OS boot volume. iigs-disk: $(DISK_IMG) $(DISK_IMG): $(HELLO_BIN) $(PATTERN_BIN) $(IIGS_PACKAGE) @mkdir -p $(dir $@) $(IIGS_PACKAGE) $@ $(HELLO_BIN) $(PATTERN_BIN) clean-iigs: rm -rf $(BUILD)