Skip to content
Merged
Show file tree
Hide file tree
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
4 changes: 2 additions & 2 deletions makefile
Original file line number Diff line number Diff line change
Expand Up @@ -119,8 +119,8 @@ endif
cp ./workspace/all/minarch/build/$(PLATFORM)/liblzma.* ./build/SYSTEM/$(PLATFORM)/lib/
cp ./workspace/all/minarch/build/$(PLATFORM)/libzstd.* ./build/SYSTEM/$(PLATFORM)/lib/

# libchdr for RetroAchievements CHD hashing (use -L to dereference symlinks)
cp -L ./workspace/all/minarch/build/$(PLATFORM)/libchdr.so.0 ./build/SYSTEM/$(PLATFORM)/lib/
# libchdr for RetroAchievements CHD hashing
cp ./workspace/all/minarch/build/$(PLATFORM)/libchdr.so.* ./build/SYSTEM/$(PLATFORM)/lib/

ifeq ($(PLATFORM), tg5040)
# liblz4 for Rewind support
Expand Down
13 changes: 10 additions & 3 deletions workspace/all/common/generic_video.c
Original file line number Diff line number Diff line change
Expand Up @@ -551,9 +551,16 @@ SDL_Surface* PLAT_initVideo(void) {
LOG_info("- %s\n", SDL_GetPixelFormatName(info.texture_formats[i]));
}

SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES);
if(strcmp("Desktop", PLAT_getModel()) == 0) {
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
}
else {
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES);
}

vid.gl_context = SDL_GL_CreateContext(vid.window);
SDL_GL_MakeCurrent(vid.window, vid.gl_context);
Expand Down
6 changes: 5 additions & 1 deletion workspace/all/common/generic_wifi.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
bool PLAT_hasWifi() { return true; }

#define WIFI_INTERFACE "wlan0"
#define WPA_CLI_CMD "wpa_cli -p /etc/wifi/sockets -i " WIFI_INTERFACE
#define WPA_CLI_CMD "wpa_cli -p " WIFI_SOCK_DIR " -i " WIFI_INTERFACE

#define wifilog(fmt, ...) \
LOG_note(PLAT_wifiDiagnosticsEnabled() ? LOG_INFO : LOG_DEBUG, fmt, ##__VA_ARGS__)
Expand Down Expand Up @@ -331,6 +331,10 @@ int PLAT_wifiConnection(struct WIFI_connection *connection_info)
connection_info->link_speed = (int)atof(bitrate + 11);
}
}
else {
wifilog("iw command is not supported.");
connection_info->rssi = -60;
}

wifilog("Connected AP: %s\n", connection_info->ssid);
wifilog("IP address: %s\n", connection_info->ip);
Expand Down
13 changes: 11 additions & 2 deletions workspace/all/minarch/libchdr.makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
# Makefile wrapper for libchdr (CMake-based project)
# Builds libchdr as a shared library for the target platform

PLATFORM ?= tg5040
ifeq (,$(PLATFORM))
$(error please specify PLATFORM, eg. PLATFORM=tg5040 make)
endif

BUILD_DIR = build/$(PLATFORM)

Expand All @@ -13,7 +15,7 @@ endif

.PHONY: all build clean

all: build
all: build install

build: $(BUILD_DIR)/libchdr.so

Expand All @@ -23,6 +25,7 @@ $(BUILD_DIR)/libchdr.so: | $(BUILD_DIR)
-DINSTALL_STATIC_LIBS=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DWITH_SYSTEM_ZLIB=OFF \
-DCMAKE_SHARED_LIBRARY_SUFFIX_C=".so" \
$(CMAKE_EXTRA)
cd $(BUILD_DIR) && make -j$$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo 4)
@# Copy the .so to expected location (cmake may put it in a subdir)
Expand All @@ -35,5 +38,11 @@ $(BUILD_DIR)/libchdr.so: | $(BUILD_DIR)
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)

