Page 1 of 1

adding include and librarys from another destination

Posted: Wed Dec 18, 2024 12:39 am
by guinea7pig

this is the makefile for my project i want to add includes from the directory /usr/local/include/tremor and libs from /usr/local/lib64
how would i go about doing that. here is my makefile

Code: Select all

#---------------------------------------------------------------------------------
# Clear the implicit built in rules
#---------------------------------------------------------------------------------
.SUFFIXES:
#---------------------------------------------------------------------------------
ifeq ($(strip $(DEVKITPPC)),)
$(error "Please set DEVKITPPC in your environment. export DEVKITPPC=<path to>devkitPPC")
endif

include $(DEVKITPPC)/wii_rules

#---------------------------------------------------------------------------------
# TARGET is the name of the output
# BUILD is the directory where object files & intermediate files will be placed
# SOURCES is a list of directories containing source code
# INCLUDES is a list of directories containing extra header files
#---------------------------------------------------------------------------------
TARGET		:=	$(notdir $(CURDIR))
BUILD		:=	build
SOURCES		:=	src src/scene src/resource src/gameobjects
DATA		:=	data
ASSETS		:=	sd/apps/saiiber/assets
TEXTURES	:=	textures
INCLUDES :=

#---------------------------------------------------------------------------------
# options for code generation
#---------------------------------------------------------------------------------

CFLAGS	= -g -O2 -Wall $(MACHDEP) $(INCLUDE)
CXXFLAGS	=	$(CFLAGS)

LDFLAGS	=	-g $(MACHDEP) -Wl,-Map,$(notdir $@).map

#---------------------------------------------------------------------------------
# any extra libraries we wish to link with the project
#---------------------------------------------------------------------------------
LIBS	:= -lwiiuse -lbte -lfat -lasnd -logc -lm -lvorbisidec -lpng -logg -lgif -lmpg123 -lwiikeyboard -lfreetype

#---------------------------------------------------------------------------------
# list of directories containing libraries, this must be the top level containing
# include and lib
#---------------------------------------------------------------------------------
LIBDIRS	:= $(PORTLIBS)

#---------------------------------------------------------------------------------
# no real need to edit anything past this point unless you need to add additional
# rules for different file extensions
#---------------------------------------------------------------------------------
ifneq ($(BUILD),$(notdir $(CURDIR)))
#---------------------------------------------------------------------------------

export OUTPUT	:=	$(CURDIR)/$(TARGET)

export VPATH	:=	$(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
					$(foreach dir,$(DATA),$(CURDIR)/$(dir))

export DEPSDIR	:=	$(CURDIR)/$(BUILD)

#---------------------------------------------------------------------------------
# automatically build a list of object files for our project
#---------------------------------------------------------------------------------
CFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
CPPFILES	:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
sFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
SFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S)))
BINFILES	:=	$(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))

#---------------------------------------------------------------------------------
# use CXX for linking C++ projects, CC for standard C
#---------------------------------------------------------------------------------
ifeq ($(strip $(CPPFILES)),)
	export LD	:=	$(CC)
else
	export LD	:=	$(CXX)
endif

export OFILES_BIN	:=	$(addsuffix .o,$(BINFILES))
export OFILES_SOURCES := $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(sFILES:.s=.o) $(SFILES:.S=.o)
export OFILES := $(OFILES_BIN) $(OFILES_SOURCES)

export HFILES := $(addsuffix .h,$(subst .,_,$(BINFILES)))

#---------------------------------------------------------------------------------
# build a list of include paths
#---------------------------------------------------------------------------------
export INCLUDE	:=	$(foreach dir,$(INCLUDES), -iquote $(CURDIR)/$(dir)) \
					$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
					-I$(CURDIR)/$(BUILD) \
					-I$(LIBOGC_INC) \

#---------------------------------------------------------------------------------
# build a list of library paths
#---------------------------------------------------------------------------------
export LIBPATHS	:= -L$(LIBOGC_LIB) $(foreach dir,$(LIBDIRS),-L$(dir)/lib)

export OUTPUT	:=	$(CURDIR)/sd/apps/saiiber/boot
.PHONY: $(BUILD) clean

