init uhhhh uhhhhhhhh uh uh uhu hhhhh
This commit is contained in:
parent
3d3de5b1e5
commit
b7ebdb3c28
24 changed files with 1038 additions and 3 deletions
145
Makefile
Normal file
145
Makefile
Normal file
|
@ -0,0 +1,145 @@
|
|||
# Sample Makefile for Marsdev (SGDK version)
|
||||
|
||||
# Default paths, can be overridden by setting MARSDEV before calling make
|
||||
MARSDEV ?= ${HOME}/mars
|
||||
MARSBIN = $(MARSDEV)/m68k-elf/bin
|
||||
TOOLSBIN = $(MARSDEV)/bin
|
||||
|
||||
# GCC and Binutils
|
||||
CC = $(MARSBIN)/m68k-elf-gcc
|
||||
CXX = $(MARSBIN)/m68k-elf-g++
|
||||
AS = $(MARSBIN)/m68k-elf-as
|
||||
LD = $(MARSBIN)/m68k-elf-ld
|
||||
NM = $(MARSBIN)/m68k-elf-nm
|
||||
OBJC = $(MARSBIN)/m68k-elf-objcopy
|
||||
# SGDK Tools
|
||||
BINTOS = $(TOOLSBIN)/bintos
|
||||
PCMTORAW = $(TOOLSBIN)/pcmtoraw
|
||||
RESCOMP = $(TOOLSBIN)/rescomp
|
||||
WAVTORAW = $(TOOLSBIN)/wavtoraw
|
||||
XGMTOOL = $(TOOLSBIN)/xgmtool
|
||||
# Use rescomp jar for SGDK > 1.33
|
||||
ifneq ("$(wildcard $(TOOLSBIN)/rescomp.jar)","")
|
||||
RESCOMP = java -jar $(TOOLSBIN)/rescomp.jar
|
||||
WAVTORAW = @echo "wavtoraw no longer available!" ##
|
||||
PCMTORAW = @echo "pcmtoraw no longer available!" ##
|
||||
endif
|
||||
|
||||
# Some files needed are in a versioned directory
|
||||
GCC_VER := $(shell $(CC) -dumpversion)
|
||||
|
||||
# Need the LTO plugin so NM can dump our symbol table
|
||||
PLUGIN = $(MARSDEV)/m68k-elf/libexec/gcc/m68k-elf/$(GCC_VER)
|
||||
LTO_SO = liblto_plugin.so
|
||||
ifeq ($(OS),Windows_NT)
|
||||
LTO_SO = liblto_plugin-0.dll
|
||||
endif
|
||||
|
||||
# Includes: Local + GCC + SGDK + Newlib
|
||||
INCS = -Isrc -Ires -Iinc
|
||||
INCS += -I$(MARSDEV)/m68k-elf/lib/gcc/m68k-elf/$(GCC_VER)/include
|
||||
INCS += -I$(MARSDEV)/m68k-elf/include
|
||||
INCS += -I$(MARSDEV)/m68k-elf/m68k-elf/include
|
||||
|
||||
# Libraries: GCC + Newlib (SGDK libs are with release/debug targets)
|
||||
# If you plan on using Newlib, uncomment the line with -lnosys
|
||||
LIBS = -L$(MARSDEV)/m68k-elf/lib/gcc/m68k-elf/$(GCC_VER) -lgcc
|
||||
#LIBS += -L$(MARSDEV)/m68k-elf/m68k-elf/lib -lnosys
|
||||
|
||||
# Force libgcc math routines to be available at link time
|
||||
LIBS += -u __modsi3 -u __divsi3 -u __mulsi3 -u __umodsi3 -u __udivsi3 -u __umulsi3
|
||||
|
||||
# Any C or C++ standard should be fine here as long as GCC support it
|
||||
CCFLAGS = -m68000 -Wall -Wextra -std=c99 -ffreestanding -fcommon
|
||||
CXXFLAGS = -m68000 -Wall -Wextra -std=c++17 -ffreestanding
|
||||
|
||||
# Extra options set by debug or release target
|
||||
OPTIONS =
|
||||
ASFLAGS = -m68000 --register-prefix-optional
|
||||
LDFLAGS = -T $(MARSDEV)/ldscripts/sgdk.ld -nostdlib -fcommon
|
||||
|
||||
RESS = $(wildcard res/*.res)
|
||||
CS = $(wildcard src/*.c)
|
||||
CPPS = $(wildcard src/*.cpp)
|
||||
SS = $(wildcard src/*.s)
|
||||
|
||||
OBJS = $(RESS:.res=.o)
|
||||
OBJS += $(CS:.c=.o)
|
||||
OBJS += $(CPPS:.cpp=.o)
|
||||
OBJS += $(SS:.s=.o)
|
||||
|
||||
ASMO = $(RESS:.res=.o)
|
||||
ASMO += $(CS:%.c=asmout/%.s)
|
||||
|
||||
.SECONDARY: out.elf
|
||||
|
||||
.PHONY: all release asm debug
|
||||
|
||||
all: release
|
||||
|
||||
release: OPTIONS = -O3 -fno-web -fno-gcse -fno-unit-at-a-time -fomit-frame-pointer
|
||||
release: OPTIONS += -fshort-enums -flto -fuse-linker-plugin
|
||||
release: LIBS += -L$(MARSDEV)/m68k-elf/lib -lmd
|
||||
release: out.bin symbol.txt
|
||||
|
||||
asm: OPTIONS = -O3 -fno-web -fno-gcse -fno-unit-at-a-time -fomit-frame-pointer
|
||||
asm: OPTIONS += -fshort-enums
|
||||
asm: LIBS += -L$(MARSDEV)/m68k-elf/lib -lmd
|
||||
asm: asm-dir $(ASMO)
|
||||
|
||||
# Gens-KMod, BlastEm and UMDK support GDB tracing, enabled by this target
|
||||
debug: OPTIONS = -g -Og -DDEBUG -DKDEBUG -fno-web -fno-gcse -fno-unit-at-a-time -fshort-enums
|
||||
debug: LIBS += -L$(MARSDEV)/m68k-elf/lib -lmd-debug
|
||||
debug: out.bin symbol.txt
|
||||
|
||||
# This generates a symbol table that is very helpful in debugging crashes,
|
||||
# even with an optimized release build!
|
||||
# Cross reference symbol.txt with the addresses displayed in the crash handler
|
||||
symbol.txt: out.bin
|
||||
$(NM) --plugin=$(PLUGIN)/$(LTO_SO) -n out.elf > symbol.txt
|
||||
|
||||
boot/sega.o: boot/rom_head.bin
|
||||
@echo "AS $<"
|
||||
@$(AS) $(ASFLAGS) boot/sega.s -o $@
|
||||
|
||||
boot/rom_head.bin: boot/rom_head.c
|
||||
@echo "CC $<"
|
||||
@$(CC) $(CFLAGS) $(INCS) -nostdlib -Wl,--oformat=binary $< -o $@
|
||||
|
||||
%.bin: %.elf
|
||||
@echo "Stripping ELF header..."
|
||||
@$(OBJC) -O binary $< temp.bin
|
||||
@dd if=temp.bin of=$@ bs=8192 conv=sync
|
||||
@rm -f temp.bin
|
||||
|
||||
%.elf: boot/sega.o $(OBJS)
|
||||
$(CC) -o $@ $(LDFLAGS) boot/sega.o $(OBJS) $(LIBS)
|
||||
|
||||
%.o: %.c
|
||||
@echo "CC $<"
|
||||
@$(CC) $(CCFLAGS) $(OPTIONS) $(INCS) -c $< -o $@
|
||||
|
||||
%.o: %.cpp
|
||||
@echo "CXX $<"
|
||||
@$(CXX) $(CXXFLAGS) $(OPTIONS) $(INCS) -c $< -o $@
|
||||
|
||||
%.o: %.s
|
||||
@echo "AS $<"
|
||||
@$(AS) $(ASFLAGS) $< -o $@
|
||||
|
||||
%.s: %.res
|
||||
$(RESCOMP) $< $@
|
||||
|
||||
# For asm target
|
||||
asm-dir:
|
||||
mkdir -p asmout/src
|
||||
|
||||
asmout/%.s: %.c
|
||||
$(CC) $(CCFLAGS) $(OPTIONS) $(INCS) -S $< -o $@
|
||||
|
||||
.PHONY: clean
|
||||
|
||||
clean:
|
||||
rm -f $(OBJS) out.bin out.elf symbol.txt
|
||||
rm -f boot/sega.o boot/rom_head.o boot/rom_head.bin
|
||||
rm -rf asmout
|
Reference in a new issue