=== modified file 'mixxx/src/SConscript'
--- mixxx/src/SConscript	2010-07-17 03:00:02 +0000
+++ mixxx/src/SConscript	2010-07-20 19:15:14 +0000
@@ -185,9 +185,15 @@
 	DMG_ICON="#res/osx/VolumeIcon.icns"
 
 	#this is a BIG HACK to support Qt's plugins (since Qt *requires* that it's plugins be in specific subdirectories, which OS X doesn't really play nice with)
-	qt_plugins = ([("iconengines", e) for e in ["libqsvgicon.dylib"]] +
-                      [("imageformats", e) for e in ["libqgif.dylib", "libqjpeg.dylib", "libqsvg.dylib"]] +
-                      [("sqldrivers", e) for e in ["libqsqlite.dylib"]])
+	QT_PLUGIN_PATH="/Developer/Applications/Qt/plugins/"
+	QT_PLUGIN_EXT=env['SHLIBSUFFIX'] # .dylib by default on OSX
+	if env['QTDIR'].find("/opt/local/libexec/qt4-mac") == 0:
+		QT_PLUGIN_PATH="/opt/local/libexec/qt4-mac/plugins"
+		QT_PLUGIN_EXT=".bundle" # MacPorts builds .bundle files which work the same as .dylibs
+
+	qt_plugins = ([("iconengines", e) for e in ["libqsvgicon" + QT_PLUGIN_EXT]] +
+		[("imageformats", e) for e in ["libqgif" + QT_PLUGIN_EXT, "libqjpeg" + QT_PLUGIN_EXT, "libqsvg" + QT_PLUGIN_EXT]] +
+		[("sqldrivers", e) for e in ["libqsqlite" + QT_PLUGIN_EXT]])
 	#Left out libqmng and libqtiff to save space.
 
 	#Concatenate the SoundSource plugins to our list of plugins
@@ -202,11 +208,17 @@
 		Dir('#res/ladspa_presets'), Dir('#res/doc/'), Dir('#res/promo/')],
 		 PLUGINS=plugins, ##XXX test what happens if we don't pass any plugins
 			#Qt plugins ((Qt *NEEDS* its plugins in specific locations or it refuses to find them, however this is clearly awkward to write out like this.. maybe))
-		 QT_HACK = [(p_tgt_dir, os.path.join("/Developer/Applications/Qt/plugins/", p_tgt_dir, p)) for p_tgt_dir, p in qt_plugins] #sigh :(
+		 QT_HACK = [(p_tgt_dir, os.path.join(QT_PLUGIN_PATH, p_tgt_dir, p)) for p_tgt_dir, p in qt_plugins] #sigh :(
 		 ,
 		 STRIP=True,
 		 #STRIP=(type == 'RELEASE')
 		 )
+
+	### We must copy QTDIR/lib/QtGui.framework/Resources/qt_menu.nib to avoid getting a segfault w/ MacPorts built bundles ( http://bugreports.qt.nokia.com/browse/QTBUG-5952 )
+	if env['QTDIR'].find("/opt/local/libexec/qt4-mac") == 0:
+		print "Manually copying qt_menu.nib into macports built bundle"
+		Command(str(bundle[0]) + '/Contents/Resources', env['QTDIR'] + '/lib/QtGui.framework/Resources/', Copy("$TARGET", "$SOURCE")) # copy qt_menu.nib
+
 	#env.Default(mixxx_bin) #todo: make the Default() just the program itself *globally* (not just for OS X); bundle should be a separate target
 	env.Alias('bundle', bundle)
 	dmg = env.Dmg('Mixxx-'+env['MIXXX_VERSION']+'-'+ARCH, [bundle, ] + docs_files, VOLNAME=VOLNAME, ICON = DMG_ICON)

=== modified file 'mixxx/src/SConscript.env'
--- mixxx/src/SConscript.env	2010-07-17 05:26:27 +0000
+++ mixxx/src/SConscript.env	2010-07-20 19:01:39 +0000
@@ -677,15 +677,27 @@
 
 	#QT4
 	env.Append(LINKFLAGS = '-framework QtCore -framework QtOpenGL -framework Qt3Support -framework QtGui -framework QtSql -framework QtXml -framework QtXmlPatterns  -framework QtNetwork -framework QtSql -framework QtScript -framework QtWebKit')
-	env.Append(CPPPATH = ['/Library/Frameworks/QtCore.framework/Headers/',
-				'/Library/Frameworks/QtOpenGL.framework/Headers/',
-				'/Library/Frameworks/Qt3Support.framework/Headers/',
-				'/Library/Frameworks/QtGui.framework/Headers/',
-				'/Library/Frameworks/QtXml.framework/Headers/',
-				'/Library/Frameworks/QtNetwork.framework/Headers/',
-				'/Library/Frameworks/QtSql.framework/Headers/',
-				'/Library/Frameworks/QtWebKit.framework/Headers/',
-				'/Library/Frameworks/QtScript.framework/Headers/'])
+	frameworkPrefix = "";
+	if env['QTDIR'].find("/opt/local/libexec/qt4-mac") == 0:
+		# MacPorts
+		print "Mac Ports detected, using Mac Ports frameworks, libs and includes..."
+		mpPrefix = "/opt/local"
+		env.Append(LIBPATH = [mpPrefix+'/lib'])
+		env.Append(CPPPATH = [mpPrefix+'/include'])
+		env.Prepend(LINKFLAGS = ['-F'+mpPrefix+'/Library/Frameworks'])
+		frameworkPrefix = mpPrefix
+		env.Append(CPPDEFINES = '__MP4V2__') # TODO: move this define to the M4A section, activate if mp4v2/mp4v2.h exists...  here it is harmless because if you have macports you can only have mp4v2 1.9 or greater
+		frameworkPrefix = "/opt/local"
+
+	env.Append(CPPPATH = [frameworkPrefix + '/Library/Frameworks/QtCore.framework/Headers/',
+				frameworkPrefix + '/Library/Frameworks/QtOpenGL.framework/Headers/',
+				frameworkPrefix + '/Library/Frameworks/Qt3Support.framework/Headers/',
+				frameworkPrefix + '/Library/Frameworks/QtGui.framework/Headers/',
+				frameworkPrefix + '/Library/Frameworks/QtXml.framework/Headers/',
+				frameworkPrefix + '/Library/Frameworks/QtNetwork.framework/Headers/',
+				frameworkPrefix + '/Library/Frameworks/QtSql.framework/Headers/',
+				frameworkPrefix + '/Library/Frameworks/QtWebKit.framework/Headers/',
+				frameworkPrefix + '/Library/Frameworks/QtScript.framework/Headers/'])
 
 	#Non-standard libpaths for fink and darwin ports
 	env.Append(LIBPATH = ['/sw/lib'])