install: $(BUILD_DIR)/libchdr.so
mkdir -p "$(PREFIX_LOCAL)/lib"
cp $(BUILD_DIR)/libchdr.so "$(PREFIX_LOCAL)/lib/"
mkdir -p "$(PREFIX_LOCAL)/include/libchdr"
cp -r include/libchdr/* "$(PREFIX_LOCAL)/include/libchdr/"

clean:
rm -rf $(BUILD_DIR)
85 changes: 40 additions & 45 deletions workspace/all/minarch/makefile
Original file line number Diff line number Diff line change
Expand Up @@ -22,23 +22,18 @@ SDL?=SDL
TARGET = minarch
PRODUCT= build/$(PLATFORM)/$(TARGET).elf
INCDIR = -I. -I./libretro-common/include/ -I../common/ -I../../$(PLATFORM)/platform/
SOURCE = $(TARGET).c ../common/scaler.c ../common/utils.c ../common/config.c ../common/api.c ../common/notification.c ../common/http.c ../../$(PLATFORM)/platform/platform.c

# RA support for tg5040, tg5050, and desktop
ifneq (,$(filter $(PLATFORM),tg5040 tg5050 desktop))
# rcheevos include paths
INCDIR += -I../rcheevos/src/include -I../rcheevos/src/src
# libchdr include path (for CHD disc image support)
INCDIR += -I../libchdr/include
SOURCE = $(TARGET).c ../common/scaler.c ../common/utils.c ../common/config.c ../common/api.c ../common/notification.c ../../$(PLATFORM)/platform/platform.c

# RA support
ifneq (,$(filter $(PLATFORM),tg5040 tg5050 my355 desktop))
# RA source files
SOURCE += ../common/ra_badges.c ra_integration.c chd_reader.c
SOURCE += ../common/http.c ../common/ra_badges.c ra_integration.c chd_reader.c
endif

CC = $(CROSS_COMPILE)gcc
CFLAGS += $(OPT)
CFLAGS += $(INCDIR) -DPLATFORM=\"$(PLATFORM)\" -std=gnu99
LDFLAGS += -lmsettings -lsamplerate
LDFLAGS += -llz4

ifeq ($(PROFILE), 1)
CFLAGS += -pg
Expand All @@ -50,6 +45,10 @@ CFLAGS += -g
LDFLAGS += -lprofiler
endif

# Rewind support
LDFLAGS += -llz4

# SaveRAM support
ifeq ($(PLATFORM), desktop)
ifeq ($(UNAME_S),Linux)
CFLAGS += `pkg-config --cflags libzip`
Expand All @@ -63,18 +62,17 @@ CFLAGS += -DHAS_SRM
LDFLAGS += -lasound
endif

# RA support: rcheevos and libchdr linking for tg5040, tg5050, and desktop
ifneq (,$(filter $(PLATFORM),tg5040 tg5050 desktop))
LDFLAGS += -L../rcheevos/build/$(PLATFORM) -lrcheevos
LDFLAGS += -L../libchdr/build/$(PLATFORM) -lchdr
CFLAGS += -DRC_CLIENT_SUPPORTS_HASH
# RA support: rcheevos and libchdr linking
ifneq (,$(filter $(PLATFORM),tg5040 tg5050 my355 desktop))
LDFLAGS += -lrcheevos -lchdr
CFLAGS += -DRC_CLIENT_SUPPORTS_HASH -DHAS_CHEEVOS -DHAS_CHDR
ifeq ($(PLATFORM), desktop)
# Desktop needs rpath for local shared library lookup
LDFLAGS += -Wl,-rpath,'$$ORIGIN'
endif
endif
# CFLAGS += -Wall -Wno-unused-variable -Wno-unused-function -Wno-format-overflow

# Sanitizers
ifeq ($(PLATFORM), desktop)
ifeq ($(TSAN), 1)
CFLAGS += -fsanitize=thread
Expand All @@ -94,7 +92,7 @@ BUILD_HASH!=cat ../../hash.txt
CFLAGS += -DBUILD_DATE=\"${BUILD_DATE}\" -DBUILD_HASH=\"${BUILD_HASH}\"

ifeq ($(PLATFORM), desktop)
all: clean libretro-common rcheevos-desktop libchdr-desktop $(PREFIX_LOCAL)/include/msettings.h
all: clean libretro-common rcheevos libchdr $(PREFIX_LOCAL)/include/msettings.h
mkdir -p build/$(PLATFORM)
$(CC) $(SOURCE) -o $(PRODUCT) $(CFLAGS) $(LDFLAGS)
else ifneq (,$(filter $(PLATFORM),tg5040 tg5050))
Expand All @@ -103,48 +101,45 @@ all: clean libretro-common libsrm.a rcheevos libchdr $(PREFIX_LOCAL)/include/mse
mkdir -p build/$(PLATFORM)
cp -L $(PREFIX)/lib/libsamplerate.so.* build/$(PLATFORM)
# This is a bandaid fix, needs to be cleaned up if/when we expand to other platforms.
cp -L $(PREFIX)/lib/libzip.so.* build/$(PLATFORM)
cp -L $(PREFIX)/lib/libbz2.so.1.0 build/$(PLATFORM)
cp -L $(PREFIX)/lib/liblzma.so.5 build/$(PLATFORM)
cp -L $(PREFIX)/lib/libzstd.so.1 build/$(PLATFORM)
cp -L $(PREFIX)/lib/liblz4.so.1 build/$(PLATFORM)
cp -L ../libchdr/build/$(PLATFORM)/libchdr.so.0.2 build/$(PLATFORM)/libchdr.so.0
$(CC) $(SOURCE) -o $(PRODUCT) $(CFLAGS) $(LDFLAGS)
else
# Other platforms - no RA support
all: clean libretro-common libsrm.a $(PREFIX_LOCAL)/include/msettings.h
mkdir -p build/$(PLATFORM)
cp -L $(PREFIX)/lib/libsamplerate.so.* build/$(PLATFORM)
cp -L $(PREFIX)/lib/libzip.so.* build/$(PLATFORM)
ifeq ($(PLATFORM), my355)
cp -L $(PREFIX)/lib/libcrypto.so.3 build/$(PLATFORM)
cp -L $(PREFIX)/lib/libsqlite3.so build/$(PLATFORM)
cp -L $(PREFIX)/lib/libffi.so.7 build/$(PLATFORM)
cp -L $(PREFIX)/lib/libtinyalsa.so.2 build/$(PLATFORM)
endif
cp -L $(PREFIX)/lib/libsamplerate.so.0 build/$(PLATFORM)
cp -L $(PREFIX)/lib/libzip.so.5 build/$(PLATFORM)
cp -L $(PREFIX)/lib/libbz2.so.1.0 build/$(PLATFORM)
cp -L $(PREFIX)/lib/liblzma.so.5 build/$(PLATFORM)
cp -L $(PREFIX)/lib/libzstd.so.1 build/$(PLATFORM)
cp -L $(PREFIX)/lib/liblz4.so.1 build/$(PLATFORM)
cp -L libchdr/build/$(PLATFORM)/libchdr.so.0 build/$(PLATFORM)
$(CC) $(SOURCE) -o $(PRODUCT) $(CFLAGS) $(LDFLAGS)
endif

libretro-common:
git clone https://github.com/libretro/libretro-common

rcheevos:
cd ../rcheevos && make build PLATFORM=$(PLATFORM)
rcheevos: rcheevos/makefile $(PREFIX_LOCAL)/lib/librcheevos.a

libchdr: libchdr/CMakeLists.txt $(PREFIX_LOCAL)/lib/libchdr.so

# Desktop rcheevos build - uses native gcc instead of cross-compiler
rcheevos-desktop:
cd ../rcheevos && make build PLATFORM=desktop
rcheevos/makefile:
rm -rf rcheevos
mkdir -p rcheevos
cp rcheevos.makefile rcheevos/makefile

../libchdr/CMakeLists.txt:
rm -rf ../libchdr
git clone https://github.com/rtissera/libchdr ../libchdr
cp libchdr.makefile ../libchdr/makefile
$(PREFIX_LOCAL)/lib/librcheevos.a:
cd rcheevos && make build install PLATFORM=$(PLATFORM)

libchdr: ../libchdr/CMakeLists.txt
cd ../libchdr && make build PLATFORM=$(PLATFORM)
libchdr/CMakeLists.txt:
rm -rf libchdr
git clone https://github.com/rtissera/libchdr
cp libchdr.makefile libchdr/makefile

# Desktop libchdr - build from source
libchdr-desktop: ../libchdr/CMakeLists.txt
cd ../libchdr && make build PLATFORM=desktop

$(PREFIX_LOCAL)/lib/libchdr.so:
cd libchdr && make build install PLATFORM=$(PLATFORM)

$(PREFIX_LOCAL)/include/msettings.h:
cd ../../$(PLATFORM)/libmsettings && make

Expand Down
2 changes: 1 addition & 1 deletion workspace/all/minarch/minarch.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,10 @@
#include "config.h"
#include "ra_integration.h"
#include "ra_badges.h"
#include "rc_client.h"
#include <dirent.h>
#include <SDL2/SDL_image.h>
#include <SDL2/SDL.h>
#include <rcheevos/rc_client.h>

///////////////////////////////////////

Expand Down
2 changes: 1 addition & 1 deletion workspace/all/minarch/ra_consoles.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
* This is used to identify games when loading them for achievement tracking.
*/

