From ebbf9caabe884ff7481aac510bb9e31e5654faf2 Mon Sep 17 00:00:00 2001 From: Jon Daniel Date: Fri, 17 Oct 2025 22:08:12 +0000 Subject: [PATCH 1/7] add libraries and fix nonstring/unused --- Makefile | 2 +- cmake/IMG.cmake | 4 ++++ samples/map/makefile | 4 ++-- samples/shapes/makefile | 4 ++-- src/saveload.c | 2 +- 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 0525443..1dc82ce 100644 --- a/Makefile +++ b/Makefile @@ -189,7 +189,7 @@ DEFINES := \ # Compiler settings # ----------------- -CFLAGS := $(DEFINES) -O2 -G0 -ggdb -Wall -DHAVE_AV_CONFIG_H -fno-strict-aliasing -fverbose-asm +CFLAGS := $(DEFINES) -O2 -G0 -ggdb -Wall -Wno-unused -DHAVE_AV_CONFIG_H -fno-strict-aliasing -fverbose-asm CXXFLAGS := $(CFLAGS) -fno-exceptions -fno-rtti ASFLAGS := $(CFLAGS) diff --git a/cmake/IMG.cmake b/cmake/IMG.cmake index 4995d62..8f57fa0 100644 --- a/cmake/IMG.cmake +++ b/cmake/IMG.cmake @@ -45,10 +45,14 @@ foreach(IMAGE_FORMAT ${OSL_IMAGE_FORMATS_AVAILABLE}) if(${IMAGE_FORMAT} IN_LIST OSL_IMAGE_FORMAT_LOADERS) add_compile_definitions(-DOSL_IMAGE_LOADER_${IMAGE_FORMAT}) include_directories(${${IMAGE_FORMAT}_INCLUDE_DIRS}) + link_directories(${${IMAGE_FORMAT}_LIBRARY_DIRS}) + link_libraries(${${IMAGE_FORMAT}_LIBRARIES}) endif() if(${IMAGE_FORMAT} IN_LIST OSL_IMAGE_FORMAT_WRITERS) add_compile_definitions(-DOSL_IMAGE_WRITER_${IMAGE_FORMAT}) include_directories(${${IMAGE_FORMAT}_INCLUDE_DIRS}) + link_directories(${${IMAGE_FORMAT}_LIBRARY_DIRS}) + link_libraries(${${IMAGE_FORMAT}_LIBRARIES}) endif() else() list(REMOVE_ITEM OSL_IMAGE_FORMAT_WRITERS ${IMAGE_FORMAT}) diff --git a/samples/map/makefile b/samples/map/makefile index 52f8f30..b5aae90 100644 --- a/samples/map/makefile +++ b/samples/map/makefile @@ -11,9 +11,9 @@ ASFLAGS = $(CFLAGS) LIBDIR = MYLIBS= -STDLIBS= -losl -lpng -lz \ +STDLIBS= -lm -losl -lgif -lpng -ljpeg -lz \ -lpsphprm -lpspsdk -lpspctrl -lpspumd -lpsprtc -lpsppower -lpspgu -lpspgum -lpspaudiolib -lpspaudio -lpsphttp -lpspssl -lpspwlan \ - -lpspnet_adhocmatching -lpspnet_adhoc -lpspnet_adhocctl -lm -ljpeg + -lpspnet_adhocmatching -lpspnet_adhoc -lpspnet_adhocctl LIBS=$(STDLIBS) $(MYLIBS) LDFLAGS = diff --git a/samples/shapes/makefile b/samples/shapes/makefile index a7fe7e1..4b7a545 100644 --- a/samples/shapes/makefile +++ b/samples/shapes/makefile @@ -11,9 +11,9 @@ ASFLAGS = $(CFLAGS) LIBDIR = MYLIBS= -STDLIBS= -losl -lpng -lz \ +STDLIBS= -lm -losl -lgif -lpng -ljpeg -lz \ -lpsphprm -lpspsdk -lpspctrl -lpspumd -lpsprtc -lpsppower -lpspgu -lpspgum -lpspaudiolib -lpspaudio -lpsphttp -lpspssl -lpspwlan \ - -lpspnet_adhocmatching -lpspnet_adhoc -lpspnet_adhocctl -lm -ljpeg + -lpspnet_adhocmatching -lpspnet_adhoc -lpspnet_adhocctl LIBS=$(STDLIBS) $(MYLIBS) LDFLAGS = diff --git a/src/saveload.c b/src/saveload.c index f990b0a..cc4e312 100644 --- a/src/saveload.c +++ b/src/saveload.c @@ -10,7 +10,7 @@ SceUtilitySavedataParam savedata; PspUtilitySavedataListSaveNewData newData; -char key[] = "QTAK319JQKJ952HA"; +__attribute__((nonstring)) char key[] = "QTAK319JQKJ952HA"; int saveLoadType = OSL_DIALOG_NONE; void oslInitSaveDialog(struct oslSaveLoad *saveData){ From e2c1dde9df2d846bb448c8297b34074ce09625fa Mon Sep 17 00:00:00 2001 From: Jon Daniel Date: Fri, 17 Oct 2025 22:15:22 +0000 Subject: [PATCH 2/7] use external gif --- Makefile | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/Makefile b/Makefile index 1dc82ce..3026299 100644 --- a/Makefile +++ b/Makefile @@ -78,14 +78,6 @@ INTRAFONTOBJS := \ $(LIB_DIR)/libintraFont/src/intraFont.o \ $(LIB_DIR)/libintraFont/src/libccc.o -GIFLIBOBJS := \ - $(LIB_DIR)/giflib/gif2rgb.o \ - $(LIB_DIR)/giflib/dgif_lib.o \ - $(LIB_DIR)/giflib/egif_lib.o \ - $(LIB_DIR)/giflib/gif_err.o \ - $(LIB_DIR)/giflib/gifalloc.o \ - $(LIB_DIR)/giflib/quantize.o - LIBOBJS := \ $(SFONTOBJS) \ $(PSPMATHOBJS) \ @@ -147,7 +139,6 @@ OBJS := $(LIBOBJS) $(INTRAFONTOBJS) $(GIFLIBOBJS) INCDIR := $(INCDIR) \ $(SOURCE_DIR) \ $(LIB_DIR)/libintraFont/include \ - $(LIB_DIR)/giflib \ $(LIB_DIR)/libpspmath/include #---------------------------------------------------------------------------- @@ -168,7 +159,7 @@ SDK_LIBS := \ -lpspnet_adhoc -lpspnet_adhocctl -lpspnet_adhocmatching EXTERN_LIBS := \ - -lpng -ljpeg \ + -lpng -ljpeg -lgif \ -lz LIBS := $(EXTERN_LIBS) $(SDK_LIBS) -lm @@ -189,7 +180,7 @@ DEFINES := \ # Compiler settings # ----------------- -CFLAGS := $(DEFINES) -O2 -G0 -ggdb -Wall -Wno-unused -DHAVE_AV_CONFIG_H -fno-strict-aliasing -fverbose-asm +CFLAGS := $(DEFINES) -O2 -G0 -ggdb -Wall -DHAVE_AV_CONFIG_H -fno-strict-aliasing -fverbose-asm CXXFLAGS := $(CFLAGS) -fno-exceptions -fno-rtti ASFLAGS := $(CFLAGS) @@ -289,10 +280,6 @@ ghpages: gendoc $(PSPMATHOBJS): %.o: %.c $(CC) $(CFLAGS_THIRD_PARTY) $(addprefix -I,$(INCDIR)) -c $< -o $@ -# giflib objects -$(GIFLIBOBJS): %.o: %.c - $(CC) $(CFLAGS_THIRD_PARTY) $(addprefix -I,$(INCDIR)) -c $< -o $@ - # libintraFont objects $(INTRAFONTOBJS): %.o: %.c $(CC) $(CFLAGS_THIRD_PARTY) $(addprefix -I,$(INCDIR)) -c $< -o $@ From 44a4d3f60dd7c1d05df7283fee23a256e6185bed Mon Sep 17 00:00:00 2001 From: Jon Daniel Date: Fri, 17 Oct 2025 22:19:58 +0000 Subject: [PATCH 3/7] add missing image format defines for OSK --- libosl.a | Bin 1362954 -> 1366242 bytes samples/OSK/makefile | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/libosl.a b/libosl.a index 2763c1248d4069569b83690727c03daf4136221a..b59dc59c1e133de76a080173d90c281e83b3fc63 100644 GIT binary patch delta 195566 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