=== STEP 1 === --- Install Python (2.5 -> 2.7) === STEP 2 === --- Install Slick SVN (Slick-Subversion-1.6.12-win32.msi) http://www.sliksvn.com/pub/Slik-Subversion-1.6.12-win32.msi === STEP 3 === --- Install scons 2.2.0 in the Python site-packages: http://www.scons.org/download.php === STEP 4 === --- Install MinGW (minimalist) from sourceforge === STEP 5 === --- Install pthreads (just copy files from ftp): ftp://sourceware.org/pub/pthreads-win32/dll-latest/ C:\pthreads\bin, C:\pthreads\include, C:\pthreads\lib === STEP 6 === --- Update libsndfile from http://www.mega-nerd.com/libsndfile to the most recent version that works, which may be pre-release or release; currently it is the latest stable release (1.0.25). Do not build from sources. === STEP 7 === --- Update liblo tag 0.26 from the tarball at http://liblo.sourceforge.net (not SVN!), copy build/config-msvc.h --> src/config.h, and build with this SConstruct: # S C O N S T R U C T F O R L I B L O . D L L # Michael Gogins # Using hints from: http://clam.iua.upf.edu/wikis/clam/index.php/Devel/Windows_MinGW_cross_compile#liblo # Modified by Olivier Belanger on september 2010 environment = Environment(tools = ['mingw']) sources = ''' src/address.c src/blob.c src/bundle.c src/message.c src/method.c src/pattern_match.c src/send.c src/server.c src/server_thread.c src/timetag.c ''' cppath = ''' . lo C:/pthreads/include ''' libpath = ''' C:/MinGW/lib C:/pthreads/lib ''' environment.Append(CFLAGS = Split('-O2 -g -DHAVE_CONFIG_H -D_WIN32_WINNT=0x0501')) environment.Append(CPPPATH = Split(cppath)) environment.Append(LIBPATH = Split(libpath)) environment.Append(LIBS = Split('pthreadvc2 kernel32 gdi32 wsock32 ws2_32 ole32 uuid winmm')) environment.Append(LINKFLAGS = ['-Wl,--enable-stdcall-fixup', '-Wl,--export-all-symbols']) ### -export-all-symbols or -export-dynamic ? ### liblo = environment.SharedLibrary('lo', Split(sources)) ####################################################### === STEP 8 === --- Install Directx 9.0 SDK (april 2007) === STEP 9 === --- Download Asio SDK === STEP 10 === --- Update the PortAudio library http://portmedia.sourceforge.net from SVN and build it. Try the trunk version first, if that doesn't work use the most recent tag. --- Copy ASIOSDK to portaudio/src/hostapi/asio --- Check the pa_win_hostapis.c file and make sure that it is configured to build the DirectSound, WMME, and ASIO drivers: --- Need to removed "volatile" from function definitions in MinGW/include/winbase.h --- Build with this SConstruct: ''' MinGW SConstruct for PortAudio Michael Gogins Modified by Olivier Belanger on september 2010 ''' print __doc__ print import os import string import sys import traceback commonEnvironment = Environment(ENV = os.environ, tools = ['mingw', 'swig', 'javac', 'jar']) commonEnvironment.Append(CFLAGS = Split('-O2 -g')) commonEnvironment.Append(CPPFLAGS = Split(''' -DWIN32 -D_WIN32 -DWINDOWS -DKSAUDIO_SPEAKER_DIRECTOUT=0 -DMETHOD_NEITHER=3 -DFILE_ANY_ACCESS=0 -DPA_USE_WMME -DPA_USE_DS -DPA_USE_ASIO -DPA_USE_WASAPI ''')) commonEnvironment.Append(CPPPATH = [".", "src/common", "src/hostapi", "src/os", "src/os/win", "include", "C:/portaudio/src/hostapi/wasapi/mingw-include", "C:/portaudio/src/hostapi/asio/ASIOSDK/host", "C:/portaudio/src/hostapi/asio/ASIOSDK/host/pc", "C:/portaudio/src/hostapi/asio/ASIOSDK/common", "C:/Program Files/Microsoft DirectX SDK (April 2007)/Include"]) commonEnvironment.Append(LIBS=Split(''' setupapi kernel32 user32 gdi32 winspool comdlg32 advapi32 shell32 ole32 oleaut32 uuid odbc32 odbccp32 winmm strmiids ''')) portAudioSources = Split(''' src/common/pa_allocation.c src/common/pa_converters.c src/common/pa_cpuload.c src/common/pa_debugprint.c src/common/pa_dither.c src/common/pa_front.c src/common/pa_process.c src/common/pa_ringbuffer.c src/common/pa_stream.c src/common/pa_trace.c src/hostapi/dsound/pa_win_ds.c src/hostapi/dsound/pa_win_ds_dynlink.c src/hostapi/wmme/pa_win_wmme.c src/hostapi/skeleton/pa_hostapi_skeleton.c src/os/win/pa_win_hostapis.c src/os/win/pa_win_util.c src/os/win/pa_win_waveformat.c src/os/win/pa_win_coinitialize.c src/hostapi/asio/ASIOSDK/common/asio.cpp src/hostapi/asio/ASIOSDK/common/combase.cpp src/hostapi/asio/ASIOSDK/common/debugmessage.cpp src/hostapi/asio/ASIOSDK/common/register.cpp src/hostapi/asio/ASIOSDK/host/ASIOConvertSamples.cpp src/hostapi/asio/ASIOSDK/host/asiodrivers.cpp src/hostapi/asio/ASIOSDK/host/pc/asiolist.cpp src/hostapi/asio/iasiothiscallresolver.cpp src/hostapi/asio/pa_asio.cpp src/hostapi/wasapi/pa_win_wasapi.c ''') portAudio = commonEnvironment.SharedLibrary('portaudio', portAudioSources) ########################################################################## === STEP 11 === 4 --- Update the PortMidi library http://portmedia.sourceforge.net from SVN and build it with this SConstruct: ''' MinGW SConstruct for PortMidi Michael Gogins ''' print __doc__ print import os import string import sys import traceback commonEnvironment = Environment(ENV = os.environ, tools = ['mingw', 'swig', 'javac', 'jar']) commonEnvironment.Append(CFLAGS = Split('-O2 -g ')) commonEnvironment.Append(CPPFLAGS = Split(''' -DWIN32 -D_WIN32 -DWINDOWS ''')) commonEnvironment.Append(CPPPATH = Split(''' . pm_win pm_common porttime ''')) commonEnvironment.Append(LIBS=Split(''' setupapi kernel32 user32 gdi32 winspool comdlg32 advapi32 shell32 ole32 oleaut32 uuid odbc32 odbccp32 winmm strmiids ''')) commonEnvironment.Append(LIBPATH='.') commonEnvironment.Append(SHLINKFLAGS = Split('-mwindows -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc')) portMidiSources = Split(''' pm_common/pmutil.c pm_common/portmidi.c pm_win/pmwin.c pm_win/pmwinmm.c ''') portTimeSources = Split(''' porttime/porttime.c porttime/ptwinmm.c ''') portMidiTestSources = Split(''' pm_test/test.c ''') porttime = commonEnvironment.SharedLibrary('porttime', portTimeSources) portMidiEnvironment = commonEnvironment.Copy() portMidiEnvironment.Append(LIBS='porttime') portmidi = portMidiEnvironment.SharedLibrary('portmidi', portMidiSources) portMidiTestEnvironment = commonEnvironment.Copy() portMidiTestEnvironment.Append(LIBS=Split('portmidi porttime')) test = portMidiTestEnvironment.Program('test', portMidiTestSources) Depends(portmidi, porttime) Depends(test, portmidi) ########################### --- Run the test program to ensure that the build works. === STEP 12 === --- create a file PythonXX/Lib/distutils/distutils.cfg with these lines in it: [build] compiler = mingw32 *** For Python 2.5, comment line 428 to 434 in Python25/include/pyconfig.py === STEP 13 === --- Download pyo sources from svn and build it with: python setup.py install