summaryrefslogtreecommitdiff
path: root/arm9/lib/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/lib/Makefile')
-rw-r--r--arm9/lib/Makefile89
1 files changed, 89 insertions, 0 deletions
diff --git a/arm9/lib/Makefile b/arm9/lib/Makefile
new file mode 100644
index 00000000..c0e95ade
--- /dev/null
+++ b/arm9/lib/Makefile
@@ -0,0 +1,89 @@
+
+
+# Try to include devkitarm if installed
+TOOLCHAIN := $(DEVKITARM)
+
+ifneq (,$(wildcard $(TOOLCHAIN)/base_tools))
+include $(TOOLCHAIN)/base_tools
+endif
+
+### Default target ###
+
+default: all
+
+# If you are using WSL, it is recommended you build with NOWINE=1.
+WSLENV ?= no
+ifeq ($(WSLENV),)
+NOWINE = 1
+else
+NOWINE = 0
+endif
+
+ifeq ($(OS),Windows_NT)
+EXE := .exe
+WINE :=
+else
+EXE :=
+WINE := wine
+endif
+
+ifeq ($(NOWINE),1)
+WINE :=
+endif
+
+# Compare result of arm9, arm7, and ROM to sha1 hash(s)
+COMPARE ?= 1
+
+##################### Compiler Options #######################
+
+MWCCVERSION = 1.2/sp2p3
+
+CROSS := arm-none-eabi-
+
+MWCCARM = ../../tools/mwccarm/$(MWCCVERSION)/mwccarm.exe
+# Argh... due to EABI version shenanigans, we can't use GNU LD to link together
+# MWCC built objects and GNU built ones. mwldarm, however, doesn't care, so we
+# have to use mwldarm for now.
+# TODO: Is there a hack workaround to let us go back to GNU LD? Ideally, the
+# only dependency should be MWCCARM.
+MWLDARM = ../../tools/mwccarm/$(MWCCVERSION)/mwldarm.exe
+MWASMARM = ../../tools/mwccarm/$(MWCCVERSION)/mwasmarm.exe
+NARCCOMP = ../../tools/narccomp/narccomp$(EXE)
+SCANINC = ../../tools/scaninc/scaninc$(EXE)
+
+AS = $(WINE) $(MWASMARM)
+CC = $(WINE) $(MWCCARM)
+CPP := cpp -P
+LD = $(WINE) $(MWLDARM)
+AR := $(CROSS)ar
+OBJDUMP := $(CROSS)objdump
+OBJCOPY := $(CROSS)objcopy
+
+# ./tools/mwccarm/2.0/base/mwasmarm.exe -proc arm5te asm/arm9_thumb.s -o arm9.o
+ASFLAGS = -proc arm5te -ir ../..
+CFLAGS = -O4,p -proc arm946e -fp soft -lang c99 -Cpp_exceptions off -i include -ir include-mw -ir arm9/lib/include -W all
+LDFLAGS = -library -nodead -w off -proc v5te -interworking -pic
+ARFLAGS = rcS
+
+export MWCIncludes := include
+
+################ Targets #################
+
+LIBS := libsyscall.a
+.PHONY: all clean
+
+all: $(LIBS)
+
+clean:
+ $(RM) $(LIBS) $(LIBS:%.a=%/*.o)
+
+libsyscall.a: syscall/_svc_mw.o
+
+%.a:
+ $(AR) $(ARFLAGS) -o $@ $^
+
+%.o: %.c
+ $(CC) $(CFLAGS) -o $@ $<
+
+%.o: %.s
+ $(AS) $(ASFLAGS) -o $@ $<