Simplify the SCons build:

On OS X, build all code as Objective-C(++).

Centralize framework handling.

Cleanup.


git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5645 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
Soren Jorvang 2010-06-10 14:18:21 +00:00
parent de45e015cd
commit 404c625622
26 changed files with 110 additions and 253 deletions

View File

@ -20,36 +20,8 @@ if wxenv['HAVE_WX']:
'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'] + 'MemcardManager'
#objects = [ wxenv.Object(srcFile) for srcFile in files ]
wxenv.Program(exeGUI, files)

View File

@ -9,15 +9,9 @@ sys.path.append('SconsTests')
import wxconfig
import utils
# Some features needs at least scons 0.98
# Some features need at least SCons 1.2
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',
@ -91,11 +85,6 @@ if sys.platform == 'win32':
variables = vars,
ENV = os.environ,
BUILDERS = builders,
DESCRIPTION = description,
SUMMARY = description,
LICENSE = license,
NAME = name,
VERSION = version,
)
else:
env = Environment(
@ -109,11 +98,6 @@ else:
'HOME' : os.environ['HOME']
},
BUILDERS = builders,
DESCRIPTION = description,
SUMMARY = description,
LICENSE = license,
NAME = name,
VERSION = version,
)
# save the given command line options
@ -132,7 +116,7 @@ if not env['verbose']:
env['SHLINKCOMSTR'] = "Linking shared $TARGET"
env['RANLIBCOMSTR'] = "Indexing $TARGET"
# build falvuor
# build flavour
flavour = ARGUMENTS.get('flavor')
if (flavour == 'debug'):
compileFlags.append('-g')
@ -189,7 +173,6 @@ if not conf.CheckPKGConfig('0.15.0'):
env['HAVE_X11'] = conf.CheckPKG('x11')
env['HAVE_COCOA'] = 0
# handling wx flags CCFLAGS should be created before
wxmods = ['adv', 'core', 'base']
@ -201,7 +184,6 @@ 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

View File

@ -1170,10 +1170,10 @@ static int process_scan_header(jpeg *z)
if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int) z->s.img_n) return e("bad SOS component count","Corrupt JPEG");
if (Ls != 6+2*z->scan_n) return e("bad SOS len","Corrupt JPEG");
for (i=0; i < z->scan_n; ++i) {
int id = get8(&z->s), which;
int ID = get8(&z->s), which;
int q = get8(&z->s);
for (which = 0; which < z->s.img_n; ++which)
if (z->img_comp[which].id == id)
if (z->img_comp[which].id == ID)
break;
if (which == z->s.img_n) return 0;
z->img_comp[which].hd = q >> 4; if (z->img_comp[which].hd > 3) return e("bad DC huff","Corrupt JPEG");

View File

@ -9,7 +9,7 @@ sys.path.append('SconsTests')
import wxconfig
import utils
# Some features needs at least SCons 1.2
# Some features need at least SCons 1.2
EnsureSConsVersion(1, 2)
warnings = [
@ -280,7 +280,7 @@ if not env['HAVE_SDL']:
print "SDL is required"
Exit(1)
# Bluetooth for wii support
# Bluetooth for wiimote support
env['HAVE_BLUEZ'] = conf.CheckPKG('bluez')
env['HAVE_ALSA'] = 0
@ -341,13 +341,19 @@ if sys.platform == 'darwin':
env['HAVE_XRANDR'] = 0
env['HAVE_X11'] = 0
env['CC'] = "gcc-4.2"
env['CFLAGS'] = ['-x', 'objective-c']
env['CXX'] = "g++-4.2"
env['CXXFLAGS'] = ['-x', 'objective-c++']
env['CCFLAGS'] += ['-arch' , 'x86_64' , '-arch' , 'i386']
env['LINKFLAGS'] += ['-arch' , 'x86_64' , '-arch' , 'i386']
conf.Define('MAP_32BIT', 0)
env['FRAMEWORKS'] += ['CoreFoundation', 'CoreServices']
env['FRAMEWORKS'] += ['IOBluetooth', 'IOKit', 'OpenGL']
env['FRAMEWORKS'] += ['AudioUnit', 'CoreAudio']
else:
env['HAVE_X11'] = conf.CheckPKG('x11')
env['HAVE_XRANDR'] = env['HAVE_X11'] and conf.CheckPKG('xrandr')
env['LINKFLAGS'] += ['-pthread']
wxmods = ['aui', 'adv', 'core', 'base']
if env['wxgl'] or sys.platform == 'win32' or sys.platform == 'darwin':
@ -368,10 +374,35 @@ if env['nowx']:
else:
env['HAVE_WX'] = conf.CheckWXConfig(wxver, wxmods, 0)
wxconfig.ParseWXConfig(env)
# wx-config wants us to link with the OS X QuickTime framework
# which is not available for x86_64 and we don't use it anyway.
# Strip it out to silence some harmless linker warnings.
if env['FRAMEWORKS'].count('QuickTime'):
env['FRAMEWORKS'].remove('QuickTime')
# Make sure that the libraries claimed by wx-config are valid
env['HAVE_WX'] = conf.CheckPKG('c')
if not env['HAVE_WX'] and not env['nowx']:
print "WX not found - see config.log"
print "WX libraries not found - see config.log"
Exit(1)
if not sys.platform == 'win32':
if not conf.CheckPKG('Cg'):
print "Must have Cg framework from NVidia to build"
Exit(1)
if not conf.CheckPKG('GLEW'):
print "Must have GLEW to build"
Exit(1)
if not sys.platform == 'win32' and not sys.platform == 'darwin':
if not conf.CheckPKG('GL'):
print "Must have OpenGL to build"
Exit(1)
if not conf.CheckPKG('GLU'):
print "Must have GLU to build"
Exit(1)
if not conf.CheckPKG('CgGL'):
print "Must have CgGl to build"
Exit(1)
env['HAVE_ZLIB'] = conf.CheckPKG('z')

View File

@ -1,4 +1,3 @@
# -*- python -*-
Import('env')
@ -11,22 +10,19 @@ files = [
'AudioCommon.cpp',
]
acenv = env.Clone()
if acenv['HAVE_OPENAL']:
if env['HAVE_OPENAL']:
files += [ 'OpenALStream.cpp', 'aldlist.cpp' ]
if acenv['HAVE_AO']:
if env['HAVE_AO']:
files += [ 'AOSoundStream.cpp' ]
if acenv['HAVE_ALSA']:
if env['HAVE_ALSA']:
files += [ 'AlsaSoundStream.cpp' ]
if acenv['HAVE_PULSEAUDIO']:
if env['HAVE_PULSEAUDIO']:
files += [ 'PulseAudioStream.cpp' ]
if sys.platform == 'darwin':
files += [ 'CoreAudioSoundStream.cpp' ]
acenv['FRAMEWORKS'] = [ 'CoreAudio', 'AudioUnit' ]
acenv.StaticLibrary(env['local_libs'] + 'audiocommon', files)
env.StaticLibrary(env['local_libs'] + 'audiocommon', files)

View File

@ -47,5 +47,4 @@ if sys.platform == 'win32':
files += [ "ExtendedTrace.cpp" ]
files += [ "stdafx.cpp" ]
env_common = env.Clone()
env_common.StaticLibrary(env['local_libs'] + "common", files)
env.StaticLibrary(env['local_libs'] + "common", files)

View File

@ -28,6 +28,4 @@ files = [
"Jit/DSPJitMisc.cpp",
]
acenv = env.Clone()
acenv.StaticLibrary(env['local_libs'] + 'dspcore', files, LIBS = [ 'common'] )
env.StaticLibrary(env['local_libs'] + 'dspcore', files)

View File

@ -12,6 +12,4 @@ files = [
'MemoryView.cpp',
]
acenv = env.Clone()
acenv.StaticLibrary(env['local_libs'] + 'debugger_ui_util', files)
env.StaticLibrary(env['local_libs'] + 'debugger_ui_util', files)

View File

@ -23,7 +23,6 @@
#include <wx/textctrl.h>
#include <wx/listbox.h>
#include <wx/artprov.h>
#include <wx/aui/aui.h>
#include "Thread.h"
#include "CoreParameter.h"

View File

@ -17,15 +17,14 @@ files = [
"RegisterView.cpp",
"JitWindow.cpp",
]
wxenv = env.Clone()
wxenv.Append(
CPPDEFINES = [
'wxNEEDS_CHARPP'
],
LINKFLAGS = [
'-pthread',
]
)
libs = [
'common',
'debugger_ui_util'

View File

@ -26,7 +26,4 @@ files = [
'AES/aes_cbc.c',
'AES/aes_core.c',
]
libs = [
'common'
]
env.StaticLibrary(env['local_libs'] + 'discio', files, LIBS = libs)

View File

@ -55,33 +55,10 @@ else:
if sys.platform == 'darwin':
files += [ 'cocoaApp.m', ]
compileFlags = [
'-x',
'objective-c++',
]
wxenv.Append(
CXXFLAGS = compileFlags,
LINKFLAGS = [
'-pthread', '-framework', 'IOKit'
],
LIBS = libs
)
else:
wxenv.Append(
LINKFLAGS = [
'-pthread',
],
LIBS = libs
)
if sys.platform == 'darwin':
exeGUI = env['binary_dir'] + 'Dolphin.app/Contents/MacOS/Dolphin'
exeNoGUI = env['binary_dir'] + 'DolphinNoGUI'
wxenv['FRAMEWORKS'] = ['Cocoa', 'CoreFoundation', 'System']
wxenv.Plist(
env['binary_dir'] + 'Dolphin.app/Contents/Info.plist',
Value(dict(
@ -100,11 +77,13 @@ else:
exeGUI = env['binary_dir'] + 'dolphin-emu'
exeNoGUI = env['binary_dir'] + 'dolphin-emu-nogui'
wxenv.Append(
LIBS = libs
)
if wxenv['HAVE_X11']:
files += [ 'X11Utils.cpp' ]
#objects = [ wxenv.Object(srcFile) for srcFile in files ]
if wxenv['HAVE_WX']:
wxenv.Program(exeGUI, files + [ 'Main.cpp' ])
else:

View File

@ -102,11 +102,11 @@ bool EventHandler::TestEvent (Keys k, sf::Event e)
#if defined HAVE_WX && HAVE_WX
// Taken from wxw source code
sf::Key::Code EventHandler::wxCharCodeToSF(int id)
sf::Key::Code EventHandler::wxCharCodeToSF(int charcode)
{
sf::Key::Code sfKey;
switch (id) {
switch (charcode) {
// case WXK_CANCEL: sfKey = sf::Key::Cancel; break;
// case WXK_BACK: sfKey = sf::Key::BackSpace; break;
case WXK_TAB: sfKey = sf::Key::Tab; break;
@ -181,12 +181,12 @@ sf::Key::Code EventHandler::wxCharCodeToSF(int id)
default:
// To lower (will tolower work on windows?)
if (id >= 'A' && id <= 'Z')
id = id - 'A' + 'a';
if (charcode >= 'A' && charcode <= 'Z')
charcode = charcode - 'A' + 'a';
if ((id >= 'a' && id <= 'z') ||
(id >= '0' && id <= '9'))
sfKey = (sf::Key::Code)id;
if ((charcode >= 'a' && charcode <= 'z') ||
(charcode >= '0' && charcode <= '9'))
sfKey = (sf::Key::Code)charcode;
else
sfKey = sf::Key::Count; // Invalid key

View File

@ -1,7 +1,6 @@
# -*- python -*-
import sys
Import('env')
icenv = env.Clone()
files = [
'Configuration.cpp',
@ -21,7 +20,7 @@ if env['HAVE_WX']:
"WXInputBase.cpp",
]
if icenv['HAVE_SDL']:
if env['HAVE_SDL']:
files += [
'ControllerInterface/SDL/SDL.cpp'
]
@ -32,11 +31,10 @@ if sys.platform == 'darwin':
'ControllerInterface/OSX/OSXKeyboard.mm',
'ControllerInterface/OSX/OSXMouse.mm'
]
icenv['FRAMEWORKS'] = ['IOKit']
if sys.platform == 'linux2':
files += [
'ControllerInterface/Xlib/Xlib.cpp'
]
icenv.StaticLibrary(env['local_libs'] + "inputcommon", files)
env.StaticLibrary(env['local_libs'] + "inputcommon", files)

View File

@ -37,12 +37,9 @@ files = [
'HiresTextures.cpp',
]
env_vcommon = env.Clone()
if env_vcommon['HAVE_OPENCL']:
if env['HAVE_OPENCL']:
files += [
'OpenCL/OCLTextureDecoder.cpp',
]
env_vcommon.StaticLibrary(env['local_libs'] + "videocommon", files)
env.StaticLibrary(env['local_libs'] + "videocommon", files)

View File

@ -14,9 +14,6 @@ libs = [
'common',
]
dtenv.Append(LIBS = libs)
if sys.platform == 'darwin':
dtenv['FRAMEWORKS'] = ['CoreFoundation', 'Cocoa', 'System']
dtenv.Program(dtenv['binary_dir'] + 'dsptool', files)

View File

@ -33,7 +33,5 @@ if dspenv['HAVE_WX']:
dspenv.Append(
LIBS = [ 'common', 'audiocommon' ],
)
if sys.platform == 'darwin':
dspenv['FRAMEWORKS'] = [ 'CoreAudio', 'CoreServices', 'AudioUnit' ]
dspenv.SharedLibrary(env['plugin_dir']+name, files)

View File

@ -33,6 +33,10 @@
#include <wx/sizer.h>
#include <wx/listctrl.h>
#include <wx/statline.h>
#if defined(__APPLE__)
//id is an objective-c++ type, wx team need to change this
#define id toolid
#endif
#include <wx/aui/aui.h>
#include "disassemble.h"

View File

@ -24,6 +24,7 @@ if env['HAVE_WX']:
]
lleenv = env.Clone()
if env['HAVE_WX']:
lleenv.Append(
LIBS = [ 'dspcore', 'audiocommon', 'common', 'debugger_ui_util' ],
@ -32,6 +33,5 @@ else:
lleenv.Append(
LIBS = [ 'dspcore', 'audiocommon', 'common' ],
)
if sys.platform == 'darwin':
lleenv['FRAMEWORKS'] = [ 'CoreAudio', 'CoreServices', 'AudioUnit' ]
lleenv.SharedLibrary(env['plugin_dir']+name, files)

View File

@ -15,6 +15,7 @@ files = [
'GCPad.cpp',
'Rumble.cpp',
]
if padenv['HAVE_WX']:
files += [
'ConfigJoypad.cpp',
@ -25,7 +26,4 @@ padenv.Append(
LIBS = [ 'inputcommon', 'common', ],
)
if sys.platform == 'darwin':
padenv['FRAMEWORKS'] = ['CoreFoundation', 'System' ]
padenv.SharedLibrary(env['plugin_dir']+name, files)

View File

@ -15,7 +15,4 @@ padenv.Append(
LIBS = [ 'inputplugincommon', 'inputcommon', 'common' ],
)
if sys.platform == 'darwin':
padenv['FRAMEWORKS'] = ['CoreFoundation', 'System', 'Cocoa', 'IOKit' ]
padenv.SharedLibrary(env['plugin_dir']+name, files)

View File

@ -25,8 +25,6 @@ files = [
'PostProcessing.cpp',
'FramebufferManager.cpp',
]
compileFlags = [
]
linkFlags = [
]
libs = [
@ -50,45 +48,10 @@ if gfxenv['HAVE_WX']:
if sys.platform == 'darwin':
files += [ 'cocoaGL.m' ]
compileFlags += [
'-x',
'objective-c++',
]
if sys.platform == 'win32':
files += [ 'OS/Win32.cpp' ]
tests = {'CheckPKG' : utils.CheckPKG}
conf = gfxenv.Configure(custom_tests = tests,
config_h=env['base_dir']+"Source/Core/Common/Src/Config.h")
if sys.platform == 'darwin':
gfxenv['FRAMEWORKS'] = ['CoreFoundation', 'System', 'OpenGL', 'Cocoa', 'Cg']
if gfxenv['HAVE_OPENCL']:
gfxenv['FRAMEWORKS'] += ['OpenCL']
conf.CheckPKG('OpenGL')
if not conf.CheckPKG('Cg'):
print name + " must have Cg framework from nvidia to be build"
Return()
elif sys.platform == 'win32':
print name + " is assuming that you have opengl, glu, cg, and cggl"
else:
if not (conf.CheckPKG('GL') and conf.CheckPKG('GLU')):
print name + " must have opengl and glu to be build"
Return()
if not conf.CheckPKG('Cg') or not conf.CheckPKG('CgGL'):
print name + " must have cg and cggl to be build"
Return()
if sys.platform == 'win32':
print name + " is assuming that you have glew"
else:
if not conf.CheckPKG('GLEW'):
print name + " must have glew to be build"
Return()
if sys.platform == 'win32':
files += [
'OS/Win32.cpp'
@ -98,16 +61,10 @@ if sys.platform == 'win32':
]
gfxenv['CPPPATH'] += libs
conf.Finish()
# Sanity check
if gfxenv['USE_WX'] and not gfxenv['HAVE_WX']:
print "Must have wx to use wxgl"
Return()
gfxenv.Append(
CXXFLAGS = compileFlags,
LINKFLAGS = linkFlags,
)
gfxenv.SharedLibrary(
env['plugin_dir']+name,

View File

@ -47,34 +47,9 @@ gfxenv = env.Clone()
if sys.platform == 'win32':
files += [ 'Win32.cpp' ]
tests = {'CheckPKG' : utils.CheckPKG}
conf = gfxenv.Configure(custom_tests = tests,
config_h=env['base_dir']+"Source/Core/Common/Src/Config.h")
if sys.platform == 'darwin':
gfxenv['FRAMEWORKS'] = ['CoreFoundation', 'System', 'OpenGL', 'Cocoa', 'Cg']
compileFlags = ['-x','objective-c++',]
files += [ 'cocoaGL.m', ]
conf.CheckPKG('OpenGL')
if gfxenv['HAVE_OPENCL']:
gfxenv['FRAMEWORKS'] += ['OpenCL']
elif sys.platform == 'win32':
print name + " is assuming that you have opengl, glu, cg, and cggl"
else:
if not (conf.CheckPKG('GL') and conf.CheckPKG('GLU')):
print name + " must have opengl and glu to be build"
Return()
if sys.platform == 'win32':
print name + " is assuming that you have glew"
else:
if not conf.CheckPKG('GLEW'):
print name + " must have glew to be build"
Return()
if sys.platform == 'win32':
files += [
'Win32.cpp'
@ -84,15 +59,10 @@ if sys.platform == 'win32':
]
gfxenv['CPPPATH'] += libs
conf.Finish()
# Sanity check
if gfxenv['USE_WX'] and not gfxenv['HAVE_WX']:
print "Must have wx to use wxgl"
Return()
gfxenv.Append(
LINKFLAGS = linkFlags,
)
gfxenv.SharedLibrary(
env['plugin_dir']+name,

View File

@ -19,6 +19,7 @@ files = [
"Rumble.cpp",
"UDPWiimote.cpp"
]
if wmenv['HAVE_WX']:
files += [
"ConfigBasicDlg.cpp",
@ -28,6 +29,7 @@ if wmenv['HAVE_WX']:
"ConfigRecording.cpp",
"FillReport.cpp",
]
libs = [ 'common', 'inputcommon' ]
cxxflags = [ ]
@ -38,14 +40,6 @@ if wmenv['HAVE_WIIUSE']:
files += [ "ReadWiimote.cpp" ]
cxxflags += ['-DHAVE_WIIUSE']
if sys.platform == 'darwin':
wmenv.Append(
CXXFLAGS = cxxflags,
LINKFLAGS = ['-framework', 'IOBluetooth'],
LIBS = libs,
)
wmenv['FRAMEWORKS'] = ['Cocoa', 'System']
else:
wmenv.Append(
CXXFLAGS = cxxflags,
LIBS = libs,

View File

@ -23,7 +23,4 @@ wiinewenv.Append(
LIBS = [ 'inputplugincommon', 'inputcommon', 'common' ],
)
if sys.platform == 'darwin':
wiinewenv['FRAMEWORKS'] = ['CoreFoundation', 'System', 'Cocoa', 'IOKit' ]
wiinewenv.SharedLibrary(env['plugin_dir']+name, files)