(requires review for windows/mac)

Fix up so that various libraries wont be fatal for build with scons
wiiuse lib is used only if HAVE_WIIUSE is defined to 1 
made major cleanup for darwin and osx64


git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1404 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
nakeee 2008-12-05 13:46:19 +00:00
parent be3094b6b3
commit 064d45024c
13 changed files with 156 additions and 113 deletions

View File

@ -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

View File

@ -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',

View File

@ -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):

View File

@ -35,8 +35,10 @@
#endif
#include "../../../PluginSpecs/CommonTypes.h"
#define HAVE_WIIUSE 1
#else
#include "CommonTypes.h"
#include "Config.h"
#endif
#include <stdlib.h>

View File

@ -2,6 +2,9 @@
Import('env')
if not env['HAVE_WX']:
Return()
files = ["LogWindow.cpp",
"BreakPointDlg.cpp",
"BreakpointView.cpp",

View File

@ -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' ])

View File

@ -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',

View File

@ -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",

View File

@ -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")

View File

@ -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)

View File

@ -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()

View File

@ -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)

View File

@ -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',