aboutsummaryrefslogtreecommitdiff
path: root/libpsn00b/libc/makefile
diff options
context:
space:
mode:
authorJohn "Lameguy" Wilbert Villamor <lameguy64@gmail.com>2021-08-31 13:23:20 +0800
committerGitHub <noreply@github.com>2021-08-31 13:23:20 +0800
commitffa679d4d24b891cb59aba10946368f2ec00c391 (patch)
tree0cf6061915ebf48acdedf6d77b0c1b76eec5b8c3 /libpsn00b/libc/makefile
parent317dc2b91d3afcdbaddb035f38611d12af161970 (diff)
parentf2fc18f82dd7900465d6ab3ae2080726d5589d39 (diff)
downloadpsn00bsdk-ffa679d4d24b891cb59aba10946368f2ec00c391.tar.gz
Merge pull request #36 from spicyjpeg/dynlink
Dynamic linker, gp-relative addressing, ldscripts and more
Diffstat (limited to 'libpsn00b/libc/makefile')
-rw-r--r--libpsn00b/libc/makefile59
1 files changed, 33 insertions, 26 deletions
diff --git a/libpsn00b/libc/makefile b/libpsn00b/libc/makefile
index a515ad5..bb3a687 100644
--- a/libpsn00b/libc/makefile
+++ b/libpsn00b/libc/makefile
@@ -1,54 +1,61 @@
-# Run using make (Linux) or gmake (BSD)
+# PSn00bSDK library makefile
# Part of the PSn00bSDK Project
-# 2019 - 2020 Lameguy64 / Meido-Tek Productions
+# 2019 - 2021 Lameguy64 / Meido-Tek Productions
-include ../../template/psn00bsdk-setup.mk
+## Settings
-TARGET = libc.a
+PSN00BSDK_LIBS ?= ..
-INCLUDE = -I../include
+include ../../psn00bsdk-setup.mk
-CFLAGS = -g -O2 -msoft-float -fno-builtin -fdata-sections \
- -ffunction-sections -Wa,--strip-local-absolute
-AFLAGS = -g -msoft-float -Wa,-strip-local-absolute
+# Project target name
+TARGET = libc.a
-CFILES = $(notdir $(wildcard ./*.c))
-CXXFILES = $(notdir $(wildcard ./*.cxx))
-AFILES = $(notdir $(wildcard ./*.s))
+## Files
-OFILES = $(addprefix build/,$(CFILES:.c=.o) $(CXXFILES:.cxx=.o) \
- $(AFILES:.s=.o))
+# Searches for C, C++ and S (assembler) files in local directory
+CFILES = $(notdir $(wildcard *.c))
+CXXFILES= $(notdir $(wildcard *.cxx))
+AFILES = $(notdir $(wildcard *.s))
-ifndef PSN00BSDK_LIBS
+# Create names for object files
+OFILES = $(addprefix build/,$(CFILES:.c=.o)) \
+ $(addprefix build/,$(CXXFILES:.cxx=.o)) \
+ $(addprefix build/,$(AFILES:.s=.o))
-PSN00BSDK_LIBS = ..
+# Project specific includes and libraries
+# (use -I for include dirs, -L for library dirs, -l for static libraries)
+INCLUDE +=
+LIBDIRS +=
+LIBS +=
-endif
+## Build rules
-all: $(TARGET)
+all: build/$(TARGET)
-$(TARGET): $(OFILES)
- cp $(GCC_BASE)/lib/gcc/$(PREFIX)/$(GCC_VERSION)/libgcc.a ./$(TARGET)
- $(AR) r $(TARGET) $(OFILES)
- $(RANLIB) $(TARGET)
+build/$(TARGET): $(OFILES)
+ @mkdir -p $(dir $@)
+ # "Import" libgcc's contents
+ cp $(GCC_BASE)/lib/gcc/$(PREFIX)/$(GCC_VERSION)/libgcc.a ./$@
+ $(AR) rs $@ $(OFILES)
build/%.o: %.c
@mkdir -p $(dir $@)
- $(CC) $(CFLAGS) $(INCLUDE) -c $< -o $@
+ $(CC) $(CFLAGS_LIB) $(INCLUDE) -c $< -o $@
build/%.o: %.cxx
@mkdir -p $(dir $@)
- $(CXX) $(CFLAGS) $(INCLUDE) -c $< -o $@
+ $(CXX) $(CPPFLAGS_LIB) $(INCLUDE) -c $< -o $@
build/%.o: %.s
@mkdir -p $(dir $@)
- $(CC) $(AFLAGS) $(INCLUDE) -c $< -o $@
+ $(CC) $(AFLAGS_LIB) $(INCLUDE) -c $< -o $@
install:
ifneq ($(PSN00BSDK_LIBS), "..")
@mkdir -p $(PSN00BSDK_LIBS)
endif
- cp $(TARGET) $(PSN00BSDK_LIBS)/$(TARGET)
+ cp build/$(TARGET) $(PSN00BSDK_LIBS)/$(TARGET)
clean:
- rm -Rf build $(TARGET)
+ rm -rf build