diff --git a/Externals/WiiUseSrc/Src/SConscript b/Externals/WiiUseSrc/Src/SConscript index 80b5487f19..04d2715995 100644 --- a/Externals/WiiUseSrc/Src/SConscript +++ b/Externals/WiiUseSrc/Src/SConscript @@ -2,6 +2,10 @@ Import('env') +if not env['HAVE_BLUEZ']: + env['HAVE_WIIUSE'] = 0 + Return() + files = [ "classic.c", "dynamics.c", @@ -22,4 +26,7 @@ env_wiiuse = env.Clone( libs = [ 'm', ] + env_wiiuse.SharedLibrary(env['libs_dir']+"wiiuse", files, LIBS=libs) + +env['HAVE_WIIUSE'] = 1 diff --git a/SConstruct b/SConstruct index 3529fcebcc..62b829608a 100644 --- a/SConstruct +++ b/SConstruct @@ -41,8 +41,7 @@ cppDefines = [ ] -if sys.platform == 'darwin': - compileFlags += [ '-I/opt/local/include' ] + include_paths = [ '../../../Core/Common/Src', @@ -60,7 +59,7 @@ include_paths = [ dirs = [ 'Externals/Bochs_disasm', 'Externals/LZO', - 'Externals/WiiUseSrc/Src', + 'Externals/WiiUseSrc/Src', 'Source/Core/Common/Src', 'Source/Core/Core/Src', 'Source/Core/DiscIO/Src', @@ -74,6 +73,7 @@ dirs = [ 'Source/Plugins/Plugin_nJoy_Testing/Src', 'Source/Plugins/Plugin_Wiimote/Src', 'Source/Core/DolphinWX/Src', + 'Source/Core/DebuggerWX/Src', ] builders = {} @@ -86,6 +86,7 @@ if sys.platform == 'darwin': for dstNode in target: writePlist(properties, str(dstNode)) builders['Plist'] = Builder(action = createPlist) + compileFlags += [ '-I/opt/local/include' ] lib_paths = include_paths @@ -173,57 +174,60 @@ tests = {'CheckWXConfig' : wxconfig.CheckWXConfig, 'CheckPKG' : utils.CheckPKG, 'CheckSDL' : utils.CheckSDL} -conf = env.Configure(custom_tests = tests) +conf = env.Configure(custom_tests = tests, + config_h="Source/Core/Common/Src/Config.h") if not conf.CheckPKGConfig('0.15.0'): - Exit(1) + print "Can't find pkg-config, some tests will fail" -if not env['osx64']: - if not conf.CheckSDL('1.0.0'): - Exit(1) +env['HAVE_SDL'] = conf.CheckSDL('1.0.0') -if not conf.CheckPKG('bluez'): - Exit(1) +# Bluetooth for wii support +env['HAVE_BLUEZ'] = conf.CheckPKG('bluez') -if not env['osx64']: - if not conf.CheckPKG('ao'): - Exit(1) +# needed for sound +env['HAVE_AO'] = conf.CheckPKG('ao') # handling wx flags CCFLAGS should be created before -if not env['nowx']: - if not env['osx64']: - if not conf.CheckWXConfig( - '2.8', ['gl', 'adv', 'core', 'base'], env['debug'] - ): - print 'gui build requires wxwidgets >= 2.8' - Exit(1) -if not env['nowx']: - if not env['osx64']: - dirs += ['Source/Core/DebuggerWX/Src',] +env['HAVE_WX'] = conf.CheckWXConfig('2.8', ['gl', 'adv', 'core', 'base'], + env['debug']) -# After all configuration tests are done -env = conf.Finish() - -#wx windows flags -if not env['nowx']: - if not env['osx64']: - wxconfig.ParseWXConfig(env) - compileFlags += ['-DUSE_WX',] - -#osx 64bit need this +#osx 64 specifics if env['osx64']: + # SDL and WX are broken on osx 64 + env['HAVE_SDL'] = 0 + env['HAVE_WX'] = 0; compileFlags += ['-arch' , 'x86_64', '-DOSX64'] +# Gui less build +if env['nowx']: + env['HAVE_WX'] = 0; + +# Creating config.h defines +conf.Define('HAVE_SDL', env['HAVE_SDL']) +conf.Define('HAVE_BLUEZ', env['HAVE_BLUEZ']) +conf.Define('HAVE_AO', env['HAVE_AO']) +conf.Define('HAVE_WX', env['HAVE_WX']) + +# After all configuration tests are done +conf.Finish() + +#wx windows flags +if env['HAVE_WX']: + wxconfig.ParseWXConfig(env) + compileFlags += ['-DUSE_WX'] + #get sdl stuff -if not env['osx64']: +if env['HAVE_SDL']: env.ParseConfig('sdl-config --cflags --libs') # lib ao (needed for sound plugins) -if not env['osx64']: +if env['HAVE_AO']: env.ParseConfig('pkg-config --cflags --libs ao') # bluetooth for wii -env.ParseConfig('pkg-config --cflags --libs bluez') +if env['HAVE_BLUEZ']: + env.ParseConfig('pkg-config --cflags --libs bluez') # add methods from utils to env env.AddMethod(utils.filterWarnings) @@ -243,9 +247,10 @@ env['libs_dir'] = env['prefix'] + 'Libs/' #TODO where should this go? env['data_dir'] = env['prefix'] -env['LINKFLAGS'] = [ '-Wl,-rpath,' + env['libs_dir'] ] +env['RPATH'] = env['libs_dir'] + env['LIBPATH'] += [ env['libs_dir'] ] -Export('env') + rev = utils.GenerateRevFile(env['flavor'], "Source/Core/Common/Src/svnrev_template.h", @@ -262,6 +267,8 @@ if unknown: # generate help Help(vars.GenerateHelpText(env)) +Export('env') + for subdir in dirs: SConscript( subdir + os.sep + 'SConscript', diff --git a/SconsTests/utils.py b/SconsTests/utils.py index 27c703c387..b2990eb91a 100644 --- a/SconsTests/utils.py +++ b/SconsTests/utils.py @@ -19,7 +19,7 @@ def CheckPKG(context, name): context.Message( 'Checking for %s... ' % name ) ret = context.TryAction('pkg-config --exists \'%s\'' % name)[0] context.Result( ret ) - return ret + return int(ret) def CheckSDL(context, version): @@ -34,7 +34,7 @@ def CheckSDL(context, version): ret = (found >= required) context.Result( ret ) - return ret + return int(ret) def GenerateRevFile(flavour, template, output): diff --git a/Source/Core/Common/Src/Common.h b/Source/Core/Common/Src/Common.h index 307a520fd8..b41461967f 100644 --- a/Source/Core/Common/Src/Common.h +++ b/Source/Core/Common/Src/Common.h @@ -35,8 +35,10 @@ #endif #include "../../../PluginSpecs/CommonTypes.h" +#define HAVE_WIIUSE 1 #else #include "CommonTypes.h" +#include "Config.h" #endif #include diff --git a/Source/Core/DebuggerWX/Src/SConscript b/Source/Core/DebuggerWX/Src/SConscript index 005b8f4b65..fd5cfff957 100644 --- a/Source/Core/DebuggerWX/Src/SConscript +++ b/Source/Core/DebuggerWX/Src/SConscript @@ -2,6 +2,9 @@ Import('env') +if not env['HAVE_WX']: + Return() + files = ["LogWindow.cpp", "BreakPointDlg.cpp", "BreakpointView.cpp", diff --git a/Source/Core/DolphinWX/Src/SConscript b/Source/Core/DolphinWX/Src/SConscript index 2788275f17..f02d62d9b5 100644 --- a/Source/Core/DolphinWX/Src/SConscript +++ b/Source/Core/DolphinWX/Src/SConscript @@ -3,13 +3,19 @@ Import('env') import sys +wxenv = env.Clone() + files = [ 'BootManager.cpp', 'Config.cpp', 'cmdline.c', ] -if not env['osx64']: +libs = [ + 'core', 'minilzo', 'discio', 'bdisasm', 'videocommon', 'common', 'z' + ] + +if wxenv['HAVE_WX']: files += [ 'AboutDolphin.cpp', 'ConfigMain.cpp', @@ -26,36 +32,21 @@ if not env['osx64']: 'stdafx.cpp', ] -libs = [ - 'core', 'minilzo', 'discio', 'bdisasm', 'videocommon', 'common', 'z' - ] + CPPDEFINES = [ + 'USE_XPM_BITMAPS', + 'wxNEEDS_CHARPP', + ], -wxenv = env.Clone() -if not wxenv['osx64']: libs = [ 'debwx' ] + libs - wxenv.Append( - CPPDEFINES = [ - 'USE_XPM_BITMAPS', - 'wxNEEDS_CHARPP', - ], - LINKFLAGS = [ - '-pthread', - ], - LIBS = libs - ) -else: - wxenv.Append( - CPPDEFINES = [ - 'USE_XPM_BITMAPS', - 'wxNEEDS_CHARPP', - ], - LINKFLAGS = [ - '-pthread', - '-arch', - 'x86_64' - ], - LIBS = libs - ) + + + +wxenv.Append( + LINKFLAGS = [ + '-pthread', + ], + LIBS = libs + ) if sys.platform == 'darwin': exeGUI = env['binary_dir'] + 'Dolphin.app/Contents/MacOS/Dolphin' @@ -85,7 +76,8 @@ else: exeGUI = env['binary_dir'] + 'Dolphin' exeNoGUI = env['binary_dir'] + 'DolphinNoGUI' -objects = [ wxenv.Object(srcFile) for srcFile in files ] -if not wxenv['osx64']: - wxenv.Program(exeGUI, objects + [ 'Main.cpp' ]) -wxenv.Program(exeNoGUI, objects + [ 'MainNoGUI.cpp' ]) +#objects = [ wxenv.Object(srcFile) for srcFile in files ] + +if not wxenv['HAVE_WX']: + wxenv.Program(exeGUI, files + [ 'Main.cpp' ]) +wxenv.Program(exeNoGUI, files + [ 'MainNoGUI.cpp' ]) diff --git a/Source/Plugins/Plugin_DSP_HLE/Src/SConscript b/Source/Plugins/Plugin_DSP_HLE/Src/SConscript index 2f4cf52156..22d14d48f6 100644 --- a/Source/Plugins/Plugin_DSP_HLE/Src/SConscript +++ b/Source/Plugins/Plugin_DSP_HLE/Src/SConscript @@ -5,6 +5,10 @@ import sys name = "Plugin_DSP_HLE" +if not env['HAVE_AO']: + print name + " must have AO to be build" + Return() + files = [ 'DSPHandler.cpp', 'MailHandler.cpp', diff --git a/Source/Plugins/Plugin_DSP_LLE/Src/SConscript b/Source/Plugins/Plugin_DSP_LLE/Src/SConscript index f6fba2071f..c528b3c1b4 100644 --- a/Source/Plugins/Plugin_DSP_LLE/Src/SConscript +++ b/Source/Plugins/Plugin_DSP_LLE/Src/SConscript @@ -5,6 +5,10 @@ import sys name = "Plugin_DSP_LLE" +if not env['HAVE_AO']: + print name + " must have AO to be build" + Return() + files = [ "AOSoundStream.cpp", # "DisAsmDlg.cpp", diff --git a/Source/Plugins/Plugin_VideoOGL/Src/SConscript b/Source/Plugins/Plugin_VideoOGL/Src/SConscript index 545a89a3fd..b98973138c 100644 --- a/Source/Plugins/Plugin_VideoOGL/Src/SConscript +++ b/Source/Plugins/Plugin_VideoOGL/Src/SConscript @@ -46,12 +46,12 @@ libs = [ gfxenv = env.Clone() -if not gfxenv['osx64']: +if gfxenv['HAVE_WX']: files += [ - 'GUI/ConfigDlg.cpp', - 'Debugger/Debugger.cpp', - 'Debugger/PBView.cpp', - ] + 'GUI/ConfigDlg.cpp', + 'Debugger/Debugger.cpp', + 'Debugger/PBView.cpp', + ] if gfxenv['osx64']: files += [ 'cocoaGL.m' ] @@ -66,13 +66,10 @@ if gfxenv['osx64']: 'x86_64' ] +useSDL = gfxenv['HAVE_SDL'] + if sys.platform == 'darwin': - # SDL is currently the only way to get video on Mac OS X. - if gfxenv['osx64']: - useSDL = False - else: - useSDL = True - # TODO: clean it up (use incpath and libpath) + # Use libraries from MacPorts. compileFlags.append('-I/opt/local/include') linkFlags.append('-L/opt/local/lib') @@ -83,6 +80,8 @@ if sys.platform == 'darwin': ] else: # By default, GLX is used on Linux to setup OpenGL, but you can select SDL + # TODO: build both sdl and non X + useSDL = False # instead if you like, by changing the line below. tests = {'CheckPKG' : utils.CheckPKG} @@ -96,7 +95,7 @@ else: gfxenv = conf.Finish() - useSDL = False + gfxenv.ParseConfig("pkg-config x11 --cflags --libs") gfxenv.ParseConfig("pkg-config xxf86vm --cflags --libs") diff --git a/Source/Plugins/Plugin_Wiimote/Src/SConscript b/Source/Plugins/Plugin_Wiimote/Src/SConscript index 3c8db4e78a..494f3c7ace 100644 --- a/Source/Plugins/Plugin_Wiimote/Src/SConscript +++ b/Source/Plugins/Plugin_Wiimote/Src/SConscript @@ -3,6 +3,7 @@ Import('env') import sys +wmenv = env.Clone() name = "Plugin_Wiimote" files = [ @@ -16,21 +17,20 @@ files = [ "Encryption.cpp", "FillReport.cpp", "main.cpp", - "wiimote_real.cpp", ] -wiimoteenv = env.Clone() +libs = [ 'common' ] -if wiimoteenv['osx64']: - wiimoteenv.Append( - CXXFLAGS = [ '-arch', 'x86_64' ], - LINKFLAGS = [ '-arch', 'x86_64' ], - LIBS = [ 'common' ], - ) -else: - wiimoteenv.Append( - CXXFLAGS = [ '-fPIC' ], - LIBS = [ 'common', 'wiiuse' ], - ) +cxxflags = [ '-fPIC' ] -wiimoteenv.SharedLibrary(env['plugin_dir']+name, files) +if wmenv['HAVE_WIIUSE']: + libs += [ 'wiiuse' ] + files += [ "wiimote_real.cpp" ] + cxxflags += ['-DHAVE_WIIUSE'] + +wmenv.Append( + CXXFLAGS = cxxflags, + LIBS = libs, + ) + +wmenv.SharedLibrary(env['plugin_dir']+name, files) diff --git a/Source/Plugins/Plugin_Wiimote/Src/main.cpp b/Source/Plugins/Plugin_Wiimote/Src/main.cpp index ac0b5433ef..fb300cfbcc 100644 --- a/Source/Plugins/Plugin_Wiimote/Src/main.cpp +++ b/Source/Plugins/Plugin_Wiimote/Src/main.cpp @@ -28,7 +28,10 @@ #include "pluginspecs_wiimote.h" #include "EmuMain.h" + +#if HAVE_WIIUSE #include "wiimote_real.h" +#endif #include "Console.h" // for startConsoleWin, wprintf, GetConsoleHwnd @@ -128,8 +131,9 @@ extern "C" void Wiimote_Initialize(SWiimoteInitialize _WiimoteInitialize) /* We will run WiiMoteReal::Initialize() even if we are not using a real wiimote, we will initiate wiiuse.dll, but we will return before creating a new thread for it in that case */ +#if HAVE_WIIUSE g_UseRealWiiMote = WiiMoteReal::Initialize() > 0; - +#endif g_Config.Load(); // load config settings WiiMoteEmu::Initialize(); @@ -146,13 +150,17 @@ extern "C" void Wiimote_Initialize(SWiimoteInitialize _WiimoteInitialize) extern "C" void Wiimote_DoState(void* ptr, int mode) { +#if HAVE_WIIUSE WiiMoteReal::DoState(ptr, mode); +#endif WiiMoteEmu::DoState(ptr, mode); } extern "C" void Wiimote_Shutdown(void) { +#if HAVE_WIIUSE WiiMoteReal::Shutdown(); +#endif WiiMoteEmu::Shutdown(); } @@ -173,10 +181,13 @@ extern "C" void Wiimote_InterruptChannel(u16 _channelID, const void* _pData, u32 LOGV(WII_IPC_WIIMOTE, 3, " Data: %s", Temp.c_str()); } - if (g_UseRealWiiMote) - WiiMoteReal::InterruptChannel(_channelID, _pData, _Size); + if (! g_UseRealWiiMote) + WiiMoteEmu::InterruptChannel(_channelID, _pData, _Size); +#if HAVE_WIIUSE else - WiiMoteEmu::InterruptChannel(_channelID, _pData, _Size); + WiiMoteReal::InterruptChannel(_channelID, _pData, _Size); +#endif + LOGV(WII_IPC_WIIMOTE, 3, "============================================================="); } @@ -192,19 +203,25 @@ extern "C" void Wiimote_ControlChannel(u16 _channelID, const void* _pData, u32 _ LOGV(WII_IPC_WIIMOTE, 3, " Data: %s", Temp.c_str()); } - if (g_UseRealWiiMote) - WiiMoteReal::ControlChannel(_channelID, _pData, _Size); - else - WiiMoteEmu::ControlChannel(_channelID, _pData, _Size); + + if (! g_UseRealWiiMote) + WiiMoteEmu::ControlChannel(_channelID, _pData, _Size); +#if HAVE_WIIUSE + else + WiiMoteReal::ControlChannel(_channelID, _pData, _Size); +#endif + LOGV(WII_IPC_WIIMOTE, 3, "============================================================="); } extern "C" void Wiimote_Update() { - if (g_UseRealWiiMote) - WiiMoteReal::Update(); - else - WiiMoteEmu::Update(); + if (! g_UseRealWiiMote) + WiiMoteEmu::Update(); +#if HAVE_WIIUSE + else + WiiMoteReal::Update(); +#endif } extern "C" unsigned int Wiimote_GetAttachedControllers() diff --git a/Source/Plugins/Plugin_nJoy_SDL/Src/SConscript b/Source/Plugins/Plugin_nJoy_SDL/Src/SConscript index cb02dce39c..b1ceaf357c 100644 --- a/Source/Plugins/Plugin_nJoy_SDL/Src/SConscript +++ b/Source/Plugins/Plugin_nJoy_SDL/Src/SConscript @@ -5,6 +5,10 @@ import sys name = "Plugin_nJoy_SDL" +if not env['HAVE_SDL']: + print name + " must have SDL to be build" + Return() + files = [ 'nJoy.cpp', 'GUI/AboutBox.cpp', @@ -16,5 +20,5 @@ padenv.Append( CXXFLAGS = [ '-fPIC' ], LIBS = [ 'common' ], ) -if not env['osx64']: - padenv.SharedLibrary(env['plugin_dir']+name, files) + +padenv.SharedLibrary(env['plugin_dir']+name, files) diff --git a/Source/Plugins/Plugin_nJoy_Testing/Src/SConscript b/Source/Plugins/Plugin_nJoy_Testing/Src/SConscript index a0318e365e..c306a9743b 100644 --- a/Source/Plugins/Plugin_nJoy_Testing/Src/SConscript +++ b/Source/Plugins/Plugin_nJoy_Testing/Src/SConscript @@ -5,6 +5,10 @@ import sys name = "Plugin_nJoy_Testing" +if not env['HAVE_SDL']: + print name + " must have SDL to be build" + Return() + files = [ 'nJoy.cpp', 'GUI/AboutBox.cpp',