Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
128 changes: 72 additions & 56 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@
.SUFFIXES:
#---------------------------------------------------------------------------------

# GNU make treats spaces as separators in variable-expanded file names. Keep
# exported paths readable, and escape them only where make parses a path list.
empty :=
space := $(empty) $(empty)
escape = $(subst $(space),\ ,$(1))

ifeq ($(strip $(DEVKITPRO)),)
$(error "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to>devkitPro")
endif
Expand All @@ -16,7 +22,7 @@ export LIBOGC_MAJOR := 2
export LIBOGC_MINOR := 1
export LIBOGC_PATCH := 0

include $(DEVKITPPC)/base_rules
include $(call escape,$(DEVKITPPC))/base_rules

DATESTRING := $(shell date -u +%Y%m%d)
VERSTRING := $(shell printf "r%s.%s" "$$(git rev-list --count HEAD)" "$$(git rev-parse --short=7 HEAD)")
Expand Down Expand Up @@ -48,8 +54,8 @@ export INCDIR := $(BASEDIR)/include
else
#---------------------------------------------------------------------------------

export LIBDIR := $(LIBS)/$(PLATFORM)
export DEPSDIR := $(DEPS)/$(PLATFORM)
LIBDIR := $(call escape,$(LIBS)/$(PLATFORM))
DEPSDIR := $(call escape,$(DEPS)/$(PLATFORM))

#---------------------------------------------------------------------------------
endif
Expand All @@ -71,52 +77,53 @@ ISOLIB := $(LIBDIR)/libiso9660
WIIKEYBLIB := $(LIBDIR)/libwiikeyboard

#---------------------------------------------------------------------------------
DEFINCS := -I$(BASEDIR) -I$(INCDIR)
INCLUDES := $(DEFINCS) -I$(LWIPDIR)/include -I$(LWIPDIR)/include/ipv4 -I$(LWIPDIR)/include/netif \
-I$(INCDIR)/ogc -I$(INCDIR)/ogc/machine \
-I$(INCDIR)/modplay \
-I$(INCDIR)/bte \
-I$(INCDIR)/sdcard
DEFINCS := -I$(call escape,$(BASEDIR)) -I$(call escape,$(INCDIR))
INCLUDES := $(DEFINCS) -I$(call escape,$(LWIPDIR)/include) -I$(call escape,$(LWIPDIR)/include/ipv4) -I$(call escape,$(LWIPDIR)/include/netif) \
-I$(call escape,$(INCDIR)/ogc) -I$(call escape,$(INCDIR)/ogc/machine) \
-I$(call escape,$(INCDIR)/modplay) \
-I$(call escape,$(INCDIR)/bte) \
-I$(call escape,$(INCDIR)/sdcard)

MACHDEP := -DGEKKO -mcpu=750 -meabi -msdata=sysv -mhard-float -ffunction-sections -fdata-sections


ifeq ($(PLATFORM),wii)
INCLUDES += -I$(BUILD)/wii
INCLUDES += -I$(call escape,$(BUILD)/wii)
MACHDEP += -DHW_RVL -Wa,-mbroadway
endif

ifeq ($(PLATFORM),cube)
INCLUDES += -I$(BUILD)/cube
INCLUDES += -I$(call escape,$(BUILD)/cube)
MACHDEP += -DHW_DOL -Wa,-mgekko
endif

INCLUDES += -I$(PORTLIBS_PATH)/ppc/include
INCLUDES += -I$(call escape,$(PORTLIBS_PATH)/ppc/include)


CFLAGS := -DLIBOGC_INTERNAL -g -O2 -fno-strict-aliasing -Wall -Wno-address-of-packed-member -Wno-prio-ctor-dtor $(MACHDEP) $(INCLUDES)
ASFLAGS := $(MACHDEP) -mregnames -D_LANGUAGE_ASSEMBLY $(INCLUDES)

