Skip to content
Snippets Groups Projects
Commit 70f046a3 authored by Eidolon's avatar Eidolon
Browse files

cmake: on mac, check Resources in bundle first.

on non debug, check assets folder in src as well
parent e54338ef
No related branches found
No related tags found
No related merge requests found
......@@ -81,18 +81,6 @@ include(GitUtilities)
git_describe(SRB2_COMP_REVISION "${CMAKE_CURRENT_SOURCE_DIR}")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/src/config.h)
# Mac bundle fixup
if(CLANG)
install(CODE "
include(BundleUtilities)
fixup_bundle(\"${CMAKE_INSTALL_PREFIX}/Sonic Robo Blast 2.app\"
\"\"
/Library/Frameworks
)"
)
endif()
##### PACKAGE CONFIGURATION #####
if(${CMAKE_SYSTEM} MATCHES "Windows")
......
......@@ -13,6 +13,8 @@
#define SRB2_COMP_REVISION "${SRB2_COMP_REVISION}"
#define CMAKE_ASSETS_DIR "${CMAKE_SOURCE_DIR}/assets"
#else
#define ASSET_HASH_SRB2_SRB "c1b9577687f8a795104aef4600720ea7"
......
......@@ -89,6 +89,8 @@ if(${SDL2_FOUND})
set(SRB2_SDL2_TOTAL_SOURCES ${SRB2_SDL2_TOTAL_SOURCES}
macosx/mac_alert.c
macosx/mac_alert.h
macosx/mac_resources.c
macosx/mac_resources.h
macosx/Srb2mac.icns
)
endif()
......@@ -205,6 +207,18 @@ if(${SDL2_FOUND})
DESTINATION .
)
endif()
# Mac bundle fixup
if(CLANG)
install(CODE "
include(BundleUtilities)
fixup_bundle(\"${CMAKE_INSTALL_PREFIX}/Sonic Robo Blast 2.app\"
\"\"
/Library/Frameworks
)"
)
endif()
else()
message(WARNING "SDL2 wasn't found, so ${SRB2_SDL2_EXE_NAME} won't be available")
endif()
......@@ -20,6 +20,8 @@
/// \file
/// \brief SRB2 system stuff for SDL
#include "config.h"
#ifndef _WIN32_WCE
#include <signal.h>
#endif
......@@ -145,6 +147,10 @@ void __set_fpscr(long); // in libgcc / kernel's startup.s?
#define O_BINARY 0
#endif
#ifdef __APPLE__
#include "macosx/mac_resources.h"
#endif
// Locations for searching the srb2.srb
#ifdef _arch_dreamcast
#define DEFAULTWADLOCATION1 "/cd"
......@@ -2759,6 +2765,28 @@ static const char *locateWad(void)
return NULL;
#endif
#ifdef CMAKECONFIG
#ifndef NDEBUG
I_OutputMsg(","CMAKE_ASSETS_DIR);
strcpy(returnWadPath, CMAKE_ASSETS_DIR);
if (isWadPathOk(returnWadPath))
{
return returnWadPath;
}
#endif
#endif
#ifdef __APPLE__
OSX_GetResourcesPath(returnWadPath);
I_OutputMsg(",%s", returnWadPath);
if (isWadPathOk(returnWadPath))
{
return returnWadPath;
}
#endif
// examine default dirs
#ifdef DEFAULTWADLOCATION1
I_OutputMsg(","DEFAULTWADLOCATION1);
......
#include "mac_resources.h"
#include <string.h>
#include <CoreFoundation/CoreFoundation.h>
void OSX_GetResourcesPath(char * buffer)
{
CFBundleRef mainBundle;
mainBundle = CFBundleGetMainBundle();
if (mainBundle)
{
CFURLRef appUrlRef = CFBundleCopyBundleURL(mainBundle);
CFStringRef macPath = CFURLCopyFileSystemPath(appUrlRef, kCFURLPOSIXPathStyle);
CFStringRef resources = CFStringCreateWithCString(kCFAllocatorMalloc, "/Contents/Resources", kCFStringEncodingASCII);
const void* rawarray[2] = {macPath, resources};
CFArrayRef array = CFArrayCreate(kCFAllocatorMalloc, rawarray, 2, NULL);
CFStringRef separator = CFStringCreateWithCString(kCFAllocatorMalloc, "", kCFStringEncodingASCII);
CFStringRef fullPath = CFStringCreateByCombiningStrings(kCFAllocatorMalloc, array, separator);
const char * path = CFStringGetCStringPtr(fullPath, kCFStringEncodingASCII);
strcpy(buffer, path);
CFRelease(fullPath);
path = NULL;
CFRelease(array);
CFRelease(resources);
CFRelease(macPath);
CFRelease(appUrlRef);
//CFRelease(mainBundle);
CFRelease(separator);
}
}
\ No newline at end of file
#ifndef __MAC_RESOURCES_H__
#define __MAC_RESOURCES_H__
void OSX_GetResourcesPath(char * buffer);
#endif
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment