aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorJohn Wilbert M. Villamor <lameguy64@gmail.com>2019-07-17 11:30:07 +0800
committerJohn Wilbert M. Villamor <lameguy64@gmail.com>2019-07-17 11:30:07 +0800
commit0d4345a9bf2623df079c50a3bc73cbb7deca1176 (patch)
tree6cda70b844f39fc2d65a806b91a6010066433b56 /examples
parentb956c5391b955e793a4d54572aa58872b4c66c30 (diff)
downloadpsn00bsdk-0d4345a9bf2623df079c50a3bc73cbb7deca1176.tar.gz
Added C++ support, updated build instructions and makefiles, consolidated libc and libgcc (during build process), libraries now v0.12b and more
Diffstat (limited to 'examples')
-rw-r--r--examples/balls/main.c2
-rw-r--r--examples/balls/makefile27
-rw-r--r--examples/gte/makefile2
-rw-r--r--examples/n00bdemo/makefile2
-rw-r--r--examples/sdk-common.mk30
5 files changed, 46 insertions, 17 deletions
diff --git a/examples/balls/main.c b/examples/balls/main.c
index ba6a391..1be49e0 100644
--- a/examples/balls/main.c
+++ b/examples/balls/main.c
@@ -22,7 +22,7 @@
#include "ball16c.h"
-#define MAX_BALLS 384
+#define MAX_BALLS 1024
#define OT_LEN 8
diff --git a/examples/balls/makefile b/examples/balls/makefile
index b5c8d91..e0f6bc3 100644
--- a/examples/balls/makefile
+++ b/examples/balls/makefile
@@ -1,23 +1,40 @@
include ../sdk-common.mk
+# Project target name
TARGET = balls.elf
+# Searches for C, C++ and S (assembler) files in local directory
CFILES = $(notdir $(wildcard *.c))
CPPFILES = $(notdir $(wildcard *.cpp))
AFILES = $(notdir $(wildcard *.s))
-OFILES = $(addprefix build/,$(CFILES:.c=.o) $(CPPFILES:.cpp=.o) $(AFILES:.s=.o))
+# Determine object files
+OFILES = $(addprefix build/,$(CFILES:.c=.o)) \
+ $(addprefix build/,$(CPPFILES:.cpp=.o)) \
+ $(addprefix build/,$(AFILES:.s=.o))
+# Project specific include and library directories
+# (use -I for include dirs, -L for library dirs)
INCLUDE +=
LIBDIRS +=
-LIBS = -lc -lpsxetc -lpsxgpu -lpsxgte -lpsxspu -lpsxapi -lgcc
+# Libraries to link
+LIBS = -lpsxetc -lpsxgpu -lpsxgte -lpsxspu -lpsxapi -lc
+# C compiler flags
CFLAGS = -g -O2 -fno-builtin -fdata-sections -ffunction-sections
+
+# C++ compiler flags
CPPFLAGS = $(CFLAGS) -fno-exceptions
+
+# Assembler flags
AFLAGS = -g -msoft-float
-LDFLAGS = -g -Ttext=0x80010000 -gc-sections
+# Linker flags
+LDFLAGS = -g -Ttext=0x80010000 -gc-sections \
+ -T $(GCC_BASE)/mipsel-unknown-elf/lib/ldscripts/elf32elmip.x
+
+# Toolchain programs
CC = $(PREFIX)gcc
CXX = $(PREFIX)g++
AS = $(PREFIX)as
@@ -31,6 +48,10 @@ build/%.o: %.c
@mkdir -p $(dir $@)
$(CC) $(CFLAGS) $(INCLUDE) -c $< -o $@
+build/%.o: %.cpp
+ @mkdir -p $(dir $@)
+ $(CXX) $(AFLAGS) $(INCLUDE) -c $< -o $@
+
build/%.o: %.s
@mkdir -p $(dir $@)
$(CC) $(AFLAGS) $(INCLUDE) -c $< -o $@
diff --git a/examples/gte/makefile b/examples/gte/makefile
index 763b3d8..89b27d3 100644
--- a/examples/gte/makefile
+++ b/examples/gte/makefile
@@ -16,7 +16,7 @@ LIBS = -lc -lpsxetc -lpsxgpu -lpsxgte -lpsxspu -lpsxapi -lgcc
CFLAGS = -g -O2 -fno-builtin -fdata-sections -ffunction-sections
CPPFLAGS = $(CFLAGS) -fno-exceptions
AFLAGS = -g -msoft-float
-LDFLAGS = -g -Ttext=0x80010000 -gc-sections
+LDFLAGS = -g -Ttext=0x80010000 -gc-sections -T $(GCC_BASE)/mipsel-unknown-elf/lib/ldscripts/elf32elmip.x
CC = $(PREFIX)gcc
CXX = $(PREFIX)g++
diff --git a/examples/n00bdemo/makefile b/examples/n00bdemo/makefile
index a87f299..8159a22 100644
--- a/examples/n00bdemo/makefile
+++ b/examples/n00bdemo/makefile
@@ -15,7 +15,7 @@ LIBS = -llzp -lc -lpsxetc -lpsxgpu -lpsxgte -lpsxspu -lpsxapi -lgcc
CFLAGS = -g -O2 -fno-builtin -fdata-sections -ffunction-sections
CPPFLAGS = $(CFLAGS) -fno-exceptions
AFLAGS = -g -msoft-float
-LDFLAGS = -g -Ttext=0x80010000 -gc-sections
+LDFLAGS = -g -Ttext=0x80010000 -gc-sections -T $(GCC_BASE)/mipsel-unknown-elf/lib/ldscripts/elf32elmip.x
CC = $(PREFIX)gcc
CXX = $(PREFIX)g++
diff --git a/examples/sdk-common.mk b/examples/sdk-common.mk
index 8a92dbf..0d97555 100644
--- a/examples/sdk-common.mk
+++ b/examples/sdk-common.mk
@@ -1,19 +1,27 @@
# Adjustable common makefile values for PSn00bSDK example programs.
-# You may need to modify these values to correspond to your toolchain setup.
+# You may need to modify these values to match with your toolchain setup.
-# Toolchain prefix. Can include an absolute path to the toolchain executables.
+# Toolchain prefix
PREFIX = mipsel-unknown-elf-
-# Include directories.
+# Include directories
INCLUDE = -I../../libpsn00b/include
-# Library directories. Last entry must point to a directory containing libgcc.
+# Library directories, last entry must point toolchain libraries
LIBDIRS = -L../../libpsn00b
-# Directory path for toolchain's libraries (you may need to change this)
-ifeq "$(OS)" "Windows_NT"
-# For Windows
-LIBDIRS += -L/c/psn00bsdk/lib
-else
-# For Linux/BSDs
-LIBDIRS += -L/usr/local/mipsel-unknown-elf/lib/gcc/mipsel-unknown-elf/6.3.0
+
+
+GCC_VERSION = 7.4.0
+
+ifeq "$(OS)" "Windows_NT" # For Windows
+
+GCC_BASE = /c/mipsel-unknown-elf
+
+else # For Linux/BSDs
+
+GCC_BASE = /usr/local/mipsel-unknown-elf
+
endif
+
+LIBDIRS += -L$(GCC_BASE)/lib/gcc/mipsel-unknown-elf/$(GCC_VERSION)
+INCLUDE += -I$(GCC_BASE)/lib/gcc/mipsel-unknown-elf/$(GCC_VERSION)/include