all: $(BUILD)

#---------------------------------------------------------------------------------
$(BUILD):
	@[ -d $@ ] || mkdir -p $@
	@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile

#---------------------------------------------------------------------------------
clean:
	@echo clean ...
	@rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).dol

#---------------------------------------------------------------------------------
run:
	wiiload $(TARGET).dol


#---------------------------------------------------------------------------------
else

DEPENDS	:=	$(OFILES:.o=.d)

#---------------------------------------------------------------------------------
# main targets
#---------------------------------------------------------------------------------
$(OUTPUT).dol: $(OUTPUT).elf
$(OUTPUT).elf: $(OFILES)

$(OFILES_SOURCES) : $(HFILES)

#---------------------------------------------------------------------------------
# This rule links in binary data with the .jpg extension
#---------------------------------------------------------------------------------
%.jpg.o	%_jpg.h :	%.jpg
#---------------------------------------------------------------------------------
	@echo $(notdir $<)
	$(bin2o)

#---------------------------------------------------------------------------------
# This rule links in binary data with the .png extension
#---------------------------------------------------------------------------------
%.png.o	%_png.h :	%.png
#---------------------------------------------------------------------------------
	@echo $(notdir $<)
	$(bin2o)

#---------------------------------------------------------------------------------
# This rule links in binary data with the .gif extension
#---------------------------------------------------------------------------------
%.gif.o	%_gif.h :	%.gif
#---------------------------------------------------------------------------------
	@echo $(notdir $<)
	$(bin2o)

#---------------------------------------------------------------------------------
# This rule links in binary data with the .obj extension
#---------------------------------------------------------------------------------
%.obj.o	%_obj.h :	%.obj
#---------------------------------------------------------------------------------
	@echo $(notdir $<)
	$(bin2o)

#---------------------------------------------------------------------------------
# This rule links in binary data with the .mpg extension
#---------------------------------------------------------------------------------
%.mpg.o	%_mpg.h :	%.mpg
#---------------------------------------------------------------------------------
	@echo $(notdir $<)
	$(bin2o)


-include $(DEPENDS)

#---------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------

Re: adding include and librarys from another destination

Posted: Thu Dec 19, 2024 2:29 pm
by WinterMute

You don't. Those locations are for your native system libraries which are not compatible with devkitPPC. You can, however, find a variety of devkitPPC compatible libraries we supply pacman. The Makefile you've posted includes $(PORTLIBS) in LIBDIRS which adds the appropriate search paths.

You can use pacman -Sl to see available libraries - the ones prefixed with gamecube, wii or ppc are compatible with devkitPPC. libtremor is available as ppc-libvorbisiodec and can be installed with sudo pacman -S ppc-libvorbisidec (use dkp-pacman on systems without native pacman, for msys2 don't use sudo)


Re: adding include and librarys from another destination

Posted: Sat Dec 21, 2024 5:11 pm
by guinea7pig

the problem is that the makefile expects it to be in a folder called tremor at least for the inludes. like this <tremor/file.h> could i just remove the tremor folder


Re: adding include and librarys from another destination

Posted: Sun Dec 22, 2024 8:57 pm
by WinterMute
guinea7pig wrote: Sat Dec 21, 2024 5:11 pm

the problem is that the makefile expects it to be in a folder called tremor at least for the includes. like this <tremor/file.h> could i just remove the tremor folder

This isn't a libtremor header. The headers I see here are these

Code: Select all

$ ls -al /opt/devkitpro/portlibs/ppc/include/tremor/
total 28
drwxr-xr-x  2 root root 4096 Apr 28  2023 .
drwxr-xr-x 20 root root 4096 May  4  2024 ..
-rw-r--r--  1 root root 1152 Mar 25  2019 config_types.h
-rw-r--r--  1 root root 6870 Mar 25  2019 ivorbiscodec.h
-rw-r--r--  1 root root 4801 Mar 25  2019 ivorbisfile.h

Where did you get file.h from?

The Makefile you've shown here should be adding -I /opt/devkitpro/portlibs/ppc/include to CFLAGS. Use make V=1 to show the full command line.