#include "rc_consoles.h"
#include <string.h>
#include <rcheevos/rc_consoles.h>

/**
* Mapping entry from EMU tag to RetroAchievements console ID
Expand Down
7 changes: 4 additions & 3 deletions workspace/all/minarch/ra_integration.c
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
#include "ra_integration.h"
#include "ra_consoles.h"
#include "rc_client.h"
#include "rc_libretro.h"
#include "rc_hash.h"
#include "chd_reader.h"
#include "config.h"
#include "http.h"
Expand All @@ -19,6 +16,10 @@
#include <errno.h>
#include <SDL2/SDL.h>

#include <rcheevos/rc_client.h>
#include <rcheevos/rc_libretro.h>
#include <rcheevos/rc_hash.h>

// Logging macros - use NextUI log levels
#define RA_LOG_DEBUG(fmt, ...) LOG_debug("[RA] " fmt, ##__VA_ARGS__)
#define RA_LOG_INFO(fmt, ...) LOG_info("[RA] " fmt, ##__VA_ARGS__)
Expand Down
113 changes: 113 additions & 0 deletions workspace/all/minarch/rcheevos.makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
###########################################################
# rcheevos static library build for NextUI
###########################################################

ifeq (,$(PLATFORM))
PLATFORM=$(UNION_PLATFORM)
endif

ifeq (,$(PLATFORM))
$(error please specify PLATFORM, eg. PLATFORM=tg5040 make)
endif

# Desktop builds use native compiler
ifeq (,$(CROSS_COMPILE))
$(error missing CROSS_COMPILE for this toolchain)
endif

###########################################################

include ../../../$(PLATFORM)/platform/makefile.env

###########################################################

TARGET = rcheevos
SRCDIR = src/src
INCDIR = src/include
OBJDIR = build/$(PLATFORM)/obj

# rcheevos source files
SOURCES = \
$(SRCDIR)/rc_client.c \
$(SRCDIR)/rc_compat.c \
$(SRCDIR)/rc_util.c \
$(SRCDIR)/rc_version.c \
$(SRCDIR)/rc_libretro.c \
$(SRCDIR)/rcheevos/alloc.c \
$(SRCDIR)/rcheevos/condition.c \
$(SRCDIR)/rcheevos/condset.c \
$(SRCDIR)/rcheevos/consoleinfo.c \
$(SRCDIR)/rcheevos/format.c \
$(SRCDIR)/rcheevos/lboard.c \
$(SRCDIR)/rcheevos/memref.c \
$(SRCDIR)/rcheevos/operand.c \
$(SRCDIR)/rcheevos/richpresence.c \
$(SRCDIR)/rcheevos/runtime.c \
$(SRCDIR)/rcheevos/runtime_progress.c \
$(SRCDIR)/rcheevos/trigger.c \
$(SRCDIR)/rcheevos/value.c \
$(SRCDIR)/rcheevos/rc_validate.c \
$(SRCDIR)/rapi/rc_api_common.c \
$(SRCDIR)/rapi/rc_api_editor.c \
$(SRCDIR)/rapi/rc_api_info.c \
$(SRCDIR)/rapi/rc_api_runtime.c \
$(SRCDIR)/rapi/rc_api_user.c \
$(SRCDIR)/rhash/aes.c \
$(SRCDIR)/rhash/cdreader.c \
$(SRCDIR)/rhash/hash.c \
$(SRCDIR)/rhash/hash_disc.c \
$(SRCDIR)/rhash/hash_encrypted.c \
$(SRCDIR)/rhash/hash_rom.c \
$(SRCDIR)/rhash/hash_zip.c \
$(SRCDIR)/rhash/md5.c

# Object files go in platform-specific directory
OBJECTS = $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SOURCES))

CFLAGS += $(OPT)
CFLAGS += -I$(INCDIR) -I$(SRCDIR) -std=gnu99
# libretro.h is in minarch/libretro-common/include
CFLAGS += -I../libretro-common/include
CFLAGS += -DRC_DISABLE_LUA
CFLAGS += -DRC_CLIENT_SUPPORTS_HASH
CFLAGS += -fPIC

PRODUCT = build/$(PLATFORM)/lib$(TARGET).a

# rcheevos version to use (can be overridden)
RCHEEVOS_VERSION ?= 40d916de00fe757bab40fb4db41a7912193a48e3

.PHONY: build clean install clone

# Clone rcheevos source if not present
clone:
@if [ ! -f "src/include/rc_client.h" ]; then \
echo "Cloning rcheevos..."; \
rm -rf src; \
git clone https://github.com/RetroAchievements/rcheevos.git src; \
cd src && git checkout $(RCHEEVOS_VERSION); \
fi

# Build target: first clone, then compile (recursive make ensures sources exist)
build: clone
$(MAKE) $(PRODUCT) PLATFORM=$(PLATFORM)

$(PRODUCT): $(OBJECTS)
mkdir -p build/$(PLATFORM)
$(AR) rcs $@ $(OBJECTS)

$(OBJDIR)/%.o: $(SRCDIR)/%.c
mkdir -p $(dir $@)
$(CC) $(CFLAGS) -c -o $@ $<

install: $(PRODUCT)
mkdir -p "$(PREFIX_LOCAL)/include/rcheevos"
mkdir -p "$(PREFIX_LOCAL)/lib"
cp $(INCDIR)/*.h "$(PREFIX_LOCAL)/include/rcheevos/"
cp $(SRCDIR)/rc_libretro.h "$(PREFIX_LOCAL)/include/rcheevos/"
cp $(PRODUCT) "$(PREFIX_LOCAL)/lib/"

clean:
rm -rf build
rm -f $(PREFIX_LOCAL)/lib/lib$(TARGET).a
rm -rf $(PREFIX_LOCAL)/include/rcheevos
Loading
Loading