#---------------------------------------------------------------------------------
VPATH := $(LWIPDIR) \
$(LWIPDIR)/arch/gc \
$(LWIPDIR)/arch/gc/netif \
$(LWIPDIR)/core \
$(LWIPDIR)/core/ipv4 \
$(LWIPDIR)/netif \
$(OGCDIR) \
$(MODDIR) \
$(DBDIR) \
$(DBDIR)/uIP \
$(DIDIR) \
$(BTEDIR) \
$(WIIUSEDIR) \
$(TINYSMBDIR) \
$(LIBASNDDIR) \
$(LIBAESNDDIR) \
$(LIBISODIR) \
$(LIBWIIKEYB) \
$(LIBCDIR)
VPATH_ROOT := $(if $(strip $(PLATFORM)),../..,$(BASEDIR))
VPATH := $(call escape,$(VPATH_ROOT)/lwip) \
$(call escape,$(VPATH_ROOT)/lwip/arch/gc) \
$(call escape,$(VPATH_ROOT)/lwip/arch/gc/netif) \
$(call escape,$(VPATH_ROOT)/lwip/core) \
$(call escape,$(VPATH_ROOT)/lwip/core/ipv4) \
$(call escape,$(VPATH_ROOT)/lwip/netif) \
$(call escape,$(VPATH_ROOT)/libogc) \
$(call escape,$(VPATH_ROOT)/libmodplay) \
$(call escape,$(VPATH_ROOT)/libdb) \
$(call escape,$(VPATH_ROOT)/libdb/uIP) \
$(call escape,$(VPATH_ROOT)/libdi) \
$(call escape,$(VPATH_ROOT)/lwbt) \
$(call escape,$(VPATH_ROOT)/wiiuse) \
$(call escape,$(VPATH_ROOT)/libtinysmb) \
$(call escape,$(VPATH_ROOT)/libasnd) \
$(call escape,$(VPATH_ROOT)/libaesnd) \
$(call escape,$(VPATH_ROOT)/libiso9660) \
$(call escape,$(VPATH_ROOT)/libwiikeyboard) \
$(call escape,$(VPATH_ROOT)/libc)


#---------------------------------------------------------------------------------
Expand Down Expand Up @@ -184,18 +191,18 @@ all: wii cube
#---------------------------------------------------------------------------------
wii: include/ogc/libversion.h
#---------------------------------------------------------------------------------
@[ -d $(LIBS)/wii ] || mkdir -p $(LIBS)/wii
@[ -d $(DEPS)/wii ] || mkdir -p $(DEPS)/wii
@[ -d $(BUILD)/wii ] || mkdir -p $(BUILD)/wii
@$(MAKE) PLATFORM=wii libs -C $(BUILD)/wii -f $(CURDIR)/Makefile
@[ -d "$(LIBS)/wii" ] || mkdir -p "$(LIBS)/wii"
@[ -d "$(DEPS)/wii" ] || mkdir -p "$(DEPS)/wii"
@[ -d "$(BUILD)/wii" ] || mkdir -p "$(BUILD)/wii"
@$(MAKE) PLATFORM=wii libs -C "$(BUILD)/wii" -f "$(CURDIR)/Makefile"

#---------------------------------------------------------------------------------
cube: include/ogc/libversion.h
#---------------------------------------------------------------------------------
@[ -d $(LIBS)/cube ] || mkdir -p $(LIBS)/cube
@[ -d $(DEPS)/cube ] || mkdir -p $(DEPS)/cube
@[ -d $(BUILD)/cube ] || mkdir -p $(BUILD)/cube
@$(MAKE) PLATFORM=cube libs -C $(BUILD)/cube -f $(CURDIR)/Makefile
@[ -d "$(LIBS)/cube" ] || mkdir -p "$(LIBS)/cube"
@[ -d "$(DEPS)/cube" ] || mkdir -p "$(DEPS)/cube"
@[ -d "$(BUILD)/cube" ] || mkdir -p "$(BUILD)/cube"
@$(MAKE) PLATFORM=cube libs -C "$(BUILD)/cube" -f "$(CURDIR)/Makefile"


#---------------------------------------------------------------------------------
Expand Down Expand Up @@ -224,16 +231,16 @@ aesndlib.o: aesnddspmixer.h
#---------------------------------------------------------------------------------

#---------------------------------------------------------------------------------
asnd_dsp_mixer.h: $(LIBASNDDIR)/dsp_mixer/dsp_mixer.s
asnd_dsp_mixer.h: $(call escape,$(LIBASNDDIR))/dsp_mixer/dsp_mixer.s
#---------------------------------------------------------------------------------
@echo $(notdir $<)
@gcdsptool -c $< -o $@
@gcdsptool -c "$<" -o "$@"

