diff --git a/Externals/Memcard Manager/SConscript b/Externals/Memcard Manager/SConscript new file mode 100644 index 0000000000..2ec9b748ea --- /dev/null +++ b/Externals/Memcard Manager/SConscript @@ -0,0 +1,55 @@ +# -*- python -*- + +Import('env') +import sys +wxenv = env.Clone() + +files = [ + ] + +libs = [ + 'common', + ] + +if wxenv['HAVE_WX']: + files += [ + 'Externals/Memcard Manager/src/mcmMain.cpp', + 'Externals/Memcard Manager/src/MCMdebug.cpp', + 'Source/Core/DolphinWX/Src/MemcardManager.cpp', + 'Source/Core/DolphinWX/Src/MemoryCards/GCMemcard.cpp', + 'Source/Core/DolphinWX/Src/WxUtils.cpp', + ] + + +if wxenv['HAVE_COCOA']: + files += [ 'cocoaApp.m', ] + compileFlags = [ + '-x', + 'objective-c++', + ] + wxenv.Append( + CXXFLAGS = compileFlags, + LINKFLAGS = [ + '-pthread', + ], + LIBS = libs + ) + if not wxenv['HAVE_WX']: + wxenv.Append( + LINKFLAGS = ['-framework', 'IOKit']) +else: + wxenv.Append( + LINKFLAGS = [ + '-pthread', + ], + LIBS = libs + ) + + + + +exeGUI = env['binary_dir'] + 'Memcard Manager' + +#objects = [ wxenv.Object(srcFile) for srcFile in files ] + +wxenv.Program(exeGUI, files) diff --git a/Externals/Memcard Manager/SConstruct b/Externals/Memcard Manager/SConstruct new file mode 100644 index 0000000000..93a997f78a --- /dev/null +++ b/Externals/Memcard Manager/SConstruct @@ -0,0 +1,271 @@ +# -*- python -*- + +import os +import sys +import platform + +# Home made tests +sys.path.append('SconsTests') +import wxconfig +import utils + +# Some features needs at least scons 0.98 +EnsureSConsVersion(1, 2) + +# TODO: how do we use it in help? +name="Memory Card Manager" +version="1.0" +description="" +license="GPL v2" + +warnings = [ + 'all', + 'write-strings', + 'shadow', + 'pointer-arith', + 'packed', + 'no-conversion', + ] +compileFlags = [ + '-fno-exceptions', + '-fno-strict-aliasing', + '-msse2', + #'-fomit-frame-pointer' + ] +if sys.platform != 'win32': + compileFlags += [ '-fvisibility=hidden' ] + +cppDefines = [ + ( '_FILE_OFFSET_BITS', 64), + '_LARGEFILE_SOURCE', + 'GCC_HASCLASSVISIBILITY', + ] + +basedir = os.getcwd()+ '/' + +include_paths = [ + basedir + 'Source/Core/Common/Src', + basedir + 'Source/PluginSpecs', + basedir + 'Source/Core/DolphinWX/Src', + basedir + 'Externals/Memcard Manager/src', + ] + +dirs = [ + basedir + 'Source/Core/Common/Src', + basedir + '.', + ] + +builders = {} +if sys.platform == 'darwin': + from plistlib import writePlist + def createPlist(target, source, env): + properties = {} + for srcNode in source: + properties.update(srcNode.value) + for dstNode in target: + writePlist(properties, str(dstNode)) + builders['Plist'] = Builder(action = createPlist) + +# handle command line options +vars = Variables('args.cache') + +vars.AddVariables( + BoolVariable('verbose', 'Set for compilation line', False), + BoolVariable('lint', 'Set for lint build (extra warnings)', False), + EnumVariable('flavor', 'Choose a build flavor', 'release', + allowed_values = ('release', 'devel', 'debug', 'fastlog', 'prof'), + ignorecase = 2 + ), + PathVariable('wxconfig', 'Path to the wxconfig', None), + ('CC', 'The c compiler', 'gcc'), + ('CXX', 'The c++ compiler', 'g++'), + ) + +if sys.platform == 'win32': + env = Environment( + CPPPATH = include_paths, + RPATH = [], + LIBS = [], + LIBPATH = [], + tools = [ 'mingw' ], + variables = vars, + ENV = os.environ, + BUILDERS = builders, + DESCRIPTION = description, + SUMMARY = description, + LICENSE = license, + NAME = name, + VERSION = version, + ) +else: + env = Environment( + CPPPATH = include_paths, + RPATH = [], + LIBS = [], + LIBPATH = [], + variables = vars, + ENV = { + 'PATH' : os.environ['PATH'], + 'HOME' : os.environ['HOME'] + }, + BUILDERS = builders, + DESCRIPTION = description, + SUMMARY = description, + LICENSE = license, + NAME = name, + VERSION = version, + ) + +# save the given command line options +vars.Save('args.cache', env) + +# verbose compile +if not env['verbose']: + env['CCCOMSTR'] = "Compiling $TARGET" + env['CXXCOMSTR'] = "Compiling $TARGET" + env['ARCOMSTR'] = "Archiving $TARGET" + env['LINKCOMSTR'] = "Linking $TARGET" + env['ASCOMSTR'] = "Assembling $TARGET" + env['ASPPCOMSTR'] = "Assembling $TARGET" + env['SHCCCOMSTR'] = "Compiling shared $TARGET" + env['SHCXXCOMSTR'] = "Compiling shared $TARGET" + env['SHLINKCOMSTR'] = "Linking shared $TARGET" + env['RANLIBCOMSTR'] = "Indexing $TARGET" + +# build falvuor +flavour = ARGUMENTS.get('flavor') +if (flavour == 'debug'): + compileFlags.append('-g') + cppDefines.append('_DEBUG') #enables LOGGING + # FIXME: this disable wx debugging how do we make it work? + cppDefines.append('NDEBUG') +elif (flavour == 'devel'): + compileFlags.append('-g') +elif (flavour == 'fastlog'): + compileFlags.append('-O3') + cppDefines.append('DEBUGFAST') +elif (flavour == 'prof'): + compileFlags.append('-O3') + compileFlags.append('-g') +elif (flavour == 'release'): + compileFlags.append('-O3') + +# more warnings +if env['lint']: + warnings.append('error') + warnings.append('unreachable-code') + warnings.append('float-equal') + +# add the warnings to the compile flags +compileFlags += [ '-W' + warning for warning in warnings ] + +env['CCFLAGS'] = compileFlags +if sys.platform == 'win32': + env['CXXFLAGS'] = compileFlags +else: + env['CXXFLAGS'] = compileFlags + [ '-fvisibility-inlines-hidden' ] +env['CPPDEFINES'] = cppDefines + +# Configuration tests section +tests = {'CheckWXConfig' : wxconfig.CheckWXConfig, + 'CheckPKGConfig' : utils.CheckPKGConfig, + 'CheckPKG' : utils.CheckPKG, + } + +#object files +env['build_dir'] = os.path.join(basedir, 'Build', platform.system() + '-' + 'MemCardManager' + os.sep) + + +VariantDir(env['build_dir'], '.', duplicate=0) + +conf = env.Configure(custom_tests = tests, + config_h="Source/Core/Common/Src/Config.h") + +if not conf.CheckPKGConfig('0.15.0'): + print "Can't find pkg-config, some tests will fail" + + + + + +env['HAVE_X11'] = conf.CheckPKG('x11') +env['HAVE_COCOA'] = 0 + +# handling wx flags CCFLAGS should be created before +wxmods = ['adv', 'core', 'base'] +env['USE_WX'] = 0 + +env['HAVE_WX'] = conf.CheckWXConfig('2.8', wxmods, 0) + + +conf.Define('HAVE_WX', env['HAVE_WX']) +conf.Define('USE_WX', env['USE_WX']) +conf.Define('HAVE_X11', env['HAVE_X11']) +conf.Define('HAVE_COCOA', env['HAVE_COCOA']) + + +# profile +env['USE_OPROFILE'] = 0 +if (flavour == 'prof'): + proflibs = [ '/usr/lib/oprofile', '/usr/local/lib/oprofile' ] + env['LIBPATH'].append(proflibs) + env['RPATH'].append(proflibs) + if conf.CheckPKG('opagent'): + env['USE_OPROFILE'] = 1 + else: + print "Can't build prof without oprofile, disabling" + +conf.Define('USE_OPROFILE', env['USE_OPROFILE']) +# After all configuration tests are done +conf.Finish() + +#wx windows flags +if env['HAVE_WX']: + wxconfig.ParseWXConfig(env) +else: + print "WX not found or disabled, not building GUI" + +# 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', 'MemCardManager' + extra +os.sep) +#TODO add bin +env['binary_dir'] = env['prefix'] + +# static libs goes here +env['local_libs'] = env['build_dir'] + os.sep + 'libs' + os.sep + +env['LIBPATH'].append(env['local_libs']) + +# print a nice progress indication when not compiling +Progress(['-\r', '\\\r', '|\r', '/\r'], interval = 5) + +# die on unknown variables +unknown = vars.UnknownVariables() +if unknown: + print "Unknown variables:", unknown.keys() + Exit(1) + +# generate help +Help(vars.GenerateHelpText(env)) + +Export('env') + +for subdir in dirs: + SConscript( + subdir + os.sep + 'SConscript', + variant_dir = env[ 'build_dir' ] + subdir + os.sep, + duplicate=0 + ) + diff --git a/Externals/Memcard Manager/build b/Externals/Memcard Manager/build new file mode 100755 index 0000000000..5296b59f1f --- /dev/null +++ b/Externals/Memcard Manager/build @@ -0,0 +1,10 @@ +#!/bin/sh +# lazy way to build linux memcard manager +mv ../../SConstruct ../../dolphin_SConstruct +cp SConstruct ../../SConstruct +cp SConscript ../../SConscript +cd ../../ +scons +rm SConstruct +rm SConscript +mv dolphin_SConstruct SConstruct diff --git a/Externals/Memcard Manager/clean b/Externals/Memcard Manager/clean new file mode 100755 index 0000000000..438432a9ab --- /dev/null +++ b/Externals/Memcard Manager/clean @@ -0,0 +1,10 @@ +#!/bin/sh +# lazy way to clean linux memcard manager +mv ../../SConstruct ../../dolphin_SConstruct +cp SConstruct ../../SConstruct +cp SConscript ../../SConscript +cd ../../ +scons -c +rm SConstruct +rm SConscript +mv dolphin_SConstruct SConstruct