mirror of
https://github.com/izzy2lost/dolphin.git
synced 2026-06-19 01:16:48 -07:00
Linux global build. At least the basic footwork is done here.
Basic usage: "sudo scons install=global install" Hopefully this doesn't break builds on Macs. I have tested this on linux and windows. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4994 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
+78
-39
@@ -110,6 +110,13 @@ vars.AddVariables(
|
||||
BoolVariable('wxgl', 'Set For Building with WX GL libs (WIP)', False),
|
||||
BoolVariable('opencl', 'Build with OpenCL', False),
|
||||
BoolVariable('nojit', 'Remove entire jit cores', False),
|
||||
PathVariable('userdir', 'Set the name of the user data directory in home', '.dolphin-emu', PathVariable.PathAccept),
|
||||
EnumVariable('install', 'Choose a local or global installation', 'local',
|
||||
allowed_values = ('local', 'global'),
|
||||
ignorecase = 2
|
||||
),
|
||||
PathVariable('prefix', 'Installation prefix (only used for a global build)', '/usr', PathVariable.PathAccept),
|
||||
PathVariable('destdir', 'Temporary install location (for package building)', None, PathVariable.PathAccept),
|
||||
EnumVariable('flavor', 'Choose a build flavor', 'release',
|
||||
allowed_values = ('release', 'devel', 'debug', 'fastlog', 'prof'),
|
||||
ignorecase = 2
|
||||
@@ -225,6 +232,56 @@ env['build_dir'] = os.path.join(basedir, 'Build', platform.system() + '-' + plat
|
||||
|
||||
VariantDir(env['build_dir'], '.', duplicate=0)
|
||||
|
||||
# Where do we run from
|
||||
env['base_dir'] = os.getcwd()+ '/'
|
||||
|
||||
# install paths
|
||||
extra=''
|
||||
if flavour == 'debug':
|
||||
extra = '-debug'
|
||||
elif flavour == 'prof':
|
||||
extra = '-prof'
|
||||
|
||||
# TODO: support global install
|
||||
if (ARGUMENTS.get('install') == 'global'):
|
||||
env['prefix'] = os.path.join(env['prefix'] + os.sep)
|
||||
else:
|
||||
env['prefix'] = os.path.join(env['base_dir'] + 'Binary', platform.system() + '-' + platform.machine() + extra +os.sep)
|
||||
#TODO add lib
|
||||
if (ARGUMENTS.get('install') == 'global'):
|
||||
env['plugin_dir'] = env['prefix'] + 'lib/dolphin-emu/'
|
||||
else:
|
||||
if sys.platform == 'darwin':
|
||||
env['plugin_dir'] = env['prefix'] + 'Dolphin.app/Contents/PlugIns/'
|
||||
else:
|
||||
env['plugin_dir'] = env['prefix'] + 'Plugins/'
|
||||
#TODO add bin
|
||||
if (ARGUMENTS.get('install') == 'global'):
|
||||
env['binary_dir'] = env['prefix'] + 'bin/'
|
||||
else:
|
||||
env['binary_dir'] = env['prefix']
|
||||
#TODO add bin
|
||||
if (ARGUMENTS.get('install') == 'global'):
|
||||
env['libs_dir'] = env['prefix'] + 'lib/'
|
||||
else:
|
||||
env['libs_dir'] = env['prefix'] + 'Libs/'
|
||||
#TODO where should this go?
|
||||
if (ARGUMENTS.get('install') == 'global'):
|
||||
env['data_dir'] = env['prefix'] + "share/dolphin-emu/"
|
||||
else:
|
||||
if sys.platform == 'darwin':
|
||||
env['data_dir'] = env['prefix'] + 'Dolphin.app/Contents/'
|
||||
else:
|
||||
env['data_dir'] = env['prefix']
|
||||
|
||||
env['RPATH'].append(env['libs_dir'])
|
||||
|
||||
# static libs goes here
|
||||
env['local_libs'] = env['build_dir'] + os.sep + 'libs' + os.sep
|
||||
|
||||
env['LIBPATH'].append(env['local_libs'])
|
||||
env['LIBPATH'].append(env['libs_dir'])
|
||||
|
||||
conf = env.Configure(custom_tests = tests,
|
||||
config_h="Source/Core/Common/Src/Config.h")
|
||||
|
||||
@@ -326,6 +383,10 @@ conf.Define('HAVE_X11', env['HAVE_X11'])
|
||||
conf.Define('HAVE_COCOA', env['HAVE_COCOA'])
|
||||
conf.Define('HAVE_PORTAUDIO', env['HAVE_PORTAUDIO'])
|
||||
conf.Define('HAVE_SFML', env['HAVE_SFML'])
|
||||
conf.Define('USER_DIR', "\"" + env['userdir'] + "\"")
|
||||
if (ARGUMENTS.get('install') == 'global'):
|
||||
conf.Define('DATA_DIR', "\"" + env['data_dir'] + "\"")
|
||||
conf.Define('LIBS_DIR', "\"" + env['libs_dir'] + "\"")
|
||||
|
||||
# lua
|
||||
env['LUA_USE_MACOSX'] = 0
|
||||
@@ -376,48 +437,22 @@ else:
|
||||
# add methods from utils to env
|
||||
env.AddMethod(utils.filterWarnings)
|
||||
|
||||
# Where do we run from
|
||||
env['base_dir'] = os.getcwd()+ '/'
|
||||
|
||||
# install paths
|
||||
extra=''
|
||||
if flavour == 'debug':
|
||||
extra = '-debug'
|
||||
elif flavour == 'prof':
|
||||
extra = '-prof'
|
||||
|
||||
# TODO: support global install
|
||||
env['prefix'] = os.path.join(env['base_dir'] + 'Binary', platform.system() + '-' + platform.machine() + extra +os.sep)
|
||||
#TODO add lib
|
||||
if sys.platform == 'darwin':
|
||||
env['plugin_dir'] = env['prefix'] + 'Dolphin.app/Contents/PlugIns/'
|
||||
else:
|
||||
env['plugin_dir'] = env['prefix'] + 'Plugins/'
|
||||
#TODO add bin
|
||||
env['binary_dir'] = env['prefix']
|
||||
#TODO add bin
|
||||
env['libs_dir'] = env['prefix'] + 'Libs/'
|
||||
#TODO where should this go?
|
||||
if sys.platform == 'darwin':
|
||||
env['data_dir'] = env['prefix'] + 'Dolphin.app/Contents/'
|
||||
else:
|
||||
env['data_dir'] = env['prefix']
|
||||
|
||||
env['RPATH'].append(env['libs_dir'])
|
||||
|
||||
# static libs goes here
|
||||
env['local_libs'] = env['build_dir'] + os.sep + 'libs' + os.sep
|
||||
|
||||
env['LIBPATH'].append(env['local_libs'])
|
||||
env['LIBPATH'].append(env['libs_dir'])
|
||||
|
||||
|
||||
rev = utils.GenerateRevFile(env['flavor'],
|
||||
"Source/Core/Common/Src/svnrev_template.h",
|
||||
"Source/Core/Common/Src/svnrev.h")
|
||||
# print a nice progress indication when not compiling
|
||||
Progress(['-\r', '\\\r', '|\r', '/\r'], interval = 5)
|
||||
|
||||
# Setup destdir for package building
|
||||
# Warning: The program will not run from this location. It is assumed the
|
||||
# package will later install it to the prefix as it was defined before this.
|
||||
if env.has_key('destdir'):
|
||||
env['prefix'] = env['destdir'] + env['prefix']
|
||||
env['plugin_dir'] = env['destdir'] + env['plugin_dir']
|
||||
env['binary_dir'] = env['destdir'] + env['binary_dir']
|
||||
env['libs_dir'] = env['destdir'] + env['libs_dir']
|
||||
env['data_dir'] = env['destdir'] + env['data_dir']
|
||||
|
||||
# die on unknown variables
|
||||
unknown = vars.UnknownVariables()
|
||||
if unknown:
|
||||
@@ -437,12 +472,16 @@ for subdir in dirs:
|
||||
)
|
||||
|
||||
# Data install
|
||||
env.Install(env['data_dir'], 'Data/Sys')
|
||||
env.Install(env['data_dir'], 'Data/User')
|
||||
|
||||
if sys.platform == 'darwin':
|
||||
env.Install(env['data_dir'], 'Data/Sys')
|
||||
env.Install(env['data_dir'], 'Data/User')
|
||||
env.Install(env['binary_dir'] + 'Dolphin.app/Contents/Resources/',
|
||||
'Source/Core/DolphinWX/resources/Dolphin.icns')
|
||||
else:
|
||||
env.InstallAs(env['data_dir'] + 'sys', 'Data/Sys')
|
||||
env.InstallAs(env['data_dir'] + 'user', 'Data/User')
|
||||
|
||||
env.Alias('install', env['prefix'])
|
||||
|
||||
if env['bundle']:
|
||||
# Make tar ball (TODO put inside normal dir)
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
#ifndef _COMMON_PATHS_H_
|
||||
#define _COMMON_PATHS_H_
|
||||
|
||||
#ifdef __linux__
|
||||
#include "Config.h"
|
||||
#endif
|
||||
|
||||
// Library suffix/prefix
|
||||
#ifdef _WIN32
|
||||
#define PLUGIN_PREFIX ""
|
||||
@@ -34,18 +38,25 @@
|
||||
#define DIR_SEP "/"
|
||||
#define DIR_SEP_CHR '/'
|
||||
|
||||
#if defined __APPLE__
|
||||
// Location of the plugins
|
||||
#ifdef LIBS_DIR
|
||||
#define PLUGINS_DIR LIBS_DIR "dolphin-emu"
|
||||
#elif defined __APPLE__
|
||||
#define PLUGINS_DIR "Contents/PlugIns"
|
||||
#define SYSDATA_DIR "Contents/Sys"
|
||||
#else
|
||||
#define PLUGINS_DIR "Plugins"
|
||||
#define SYSDATA_DIR "Sys"
|
||||
#endif
|
||||
#define ROOT_DIR "."
|
||||
#define USERDATA_DIR "User"
|
||||
|
||||
// Where data directory is
|
||||
#ifdef _WIN32
|
||||
// The user data dir
|
||||
#define ROOT_DIR "."
|
||||
#ifdef __linux__
|
||||
#define USERDATA_DIR "user"
|
||||
#else
|
||||
#define USERDATA_DIR "User"
|
||||
#endif
|
||||
#ifdef USER_DIR
|
||||
#define DOLPHIN_DATA_DIR USER_DIR
|
||||
#elif defined _WIN32
|
||||
#define DOLPHIN_DATA_DIR "Dolphin"
|
||||
#elif defined __APPLE__
|
||||
#define DOLPHIN_DATA_DIR "Library/Application Support/Dolphin"
|
||||
@@ -53,119 +64,101 @@
|
||||
#define DOLPHIN_DATA_DIR ".dolphin"
|
||||
#endif
|
||||
|
||||
// Shared data dirs (Sys and shared User for linux)
|
||||
#ifdef DATA_DIR
|
||||
#define SYSDATA_DIR DATA_DIR "Sys"
|
||||
#define SHARED_USER_DIR DATA_DIR USERDATA_DIR DIR_SEP
|
||||
#elif defined __APPLE__
|
||||
#define SYSDATA_DIR "Contents/Sys"
|
||||
#elif defined __linux__
|
||||
#define SYSDATA_DIR "sys"
|
||||
#define SHARED_USER_DIR ROOT_DIR DIR_SEP USERDATA_DIR DIR_SEP
|
||||
#else
|
||||
#define SYSDATA_DIR "Sys"
|
||||
#endif
|
||||
|
||||
// Dirs in both User and Sys
|
||||
#define EUR_DIR "EUR"
|
||||
#define USA_DIR "USA"
|
||||
#define JAP_DIR "JAP"
|
||||
|
||||
// Dirs in User
|
||||
#define GC_USER_DIR "GC"
|
||||
#define WII_USER_DIR "Wii"
|
||||
#define WII_SYSCONF_DIR "shared2/sys"
|
||||
#define CONFIG_DIR "Config"
|
||||
#define GAMECONFIG_DIR "GameConfig"
|
||||
#define MAPS_DIR "Maps"
|
||||
#define CACHE_DIR "Cache"
|
||||
#define SHADERCACHE_DIR "ShaderCache"
|
||||
#define STATESAVES_DIR "StateSaves"
|
||||
#define SCREENSHOTS_DIR "ScreenShots"
|
||||
#define DUMP_DIR "Dump"
|
||||
#define DUMP_TEXTURES_DIR "Textures"
|
||||
#define LOAD_DIR "Load"
|
||||
#define HIRES_TEXTURES_DIR "Textures"
|
||||
#define DUMP_FRAMES_DIR "Frames"
|
||||
#define DUMP_DSP_DIR "DSP"
|
||||
#define LOGS_DIR "Logs"
|
||||
#define MAIL_LOGS_DIR "Mail"
|
||||
|
||||
// Dirs in Sys
|
||||
#define GC_SYS_DIR "GC"
|
||||
#define WII_SYS_DIR "Wii"
|
||||
// Subdirs in the User dir returned by GetUserPath(D_USER_IDX)
|
||||
#define GC_USER_DIR "GC"
|
||||
#define WII_USER_DIR "Wii"
|
||||
#define CONFIG_DIR "Config"
|
||||
#define GAMECONFIG_DIR "GameConfig"
|
||||
#define MAPS_DIR "Maps"
|
||||
#define CACHE_DIR "Cache"
|
||||
#define SHADERCACHE_DIR "ShaderCache"
|
||||
#define STATESAVES_DIR "StateSaves"
|
||||
#define SCREENSHOTS_DIR "ScreenShots"
|
||||
#define LOAD_DIR "Load"
|
||||
#define HIRES_TEXTURES_DIR LOAD_DIR DIR_SEP "Textures"
|
||||
#define DUMP_DIR "Dump"
|
||||
#define DUMP_TEXTURES_DIR DUMP_DIR DIR_SEP "Textures"
|
||||
#define DUMP_FRAMES_DIR DUMP_DIR DIR_SEP "Frames"
|
||||
#define DUMP_DSP_DIR DUMP_DIR DIR_SEP "DSP"
|
||||
#define LOGS_DIR "Logs"
|
||||
#define MAIL_LOGS_DIR LOGS_DIR DIR_SEP "Mail"
|
||||
#define SHADERS_DIR "Shaders"
|
||||
#define WII_SYSCONF_DIR WII_USER_DIR DIR_SEP "shared2" DIR_SEP "sys"
|
||||
#define WII_MENU_DIR WII_USER_DIR DIR_SEP "title" DIR_SEP "00000001" DIR_SEP "00000002" DIR_SEP "content"
|
||||
|
||||
// Filenames
|
||||
#define DOLPHIN_CONFIG "Dolphin.ini"
|
||||
#define DEBUGGER_CONFIG "Debugger.ini"
|
||||
#define LOGGER_CONFIG "Logger.ini"
|
||||
#define TOTALDB "totaldb.dsy"
|
||||
#define MAIN_LOG "dolphin.log"
|
||||
// Files in the directory returned by GetUserPath(D_CONFIG_IDX)
|
||||
#define DOLPHIN_CONFIG "Dolphin.ini"
|
||||
#define DEBUGGER_CONFIG "Debugger.ini"
|
||||
#define LOGGER_CONFIG "Logger.ini"
|
||||
|
||||
// Files in the directory returned by GetUserPath(D_LOGS_IDX)
|
||||
#define MAIN_LOG "dolphin.log"
|
||||
|
||||
// Files in the directory returned by GetUserPath(D_WIISYSCONF_IDX)
|
||||
#define WII_SYSCONF "SYSCONF"
|
||||
|
||||
// Files in the directory returned by GetUserPath(D_DUMP_IDX)
|
||||
#define RAM_DUMP "ram.raw"
|
||||
#define ARAM_DUMP "aram.raw"
|
||||
|
||||
// Plugin files
|
||||
#define DEFAULT_GFX_PLUGIN PLUGIN_PREFIX "Plugin_VideoOGL" PLUGIN_SUFFIX
|
||||
#define DEFAULT_DSP_PLUGIN PLUGIN_PREFIX "Plugin_DSP_HLE" PLUGIN_SUFFIX
|
||||
#define DEFAULT_PAD_PLUGIN PLUGIN_PREFIX "Plugin_GCPad" PLUGIN_SUFFIX
|
||||
#define DEFAULT_WIIMOTE_PLUGIN PLUGIN_PREFIX "Plugin_Wiimote" PLUGIN_SUFFIX
|
||||
|
||||
#define FONT_ANSI "font_ansi.bin"
|
||||
#define FONT_SJIS "font_sjis.bin"
|
||||
// Sys files
|
||||
#define TOTALDB "totaldb.dsy"
|
||||
|
||||
#define DSP_IROM "dsp_rom.bin"
|
||||
#define DSP_COEF "dsp_coef.bin"
|
||||
#define FONT_ANSI "font_ansi.bin"
|
||||
#define FONT_SJIS "font_sjis.bin"
|
||||
|
||||
#define GC_IPL "IPL.bin"
|
||||
#define GC_SRAM "SRAM.raw"
|
||||
#define GC_MEMCARDA "MemoryCardA"
|
||||
#define GC_MEMCARDB "MemoryCardB"
|
||||
#define DSP_IROM "dsp_rom.bin"
|
||||
#define DSP_COEF "dsp_coef.bin"
|
||||
|
||||
#define GC_IPL "IPL.bin"
|
||||
#define GC_SRAM "SRAM.raw"
|
||||
#define GC_MEMCARDA "MemoryCardA"
|
||||
#define GC_MEMCARDB "MemoryCardB"
|
||||
|
||||
#define WII_EUR_SETTING "setting-eur.txt"
|
||||
#define WII_USA_SETTING "setting-usa.txt"
|
||||
#define WII_JAP_SETTING "setting-jpn.txt"
|
||||
#define WII_SYSCONF "SYSCONF"
|
||||
|
||||
#define RAM_DUMP "ram.raw"
|
||||
#define ARAM_DUMP "aram.raw"
|
||||
// Subdirs in Sys
|
||||
#define GC_SYS_DIR "GC"
|
||||
#define WII_SYS_DIR "Wii"
|
||||
|
||||
// Shorts - dirs
|
||||
// User dirs
|
||||
#define FULL_USERDATA_DIR ROOT_DIR DIR_SEP USERDATA_DIR DIR_SEP
|
||||
#define T_FULLUSERDATA_DIR _T(ROOT_DIR) _T(DIR_SEP) _T(USERDATA_DIR) _T(DIR_SEP)
|
||||
|
||||
#define FULL_GC_USER_DIR FULL_USERDATA_DIR GC_USER_DIR DIR_SEP
|
||||
#define T_FULL_GC_USER_DIR T_FULLUSERDATA_DIR _T(GC_USER_DIR) _T(DIR_SEP)
|
||||
|
||||
#define FULL_WII_USER_DIR FULL_USERDATA_DIR WII_USER_DIR DIR_SEP
|
||||
#define FULL_WII_ROOT_DIR FULL_USERDATA_DIR WII_USER_DIR // This is the "root" for Wii fs, so that it may be used with created devices
|
||||
|
||||
#define FULL_GAMECONFIG_DIR FULL_USERDATA_DIR GAMECONFIG_DIR DIR_SEP
|
||||
#define T_FULL_GAMECONFIG_DIR T_FULLUSERDATA_DIR _T(GAMECONFIG_DIR) _T(DIR_SEP)
|
||||
|
||||
#define FULL_CONFIG_DIR FULL_USERDATA_DIR CONFIG_DIR DIR_SEP
|
||||
#define FULL_CACHE_DIR FULL_USERDATA_DIR CACHE_DIR DIR_SEP
|
||||
#define FULL_SHADERCACHE_DIR FULL_USERDATA_DIR SHADERCACHE_DIR DIR_SEP
|
||||
#define FULL_STATESAVES_DIR FULL_USERDATA_DIR STATESAVES_DIR DIR_SEP
|
||||
#define FULL_SCREENSHOTS_DIR FULL_USERDATA_DIR SCREENSHOTS_DIR DIR_SEP
|
||||
#define FULL_FRAMES_DIR FULL_USERDATA_DIR DUMP_DIR DIR_SEP DUMP_FRAMES_DIR
|
||||
#define FULL_DUMP_DIR FULL_USERDATA_DIR DUMP_DIR DIR_SEP
|
||||
#define FULL_DUMP_TEXTURES_DIR FULL_USERDATA_DIR DUMP_DIR DIR_SEP DUMP_TEXTURES_DIR DIR_SEP
|
||||
#define FULL_HIRES_TEXTURES_DIR FULL_USERDATA_DIR LOAD_DIR DIR_SEP HIRES_TEXTURES_DIR DIR_SEP
|
||||
#define FULL_DSP_DUMP_DIR FULL_USERDATA_DIR DUMP_DIR DIR_SEP DUMP_DSP_DIR DIR_SEP
|
||||
#define FULL_LOGS_DIR FULL_USERDATA_DIR LOGS_DIR DIR_SEP
|
||||
#define FULL_MAIL_LOGS_DIR FULL_LOGS_DIR MAIL_LOGS_DIR DIR_SEP
|
||||
#define FULL_MAPS_DIR FULL_USERDATA_DIR MAPS_DIR DIR_SEP
|
||||
#define FULL_WII_SYSCONF_DIR FULL_WII_USER_DIR WII_SYSCONF_DIR DIR_SEP
|
||||
|
||||
// Sys dirs
|
||||
// Full Sys dirs
|
||||
#define FULL_SYSDATA_DIR ROOT_DIR DIR_SEP SYSDATA_DIR DIR_SEP
|
||||
|
||||
#define FULL_GC_SYS_DIR FULL_SYSDATA_DIR GC_SYS_DIR DIR_SEP
|
||||
//#define GC_SYS_EUR_DIR FULL_GC_SYS_DIR EUR_DIR
|
||||
//#define GC_SYS_USA_DIR FULL_GC_SYS_DIR USA_DIR
|
||||
//#define GC_SYS_JAP_DIR FULL_GC_SYS_DIR JAP_DIR
|
||||
|
||||
#define FULL_GC_SYS_DIR FULL_SYSDATA_DIR GC_SYS_DIR DIR_SEP
|
||||
//#define GC_SYS_EUR_DIR FULL_GC_SYS_DIR EUR_DIR
|
||||
//#define GC_SYS_USA_DIR FULL_GC_SYS_DIR USA_DIR
|
||||
//#define GC_SYS_JAP_DIR FULL_GC_SYS_DIR JAP_DIR
|
||||
#define FULL_WII_SYS_DIR FULL_SYSDATA_DIR WII_SYS_DIR DIR_SEP
|
||||
|
||||
// Shorts - files
|
||||
// User files
|
||||
#define CONFIG_FILE FULL_CONFIG_DIR DOLPHIN_CONFIG
|
||||
#define DEBUGGER_CONFIG_FILE FULL_CONFIG_DIR DEBUGGER_CONFIG
|
||||
#define LOGGER_CONFIG_FILE FULL_CONFIG_DIR LOGGER_CONFIG
|
||||
// Sys files with full path
|
||||
#define TOTALDB_FILE FULL_SYSDATA_DIR TOTALDB
|
||||
|
||||
#define TOTALDB_FILE FULL_SYSDATA_DIR TOTALDB
|
||||
#define MAINRAM_DUMP_FILE FULL_DUMP_DIR RAM_DUMP
|
||||
#define ARAM_DUMP_FILE FULL_DUMP_DIR ARAM_DUMP
|
||||
#define GC_SRAM_FILE FULL_USERDATA_DIR GC_USER_DIR DIR_SEP GC_SRAM
|
||||
|
||||
#define MAIN_LOG_FILE FULL_LOGS_DIR MAIN_LOG
|
||||
|
||||
// Sys files
|
||||
#define FONT_ANSI_FILE FULL_GC_SYS_DIR FONT_ANSI
|
||||
#define FONT_SJIS_FILE FULL_GC_SYS_DIR FONT_SJIS
|
||||
|
||||
@@ -175,8 +168,5 @@
|
||||
#define WII_EUR_SETTING_FILE FULL_WII_SYS_DIR WII_EUR_SETTING
|
||||
#define WII_USA_SETTING_FILE FULL_WII_SYS_DIR WII_USA_SETTING
|
||||
#define WII_JAP_SETTING_FILE FULL_WII_SYS_DIR WII_JAP_SETTING
|
||||
#define WII_SYSCONF_FILE FULL_WII_SYSCONF_DIR WII_SYSCONF
|
||||
|
||||
#define FULL_WII_MENU_DIR FULL_WII_USER_DIR "title" DIR_SEP "00000001" DIR_SEP "00000002" DIR_SEP "content"
|
||||
|
||||
#endif // _COMMON_PATHS_H_
|
||||
|
||||
@@ -487,6 +487,41 @@ bool DeleteDirRecursively(const char *directory)
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifdef __linux__
|
||||
//Create directory and copy contents (does not overwrite existing files)
|
||||
void CopyDir(const char *source_path, const char *dest_path)
|
||||
{
|
||||
if (!File::Exists(source_path))
|
||||
return;
|
||||
|
||||
if (!File::Exists(dest_path)) File::CreateFullPath(dest_path);
|
||||
char *virtualName;
|
||||
struct dirent dirent, *result = NULL;
|
||||
DIR *dirp = opendir(source_path);
|
||||
if (!dirp)
|
||||
return;
|
||||
while (!readdir_r(dirp, &dirent, &result) && result) {
|
||||
virtualName = result->d_name;
|
||||
// check for "." and ".."
|
||||
if (((virtualName[0] == '.') && (virtualName[1] == '\0')) ||
|
||||
((virtualName[0] == '.') && (virtualName[1] == '.') &&
|
||||
(virtualName[2] == '\0')))
|
||||
continue;
|
||||
char source[300], dest[300];
|
||||
sprintf(source, "%s%s", source_path, virtualName);
|
||||
sprintf(dest, "%s%s", dest_path, virtualName);
|
||||
if (IsDirectory(source)) {
|
||||
sprintf(source, "%s/", source);
|
||||
sprintf(dest, "%s/", dest);
|
||||
if (!File::Exists(dest)) File::CreateFullPath(dest);
|
||||
CopyDir(source, dest);
|
||||
} else
|
||||
if (!File::Exists(dest)) File::Copy(source, dest);
|
||||
}
|
||||
closedir(dirp);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Returns the current directory
|
||||
std::string GetCurrentDir()
|
||||
{
|
||||
@@ -510,28 +545,6 @@ bool SetCurrentDir(const char *_rDirectory)
|
||||
}
|
||||
|
||||
#if defined(__APPLE__)
|
||||
|
||||
//get the full config dir
|
||||
const char *GetConfigDirectory()
|
||||
{
|
||||
static char path[MAX_PATH] = {0};
|
||||
if (strlen(path) > 0)
|
||||
return path;
|
||||
snprintf(path, sizeof(path), "%s" DIR_SEP CONFIG_FILE, GetUserDirectory());
|
||||
return path;
|
||||
}
|
||||
|
||||
//get the full SYSCONF dir
|
||||
const char *GetSysConfDirectory()
|
||||
{
|
||||
static char path[MAX_PATH] = {0};
|
||||
if (strlen(path) > 0)
|
||||
return path;
|
||||
snprintf(path, sizeof(path), "%s" DIR_SEP WII_SYSCONF_FILE, GetUserDirectory());
|
||||
return path;
|
||||
|
||||
}
|
||||
|
||||
std::string GetBundleDirectory()
|
||||
{
|
||||
// Plugin path will be Dolphin.app/Contents/PlugIns
|
||||
@@ -599,28 +612,149 @@ std::string GetSysDirectory()
|
||||
return sysDir;
|
||||
}
|
||||
|
||||
// Returns a pointer to a string with a Dolphin data dir in the user's home
|
||||
// Returns a pointer to a string with a Dolphin data dir or file in the user's home
|
||||
// directory. To be used in "multi-user" mode (that is, installed).
|
||||
const char *GetUserDirectory()
|
||||
const char *GetUserPath(int DirIDX)
|
||||
{
|
||||
// Make sure we only need to do it once
|
||||
static char path[MAX_PATH] = {0};
|
||||
if (strlen(path) > 0)
|
||||
return path;
|
||||
static char UserDir[MAX_PATH] = {0};
|
||||
static char GCUserDir[MAX_PATH] = {0};
|
||||
static char WiiUserDir[MAX_PATH] = {0};
|
||||
static char ConfigDir[MAX_PATH] = {0};
|
||||
static char GameConfigDir[MAX_PATH] = {0};
|
||||
static char MapsDir[MAX_PATH] = {0};
|
||||
static char CacheDir[MAX_PATH] = {0};
|
||||
static char ShaderCacheDir[MAX_PATH] = {0};
|
||||
static char ShadersDir[MAX_PATH] = {0};
|
||||
static char StateSavesDir[MAX_PATH] = {0};
|
||||
static char ScreenShotsDir[MAX_PATH] = {0};
|
||||
static char HiresTexturesDir[MAX_PATH] = {0};
|
||||
static char DumpDir[MAX_PATH] = {0};
|
||||
static char DumpFramesDir[MAX_PATH] = {0};
|
||||
static char DumpTexturesDir[MAX_PATH] = {0};
|
||||
static char DumpDSPDir[MAX_PATH] = {0};
|
||||
static char LogsDir[MAX_PATH] = {0};
|
||||
static char MailLogsDir[MAX_PATH] = {0};
|
||||
static char WiiSYSCONFDir[MAX_PATH] = {0};
|
||||
static char WiiMenuDir[MAX_PATH] = {0};
|
||||
static char DolphinConfig[MAX_PATH] = {0};
|
||||
static char DebuggerConfig[MAX_PATH] = {0};
|
||||
static char LoggerConfig[MAX_PATH] = {0};
|
||||
static char MainLog[MAX_PATH] = {0};
|
||||
static char WiiSYSCONF[MAX_PATH] = {0};
|
||||
static char RamDump[MAX_PATH] = {0};
|
||||
static char ARamDump[MAX_PATH] = {0};
|
||||
static char GCSRam[MAX_PATH] = {0};
|
||||
|
||||
#ifdef WIN32
|
||||
char homedir[MAX_PATH];
|
||||
if (!SUCCEEDED(SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, 0, path)))
|
||||
return NULL;
|
||||
// Set up all paths and files on the first run
|
||||
if (strlen(UserDir) == 0)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
// Keep the directory setup the way it was on windows
|
||||
snprintf(UserDir, sizeof(UserDir), ROOT_DIR DIR_SEP USERDATA_DIR DIR_SEP);
|
||||
//char homedir[MAX_PATH];
|
||||
//if (!SUCCEEDED(SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, 0, path)))
|
||||
// return NULL;
|
||||
#else
|
||||
char *homedir = getenv("HOME");
|
||||
if (!homedir)
|
||||
return NULL;
|
||||
if (File::Exists(ROOT_DIR DIR_SEP USERDATA_DIR))
|
||||
snprintf(UserDir, sizeof(UserDir), ROOT_DIR DIR_SEP USERDATA_DIR DIR_SEP);
|
||||
else
|
||||
{
|
||||
char *homedir = getenv("HOME");
|
||||
if (homedir)
|
||||
snprintf(UserDir, sizeof(UserDir), "%s" DIR_SEP DOLPHIN_DATA_DIR DIR_SEP, homedir);
|
||||
}
|
||||
#endif
|
||||
INFO_LOG(COMMON, "GetUserPath: Setting user directory to %s:", UserDir);
|
||||
|
||||
snprintf(path, sizeof(path), "%s" DIR_SEP DOLPHIN_DATA_DIR, homedir);
|
||||
INFO_LOG(COMMON, "GetUserDirectory: Setting to %s:", path);
|
||||
return path;
|
||||
snprintf(GCUserDir, sizeof(GCUserDir), "%s" GC_USER_DIR DIR_SEP, UserDir);
|
||||
snprintf(WiiUserDir, sizeof(WiiUserDir), "%s" WII_USER_DIR DIR_SEP, UserDir);
|
||||
snprintf(ConfigDir, sizeof(ConfigDir), "%s" CONFIG_DIR DIR_SEP, UserDir);
|
||||
snprintf(GameConfigDir, sizeof(GameConfigDir), "%s" GAMECONFIG_DIR DIR_SEP, UserDir);
|
||||
snprintf(MapsDir, sizeof(MapsDir), "%s" MAPS_DIR DIR_SEP, UserDir);
|
||||
snprintf(CacheDir, sizeof(CacheDir), "%s" CACHE_DIR DIR_SEP, UserDir);
|
||||
snprintf(ShaderCacheDir, sizeof(ShaderCacheDir), "%s" SHADERCACHE_DIR DIR_SEP, UserDir);
|
||||
snprintf(ShadersDir, sizeof(ShadersDir), "%s" SHADERS_DIR DIR_SEP, UserDir);
|
||||
snprintf(StateSavesDir, sizeof(StateSavesDir), "%s" STATESAVES_DIR DIR_SEP, UserDir);
|
||||
snprintf(ScreenShotsDir, sizeof(ScreenShotsDir), "%s" SCREENSHOTS_DIR DIR_SEP, UserDir);
|
||||
snprintf(HiresTexturesDir, sizeof(HiresTexturesDir), "%s" HIRES_TEXTURES_DIR DIR_SEP, UserDir);
|
||||
snprintf(DumpDir, sizeof(DumpDir), "%s" DUMP_DIR DIR_SEP, UserDir);
|
||||
snprintf(DumpFramesDir, sizeof(DumpFramesDir), "%s" DUMP_FRAMES_DIR DIR_SEP, UserDir);
|
||||
snprintf(DumpTexturesDir, sizeof(DumpTexturesDir), "%s" DUMP_TEXTURES_DIR DIR_SEP, UserDir);
|
||||
snprintf(DumpDSPDir, sizeof(DumpDSPDir), "%s" DUMP_DSP_DIR DIR_SEP, UserDir);
|
||||
snprintf(LogsDir, sizeof(LogsDir), "%s" LOGS_DIR DIR_SEP, UserDir);
|
||||
snprintf(MailLogsDir, sizeof(MailLogsDir), "%s" MAIL_LOGS_DIR DIR_SEP, UserDir);
|
||||
snprintf(WiiSYSCONFDir, sizeof(WiiSYSCONFDir), "%s" WII_SYSCONF_DIR DIR_SEP, UserDir);
|
||||
snprintf(WiiMenuDir, sizeof(WiiMenuDir), "%s" WII_MENU_DIR DIR_SEP, UserDir);
|
||||
snprintf(DolphinConfig, sizeof(DolphinConfig), "%s" DOLPHIN_CONFIG, ConfigDir);
|
||||
snprintf(DebuggerConfig, sizeof(DebuggerConfig), "%s" DEBUGGER_CONFIG, ConfigDir);
|
||||
snprintf(LoggerConfig, sizeof(LoggerConfig), "%s" LOGGER_CONFIG, ConfigDir);
|
||||
snprintf(MainLog, sizeof(MainLog), "%s" MAIN_LOG, LogsDir);
|
||||
snprintf(WiiSYSCONF, sizeof(WiiSYSCONF), "%s" WII_SYSCONF, WiiSYSCONFDir);
|
||||
snprintf(RamDump, sizeof(RamDump), "%s" RAM_DUMP, DumpDir);
|
||||
snprintf(ARamDump, sizeof(ARamDump), "%s" ARAM_DUMP, DumpDir);
|
||||
snprintf(GCSRam, sizeof(GCSRam), "%s" GC_SRAM, GCUserDir);
|
||||
}
|
||||
switch (DirIDX)
|
||||
{
|
||||
case D_USER_IDX:
|
||||
return UserDir;
|
||||
case D_GCUSER_IDX:
|
||||
return GCUserDir;
|
||||
case D_WIIUSER_IDX:
|
||||
return WiiUserDir;
|
||||
case D_CONFIG_IDX:
|
||||
return ConfigDir;
|
||||
case D_GAMECONFIG_IDX:
|
||||
return GameConfigDir;
|
||||
case D_MAPS_IDX:
|
||||
return MapsDir;
|
||||
case D_CACHE_IDX:
|
||||
return CacheDir;
|
||||
case D_SHADERCACHE_IDX:
|
||||
return ShaderCacheDir;
|
||||
case D_SHADERS_IDX:
|
||||
return ShadersDir;
|
||||
case D_STATESAVES_IDX:
|
||||
return StateSavesDir;
|
||||
case D_SCREENSHOTS_IDX:
|
||||
return ScreenShotsDir;
|
||||
case D_HIRESTEXTURES_IDX:
|
||||
return HiresTexturesDir;
|
||||
case D_DUMP_IDX:
|
||||
return DumpDir;
|
||||
case D_DUMPFRAMES_IDX:
|
||||
return DumpFramesDir;
|
||||
case D_DUMPTEXTURES_IDX:
|
||||
return DumpTexturesDir;
|
||||
case D_DUMPDSP_IDX:
|
||||
return DumpDSPDir;
|
||||
case D_LOGS_IDX:
|
||||
return LogsDir;
|
||||
case D_MAILLOGS_IDX:
|
||||
return MailLogsDir;
|
||||
case D_WIISYSCONF_IDX:
|
||||
return WiiSYSCONFDir;
|
||||
case D_WIIMENU_IDX:
|
||||
return WiiMenuDir;
|
||||
case F_DOLPHINCONFIG_IDX:
|
||||
return DolphinConfig;
|
||||
case F_DEBUGGERCONFIG_IDX:
|
||||
return DebuggerConfig;
|
||||
case F_LOGGERCONFIG_IDX:
|
||||
return LoggerConfig;
|
||||
case F_MAINLOG_IDX:
|
||||
return MainLog;
|
||||
case F_WIISYSCONF_IDX:
|
||||
return WiiSYSCONF;
|
||||
case F_RAMDUMP_IDX:
|
||||
return RamDump;
|
||||
case F_ARAMDUMP_IDX:
|
||||
return ARamDump;
|
||||
case F_GCSRAM_IDX:
|
||||
return GCSRam;
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
bool WriteStringToFile(bool text_file, const std::string &str, const char *filename)
|
||||
|
||||
@@ -24,6 +24,38 @@
|
||||
|
||||
#include "Common.h"
|
||||
|
||||
// User directory indices for GetUserPath
|
||||
enum {
|
||||
D_USER_IDX,
|
||||
D_GCUSER_IDX,
|
||||
D_WIIUSER_IDX,
|
||||
D_CONFIG_IDX,
|
||||
D_GAMECONFIG_IDX,
|
||||
D_MAPS_IDX,
|
||||
D_CACHE_IDX,
|
||||
D_SHADERCACHE_IDX,
|
||||
D_SHADERS_IDX,
|
||||
D_STATESAVES_IDX,
|
||||
D_SCREENSHOTS_IDX,
|
||||
D_HIRESTEXTURES_IDX,
|
||||
D_DUMP_IDX,
|
||||
D_DUMPFRAMES_IDX,
|
||||
D_DUMPTEXTURES_IDX,
|
||||
D_DUMPDSP_IDX,
|
||||
D_LOGS_IDX,
|
||||
D_MAILLOGS_IDX,
|
||||
D_WIISYSCONF_IDX,
|
||||
D_WIIMENU_IDX,
|
||||
F_DOLPHINCONFIG_IDX,
|
||||
F_DEBUGGERCONFIG_IDX,
|
||||
F_LOGGERCONFIG_IDX,
|
||||
F_MAINLOG_IDX,
|
||||
F_WIISYSCONF_IDX,
|
||||
F_RAMDUMP_IDX,
|
||||
F_ARAMDUMP_IDX,
|
||||
F_GCSRAM_IDX,
|
||||
};
|
||||
|
||||
namespace File
|
||||
{
|
||||
|
||||
@@ -78,13 +110,15 @@ bool DeleteDirRecursively(const char *directory);
|
||||
// Returns the current directory
|
||||
std::string GetCurrentDir();
|
||||
|
||||
//Create directory and copy contents (does not overwrite existing files)
|
||||
void CopyDir(const char *source_path, const char *dest_path);
|
||||
|
||||
// Set the current directory to given directory
|
||||
bool SetCurrentDir(const char *directory);
|
||||
|
||||
|
||||
// Returns a pointer to a string with a Dolphin data dir in the user's home
|
||||
// directory. To be used in "multi-user" mode (that is, installed).
|
||||
const char *GetUserDirectory();
|
||||
const char *GetUserPath(int DirIDX);
|
||||
|
||||
// Returns the path to where the plugins are
|
||||
std::string GetPluginsDirectory();
|
||||
@@ -93,10 +127,6 @@ std::string GetPluginsDirectory();
|
||||
std::string GetSysDirectory();
|
||||
|
||||
#ifdef __APPLE__
|
||||
|
||||
const char *GetConfigDirectory();
|
||||
const char *GetSysConfDirectory();
|
||||
|
||||
std::string GetBundleDirectory();
|
||||
#endif
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include "ConsoleListener.h"
|
||||
#include "Timer.h"
|
||||
#include "Thread.h"
|
||||
#include "FileUtil.h"
|
||||
|
||||
void GenericLog(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type,
|
||||
const char *file, int line, const char* fmt, ...)
|
||||
@@ -79,7 +80,7 @@ LogManager::LogManager() {
|
||||
m_Log[LogTypes::MEMCARD_MANAGER] = new LogContainer("MemCard Manger", "MemCard Manger");
|
||||
m_Log[LogTypes::NETPLAY] = new LogContainer("NETPLAY", "Netplay");
|
||||
|
||||
m_fileLog = new FileLogListener(MAIN_LOG_FILE);
|
||||
m_fileLog = new FileLogListener(File::GetUserPath(F_MAINLOG_IDX));
|
||||
m_consoleLog = new ConsoleListener();
|
||||
|
||||
for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i) {
|
||||
@@ -176,6 +177,10 @@ FileLogListener::FileLogListener(const char *filename) {
|
||||
setEnable(true);
|
||||
}
|
||||
|
||||
void FileLogListener::Reload() {
|
||||
m_logfile = fopen(m_filename, "a+");
|
||||
}
|
||||
|
||||
FileLogListener::~FileLogListener() {
|
||||
free(m_filename);
|
||||
fclose(m_logfile);
|
||||
|
||||
@@ -42,6 +42,8 @@ public:
|
||||
FileLogListener(const char *filename);
|
||||
~FileLogListener();
|
||||
|
||||
void Reload();
|
||||
|
||||
void Log(LogTypes::LOG_LEVELS, const char *msg);
|
||||
|
||||
bool isValid() {
|
||||
|
||||
@@ -21,13 +21,17 @@
|
||||
SysConf::SysConf()
|
||||
: m_IsValid(false)
|
||||
{
|
||||
#if defined(__APPLE__)
|
||||
if (LoadFromFile(File::GetSysConfDirectory()))
|
||||
#else
|
||||
if (LoadFromFile(WII_SYSCONF_FILE))
|
||||
#endif
|
||||
if (LoadFromFile(File::GetUserPath(F_WIISYSCONF_IDX)))
|
||||
m_IsValid = true;
|
||||
}
|
||||
|
||||
void SysConf::Reload()
|
||||
{
|
||||
if (m_IsValid)
|
||||
return;
|
||||
if (LoadFromFile(File::GetUserPath(F_WIISYSCONF_IDX)))
|
||||
m_IsValid = true;
|
||||
}
|
||||
|
||||
SysConf::~SysConf()
|
||||
{
|
||||
|
||||
@@ -71,6 +71,8 @@ public:
|
||||
|
||||
bool IsValid() { return m_IsValid; }
|
||||
|
||||
void Reload();
|
||||
|
||||
template<class T>
|
||||
T GetData(const char* sectionName)
|
||||
{
|
||||
|
||||
@@ -94,7 +94,7 @@ std::string CBoot::GenerateMapFilename()
|
||||
u64 TitleID = Loader.GetTitleID();
|
||||
char tmpBuffer[32];
|
||||
sprintf(tmpBuffer, "%08x_%08x", (u32)(TitleID >> 32) & 0xFFFFFFFF , (u32)TitleID & 0xFFFFFFFF );
|
||||
return FULL_MAPS_DIR + std::string(tmpBuffer) + ".map";
|
||||
return std::string(File::GetUserPath(D_MAPS_IDX)) + std::string(tmpBuffer) + ".map";
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -103,7 +103,7 @@ std::string CBoot::GenerateMapFilename()
|
||||
case SCoreStartupParameter::BOOT_DOL:
|
||||
return _StartupPara.m_strFilename.substr(0, _StartupPara.m_strFilename.size()-4) + ".map";
|
||||
default:
|
||||
return FULL_MAPS_DIR + _StartupPara.GetUniqueID() + ".map";
|
||||
return std::string(File::GetUserPath(D_MAPS_IDX)) + _StartupPara.GetUniqueID() + ".map";
|
||||
}
|
||||
|
||||
return std::string("unknown map");
|
||||
|
||||
@@ -46,7 +46,7 @@ bool CBoot::Boot_WiiWAD(const char* _pFilename)
|
||||
char Path[260+1];
|
||||
u64 TitleID = ContentLoader.GetTitleID();
|
||||
char* pTitleID = (char*)&TitleID;
|
||||
sprintf(Path, FULL_WII_USER_DIR "title//%02x%02x%02x%02x/%02x%02x%02x%02x/data/nocopy/",
|
||||
sprintf(Path, "%stitle/%02x%02x%02x%02x/%02x%02x%02x%02x/data/nocopy/", File::GetUserPath(D_WIIUSER_IDX),
|
||||
(u8)pTitleID[7], (u8)pTitleID[6], (u8)pTitleID[5], (u8)pTitleID[4],
|
||||
(u8)pTitleID[3], (u8)pTitleID[2], (u8)pTitleID[1], (u8)pTitleID[0]);
|
||||
File::CreateFullPath(Path);
|
||||
@@ -99,7 +99,7 @@ bool CBoot::Install_WiiWAD(const char* _pFilename)
|
||||
//copy WAD's tmd header and contents to content directory
|
||||
|
||||
char ContentPath[260+1];
|
||||
sprintf(ContentPath, FULL_WII_USER_DIR "title/%08x/%08x/content/", TitleID_HI, TitleID_LO);
|
||||
sprintf(ContentPath, "%stitle/%08x/%08x/content/", File::GetUserPath(D_WIIUSER_IDX), TitleID_HI, TitleID_LO);
|
||||
File::CreateFullPath(ContentPath);
|
||||
|
||||
std::string TMDFileName(ContentPath);
|
||||
@@ -137,11 +137,11 @@ bool CBoot::Install_WiiWAD(const char* _pFilename)
|
||||
//Extract and copy WAD's ticket to ticket directory
|
||||
|
||||
char TicketPath[260+1];
|
||||
sprintf(TicketPath, FULL_WII_USER_DIR "ticket/%08x/", TitleID_HI);
|
||||
sprintf(TicketPath, "%sticket/%08x/", File::GetUserPath(D_WIIUSER_IDX), TitleID_HI);
|
||||
File::CreateFullPath(TicketPath);
|
||||
|
||||
char TicketFileName[260+1];
|
||||
sprintf(TicketFileName, FULL_WII_USER_DIR "ticket/%08x/%08x.tik", TitleID_HI, TitleID_LO);
|
||||
sprintf(TicketFileName, "%sticket/%08x/%08x.tik", File::GetUserPath(D_WIIUSER_IDX), TitleID_HI, TitleID_LO);
|
||||
|
||||
FILE* pTicketFile = fopen(TicketFileName, "wb");
|
||||
if (pTicketFile == NULL) {
|
||||
|
||||
@@ -44,13 +44,9 @@ SConfig::~SConfig()
|
||||
|
||||
void SConfig::SaveSettings()
|
||||
{
|
||||
NOTICE_LOG(BOOT, "Saving Settings to %s", CONFIG_FILE);
|
||||
NOTICE_LOG(BOOT, "Saving Settings to %s", File::GetUserPath(F_DOLPHINCONFIG_IDX));
|
||||
IniFile ini;
|
||||
#if defined(__APPLE__)
|
||||
ini.Load(File::GetConfigDirectory()); // yes we must load first to not kill unknown stuff
|
||||
#else
|
||||
ini.Load(CONFIG_FILE); // yes we must load first to not kill unknown stuff
|
||||
#endif
|
||||
ini.Load(File::GetUserPath(F_DOLPHINCONFIG_IDX)); // yes we must load first to not kill unknown stuff
|
||||
|
||||
// General
|
||||
{
|
||||
@@ -139,11 +135,7 @@ void SConfig::SaveSettings()
|
||||
ini.Set("Core", "WiiMotePlugin",m_LocalCoreStartupParameter.m_strWiimotePlugin[0]);
|
||||
}
|
||||
|
||||
#if defined(__APPLE__)
|
||||
ini.Save(File::GetConfigDirectory());
|
||||
#else
|
||||
ini.Save(CONFIG_FILE);
|
||||
#endif
|
||||
ini.Save(File::GetUserPath(F_DOLPHINCONFIG_IDX));
|
||||
|
||||
m_SYSCONF->Save();
|
||||
}
|
||||
@@ -151,13 +143,10 @@ void SConfig::SaveSettings()
|
||||
|
||||
void SConfig::LoadSettings()
|
||||
{
|
||||
INFO_LOG(BOOT, "Loading Settings from %s", CONFIG_FILE);
|
||||
INFO_LOG(BOOT, "Loading Settings from %s", File::GetUserPath(F_DOLPHINCONFIG_IDX));
|
||||
IniFile ini;
|
||||
#if defined(__APPLE__)
|
||||
ini.Load(File::GetConfigDirectory());
|
||||
#else
|
||||
ini.Load(CONFIG_FILE);
|
||||
#endif
|
||||
ini.Load(File::GetUserPath(F_DOLPHINCONFIG_IDX));
|
||||
|
||||
std::string PluginsDir = File::GetPluginsDirectory();
|
||||
|
||||
// Hard coded default
|
||||
@@ -267,6 +256,6 @@ void SConfig::LoadSettings()
|
||||
void SConfig::LoadSettingsHLE()
|
||||
{
|
||||
IniFile ini;
|
||||
ini.Load(FULL_CONFIG_DIR "DSP.ini");
|
||||
ini.Load((std::string(File::GetUserPath(D_CONFIG_IDX)) + "DSP.ini").c_str());
|
||||
ini.Get("Config", "EnableRE0AudioFix", &m_EnableRE0Fix, false); // RE0 Hack
|
||||
}
|
||||
|
||||
@@ -530,11 +530,11 @@ static inline std::string GenerateScreenshotName()
|
||||
int index = 1;
|
||||
std::string tempname, name;
|
||||
std::string gameId = GetStartupParameter().GetUniqueID();
|
||||
tempname = FULL_SCREENSHOTS_DIR + gameId + DIR_SEP_CHR;
|
||||
tempname = std::string(File::GetUserPath(D_SCREENSHOTS_IDX)) + gameId + DIR_SEP_CHR;
|
||||
|
||||
if (!File::CreateFullPath(tempname.c_str())) {
|
||||
//fallback to old-style screenshots, without folder.
|
||||
tempname = FULL_SCREENSHOTS_DIR;
|
||||
tempname = std::string(File::GetUserPath(D_SCREENSHOTS_IDX));
|
||||
}
|
||||
//append gameId, tempname only contains the folder here.
|
||||
tempname += gameId;
|
||||
|
||||
@@ -230,7 +230,7 @@ bool SCoreStartupParameter::AutoSetup(EBootBS2 _BootBS2)
|
||||
// Setup paths
|
||||
CheckMemcardPath(SConfig::GetInstance().m_strMemoryCardA, Region, true);
|
||||
CheckMemcardPath(SConfig::GetInstance().m_strMemoryCardB, Region, false);
|
||||
m_strSRAM = GC_SRAM_FILE;
|
||||
m_strSRAM = File::GetUserPath(F_GCSRAM_IDX);
|
||||
if (!bWii)
|
||||
{
|
||||
m_strBootROM = File::GetSysDirectory() + GC_SYS_DIR + DIR_SEP + Region + DIR_SEP GC_IPL;
|
||||
@@ -259,7 +259,7 @@ void SCoreStartupParameter::CheckMemcardPath(std::string& memcardPath, std::stri
|
||||
{
|
||||
// Use default memcard path if there is no user defined name
|
||||
std::string defaultFilename = isSlotA ? GC_MEMCARDA : GC_MEMCARDB;
|
||||
memcardPath = FULL_GC_USER_DIR + defaultFilename + ext;
|
||||
memcardPath = std::string(File::GetUserPath(D_GCUSER_IDX)) + defaultFilename + ext;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -193,7 +193,7 @@ void CopySettingsFile(std::string& DeviceName)
|
||||
else
|
||||
Source += "setting-eur.txt";
|
||||
|
||||
std::string Target = FULL_WII_ROOT_DIR + DeviceName;
|
||||
std::string Target = std::string(File::GetUserPath(D_WIIUSER_IDX)) + DeviceName;
|
||||
|
||||
// Check if the target dir exists, otherwise create it
|
||||
std::string TargetDir = Target.substr(0, Target.find_last_of(DIR_SEP));
|
||||
|
||||
@@ -30,7 +30,7 @@ std::string HLE_IPC_BuildFilename(const char* _pFilename, int _size)
|
||||
char Buffer[128];
|
||||
memcpy(Buffer, _pFilename, _size);
|
||||
|
||||
std::string Filename(FULL_WII_ROOT_DIR);
|
||||
std::string Filename = std::string(File::GetUserPath(D_WIIUSER_IDX));
|
||||
if (Buffer[1] == '0')
|
||||
Filename += std::string("/title"); // this looks and feel like a hack...
|
||||
|
||||
@@ -289,4 +289,4 @@ void CWII_IPC_HLE_Device_FileIO::DoState(PointerWrap &p)
|
||||
fseek(m_pFileHandle, m_Seek, SEEK_SET);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -764,7 +764,7 @@ bool CWII_IPC_HLE_Device_es::IsValid(u64 _TitleID) const
|
||||
std::string CWII_IPC_HLE_Device_es::CreateTicketFileName(u64 _TitleID) const
|
||||
{
|
||||
char TicketFilename[1024];
|
||||
sprintf(TicketFilename, "%sticket/%08x/%08x.tik", FULL_WII_USER_DIR, (u32)(_TitleID >> 32), (u32)_TitleID);
|
||||
sprintf(TicketFilename, "%sticket/%08x/%08x.tik", File::GetUserPath(D_WIIUSER_IDX), (u32)(_TitleID >> 32), (u32)_TitleID);
|
||||
|
||||
return TicketFilename;
|
||||
}
|
||||
@@ -772,7 +772,7 @@ std::string CWII_IPC_HLE_Device_es::CreateTicketFileName(u64 _TitleID) const
|
||||
std::string CWII_IPC_HLE_Device_es::CreateTitleContentPath(u64 _TitleID) const
|
||||
{
|
||||
char TicketFilename[1024];
|
||||
sprintf(TicketFilename, "%stitle/%08x/%08x/content", FULL_WII_USER_DIR, (u32)(_TitleID >> 32), (u32)_TitleID);
|
||||
sprintf(TicketFilename, "%stitle/%08x/%08x/content", File::GetUserPath(D_WIIUSER_IDX), (u32)(_TitleID >> 32), (u32)_TitleID);
|
||||
|
||||
return TicketFilename;
|
||||
}
|
||||
@@ -780,10 +780,11 @@ std::string CWII_IPC_HLE_Device_es::CreateTitleContentPath(u64 _TitleID) const
|
||||
void CWII_IPC_HLE_Device_es::FindValidTitleIDs()
|
||||
{
|
||||
m_TitleIDs.clear();
|
||||
char TitlePath[1024];
|
||||
|
||||
std::string TitlePath(FULL_WII_USER_DIR + std::string("title"));
|
||||
sprintf(TitlePath, "%stitle", File::GetUserPath(D_WIIUSER_IDX));
|
||||
File::FSTEntry ParentEntry;
|
||||
u32 NumEntries = ScanDirectoryTree(TitlePath.c_str(), ParentEntry);
|
||||
u32 NumEntries = ScanDirectoryTree(TitlePath, ParentEntry);
|
||||
for(std::vector<File::FSTEntry>::iterator Level1 = ParentEntry.children.begin(); Level1 != ParentEntry.children.end(); ++Level1)
|
||||
{
|
||||
if (Level1->isDirectory)
|
||||
|
||||
@@ -41,10 +41,10 @@ bool CWII_IPC_HLE_Device_fs::Open(u32 _CommandAddress, u32 _Mode)
|
||||
{
|
||||
// clear tmp folder
|
||||
{
|
||||
//std::string WiiTempFolder = File::GetUserDirectory() + FULL_WII_USER_DIR + std::string("tmp");
|
||||
std::string WiiTempFolder = FULL_WII_USER_DIR + std::string("tmp");
|
||||
File::DeleteDirRecursively(WiiTempFolder.c_str());
|
||||
File::CreateDir(WiiTempFolder.c_str());
|
||||
char Path[260];
|
||||
snprintf(Path, sizeof(Path), "%stmp", File::GetUserPath(D_WIIUSER_IDX));
|
||||
File::DeleteDirRecursively(Path);
|
||||
File::CreateDir(Path);
|
||||
}
|
||||
|
||||
// create home directory
|
||||
@@ -61,7 +61,7 @@ bool CWII_IPC_HLE_Device_fs::Open(u32 _CommandAddress, u32 _Mode)
|
||||
if (GameID == 0) GameID = 0xF00DBEEF;
|
||||
if (TitleID == 0) TitleID = 0x00010000;
|
||||
|
||||
sprintf(Path, FULL_WII_USER_DIR "title/%08x/%08x/data/nocopy/", TitleID, GameID);
|
||||
snprintf(Path, sizeof(Path), "%stitle/%08x/%08x/data/nocopy/", File::GetUserPath(D_WIIUSER_IDX), TitleID, GameID);
|
||||
|
||||
File::CreateFullPath(Path);
|
||||
}
|
||||
|
||||
@@ -47,7 +47,8 @@ bool CWII_IPC_HLE_Device_sdio_slot0::Open(u32 _CommandAddress, u32 _Mode)
|
||||
{
|
||||
INFO_LOG(WII_IPC_SD, "Open");
|
||||
|
||||
char filename[16] = "sd.raw";
|
||||
char filename[300];
|
||||
sprintf(filename, "%ssd.raw", File::GetUserPath(D_WIIUSER_IDX));
|
||||
m_Card = fopen(filename, "r+b");
|
||||
if(!m_Card)
|
||||
{
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include "../Core.h" // Local core functions
|
||||
#include "WII_IPC_HLE_Device_usb.h"
|
||||
#include "WII_IPC_HLE_Device_usb_kbd.h"
|
||||
#include "FileUtil.h"
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
@@ -35,7 +36,7 @@ bool CWII_IPC_HLE_Device_usb_kbd::Open(u32 _CommandAddress, u32 _Mode)
|
||||
{
|
||||
INFO_LOG(WII_IPC_STM, "CWII_IPC_HLE_Device_usb_kbd: Open");
|
||||
IniFile ini;
|
||||
ini.Load(CONFIG_FILE);
|
||||
ini.Load(File::GetUserPath(F_DOLPHINCONFIG_IDX));
|
||||
ini.Get("USB Keyboard", "Layout", &m_KeyboardLayout, KBD_LAYOUT_QWERTY);
|
||||
|
||||
for(int i = 0; i < 256; i++)
|
||||
|
||||
@@ -2745,7 +2745,7 @@ DEFINE_LUA_FUNCTION(emulua_loadrom, "filename")
|
||||
// Load game specific settings
|
||||
IniFile game_ini;
|
||||
std::string unique_id = StartUp.GetUniqueID();
|
||||
StartUp.m_strGameIni = FULL_GAMECONFIG_DIR + unique_id + ".ini";
|
||||
StartUp.m_strGameIni = std::string(File::GetUserPath(D_GAMECONFIG_IDX)) + unique_id + ".ini";
|
||||
if (unique_id.size() == 6 && game_ini.Load(StartUp.m_strGameIni.c_str()))
|
||||
{
|
||||
// General settings
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user