#---------------------------------------------------------------------------------
aesnddspmixer.h: $(LIBAESNDDIR)/dspcode/dspmixer.s
aesnddspmixer.h: $(call escape,$(LIBAESNDDIR))/dspcode/dspmixer.s
#---------------------------------------------------------------------------------
@echo $(notdir $<)
@gcdsptool -c $< -o $@
@gcdsptool -c "$<" -o "$@"

#---------------------------------------------------------------------------------
$(BBALIB).a: $(LWIPOBJ)
Expand Down Expand Up @@ -266,19 +273,19 @@ $(WIIUSELIB).a: $(WIIUSEOBJ)
#---------------------------------------------------------------------------------
install: wii cube
#---------------------------------------------------------------------------------
@mkdir -p $(DESTDIR)$(DEVKITPRO)/libogc2/gamecube/lib
@mkdir -p $(DESTDIR)$(DEVKITPRO)/libogc2/wii/lib
@cp -frv include $(DESTDIR)$(DEVKITPRO)/libogc2/gamecube
@cp -frv include $(DESTDIR)$(DEVKITPRO)/libogc2/wii
@cp -frv lib/cube/*.a $(DESTDIR)$(DEVKITPRO)/libogc2/gamecube/lib
@cp -frv lib/wii/*.a $(DESTDIR)$(DEVKITPRO)/libogc2/wii/lib
@cp -frv *_license.txt $(DESTDIR)$(DEVKITPRO)/libogc2
@cp -frv *_rules $(DESTDIR)$(DEVKITPRO)/libogc2
@mkdir -p "$(DESTDIR)$(DEVKITPRO)/libogc2/gamecube/lib"
@mkdir -p "$(DESTDIR)$(DEVKITPRO)/libogc2/wii/lib"
@cp -frv include "$(DESTDIR)$(DEVKITPRO)/libogc2/gamecube"
@cp -frv include "$(DESTDIR)$(DEVKITPRO)/libogc2/wii"
@cp -frv lib/cube/*.a "$(DESTDIR)$(DEVKITPRO)/libogc2/gamecube/lib"
@cp -frv lib/wii/*.a "$(DESTDIR)$(DEVKITPRO)/libogc2/wii/lib"
@cp -frv *_license.txt "$(DESTDIR)$(DEVKITPRO)/libogc2"
@cp -frv *_rules "$(DESTDIR)$(DEVKITPRO)/libogc2"

#---------------------------------------------------------------------------------
uninstall:
#---------------------------------------------------------------------------------
@rm -frv $(DESTDIR)$(DEVKITPRO)/libogc2
@rm -frv "$(DESTDIR)$(DEVKITPRO)/libogc2"


LIBRARIES := $(OGCLIB).a $(MODLIB).a $(DBLIB).a $(TINYSMBLIB).a $(ASNDLIB).a $(AESNDLIB).a $(ISOLIB).a
Expand All @@ -290,16 +297,25 @@ ifeq ($(PLATFORM),wii)
LIBRARIES += $(BTELIB).a $(WIIUSELIB).a $(DILIB).a $(WIIKEYBLIB).a
endif

# base_rules' generic archive recipe leaves $@ unquoted. Keep the archive
# target safe when the checkout or output directory contains spaces.
$(LIBRARIES):
#---------------------------------------------------------------------------------
$(SILENTMSG) $(notdir $@)
$(ADD_COMPILE_COMMAND) end
$(SILENTCMD)rm -f "$@"
$(SILENTCMD)$(AR) -rc "$@" $^

#---------------------------------------------------------------------------------
libs: $(LIBRARIES)
#---------------------------------------------------------------------------------

#---------------------------------------------------------------------------------
clean:
#---------------------------------------------------------------------------------
rm -fr $(BUILD)
rm -fr $(DEPS)
rm -fr $(LIBS)
rm -fr "$(BUILD)"
rm -fr "$(DEPS)"
rm -fr "$(LIBS)"

#---------------------------------------------------------------------------------
docs:
Expand All @@ -311,4 +327,4 @@ docker:
#---------------------------------------------------------------------------------
docker build --no-cache -t ghcr.io/extremscorner/libogc2:$(DATESTRING) -t ghcr.io/extremscorner/libogc2:latest .

-include $(DEPSDIR)/*.d
-include $(call escape,$(DEPSDIR))/*.d