Compare commits

...

3 commits

Author SHA1 Message Date
Justin Kinnaird
1d75274cdb
Merge c930587250 into 4a064a2130 2024-06-12 14:12:28 +00:00
Justin Kinnaird
c930587250 chore: Add "resources" to make install 2019-11-17 12:08:32 -06:00
Justin Kinnaird
d083efb4ab feat: do resource lookups in standard directories
For Linux, this includes the following directories:
* <HOME>/.local/share/<APPNAME>
* /usr/local/share/<APPNAME>
* /usr/share/<APPNAME>
2019-11-17 12:08:12 -06:00
3 changed files with 29 additions and 2 deletions

View file

@ -23,6 +23,11 @@ endif()
project(emulationstation-all)
# program name to be used as a reference when looking up resources
set(AppDataName "EmulationStation" CACHE STRING "Internal program name passed to compiler")
add_definitions(-DAPPDATANAME="${AppDataName}")
#-------------------------------------------------------------------------------
#add local find scripts to CMAKE path
LIST(APPEND CMAKE_MODULE_PATH
@ -277,6 +282,9 @@ set(dir ${CMAKE_CURRENT_SOURCE_DIR})
set(EXECUTABLE_OUTPUT_PATH ${dir} CACHE PATH "Build directory" FORCE)
set(LIBRARY_OUTPUT_PATH ${dir} CACHE PATH "Build directory" FORCE)
# install rules for resources
include(GNUInstallDirs)
install(DIRECTORY resources DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${AppDataName}/resources")
#-------------------------------------------------------------------------------
# add each component

View file

@ -144,10 +144,11 @@ endif()
#-------------------------------------------------------------------------------
# set up CPack install stuff so `make install` does something useful
include(GNUInstallDirs)
install(TARGETS emulationstation
RUNTIME
DESTINATION bin)
DESTINATION "${CMAKE_INSTALL_BINDIR}")
INCLUDE(InstallRequiredSystemLibraries)

View file

@ -3,6 +3,10 @@
#include "utils/FileSystemUtil.h"
#include <fstream>
#ifndef APPDATANAME
#define APPDATANAME "EmulationStation"
#endif
auto array_deleter = [](unsigned char* p) { delete[] p; };
auto nop_deleter = [](unsigned char* /*p*/) { };
@ -27,6 +31,20 @@ std::string ResourceManager::getResourcePath(const std::string& path) const
{
std::string test;
// check in standard AppData locations
#if defined(__linux__)
test = Utils::FileSystem::getHomePath() + "/.local/share/" + APPDATANAME + "/resources/" + &path[2];
if (Utils::FileSystem::exists(test))
return test;
test = std::string("/usr/local/share/") + APPDATANAME + "/resources/" + &path[2];
if (Utils::FileSystem::exists(test))
return test;
test = std::string("/usr/share/") + APPDATANAME + "/resources/" + &path[2];
if (Utils::FileSystem::exists(test))
return test;
#endif
// check in homepath
test = Utils::FileSystem::getHomePath() + "/.emulationstation/resources/" + &path[2];
if(Utils::FileSystem::exists(test))