1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
|
$Id: README 2384 2009-04-27 11:26:14Z ensonic $
= quick info =
Please turn you browser to http://www.buzztard.org to learn what this project
is about. Buzztard is free software and distributed under the LGPL.
= intro =
The libbml is a library that loads buzz machines from the windows music
composer Buzz, so that Linux/Unix applications can use them.
It also supports open source buzz machines on any platform.
= building =
Please note that loading the windows dlls only works on x86 systems.
If one build on a non x86 system, the library can only support native
buzzmachines (see buzzmachines module in same svn).
= installing localy =
Use following options for ./autogen.sh or ./configure
--prefix=$HOME/buzztard
when installing the package to e.g. $HOME/buzztard remember to set these
environment variables:
libraries:
export LD_LIBRARY_PATH=$HOME/buzztard/lib:$LD_LIBRARY_PATH
pkg-config:
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$HOME/buzztard/lib/pkgconfig"
= installing in /usr/local =
The default value for the --prefix configure option is /usr/local. Also in that
case the variables mentioned in the last example need to be exported.
= machines =
Export the path we you have the machine, e.g.:
export BML_PATH=$HOME/buzztard/lib/Gear:$HOME/buzztard/lib/Gear/Effects:\
$HOME/buzztard/lib/Gear/Generators
I have the native ones in Gear and the windows ones under Gear/Effects and Gear/
Generators.
= windows machines =
The emulation uses some parts of wine at runtime. It needs kernel32.dll, e.g.
kernel32.dll.so, MFC42.DLL, MSVCRT.DLL.
The original windows dll should also work.
Then you need to copy the all *.dll libraries from a windows buzz installation
to your LD_LIBARY_PATH. We recommend to copy them to buzztard-prefix/lib/win32.
Next copy the machines. You can e.g. just copy the whole Gear folder to
buzztard-prefix/lib as well.
You might need to fix some machine names (e.g. names with '?' in them).
= usage =
For testing, create a folder 'machines' and put some original buzz machines
in there. After building invoke :
env LD_LIBRARY_PATH="./bml" ./bml/bmltest_info ./machines/mymachine.dll
or alternatively run the testmachine.sh script to probe a whole directory with
machines.
If you have compiled with logging and set BML_DEBUG=1 before running, you'll get
more diagnostics. For even more logging edit dllwraper/wine/win32.c and enable
#define DETAILED_OUT
= building the BuzzMachineLoader.dll =
1) use MS developer studio
2) CC=/usr/local/bin/i386-mingw32-gcc CXX=/usr/local/bin/i386-mingw32-g++ make
^^^ does not work :/
3) ./configure --host=i386-mingw32 ...
cd src/BuzzMachineLoader
Makefile.am: changes
make
make BuzzMachineLoader.dll
// when using fastcall
BuzzMachineLoader.cpp:83: undefined reference to `@_Z8DSP_Initi@4'
// normal symbol
BuzzMachineLoader.cpp:83: undefined reference to `DSP_Init(int)'
// name in lib
> i386-mingw32-nm dsplib.lib | grep DSP_Init
00000000 T ?DSP_Init@@YIXH@Z
00000000 I __imp_?DSP_Init@@YIXH@Z
http://sourceforge.net/project/shownotes.php?release_id=90402
However, the --enable-stdcall-fixup feature (which is on by default) has not yet
been extended to fastcall symbols. That is, an undefined symbol @foo@n will *not*
automatically be resolved to a defined symbol foo.
Maybe a own .def can help:
http://www.digitalmars.com/ctg/win32programming.html
what about using winegcc - e.g.:
winegcc -shared XXX.dll.spec -mnocygwin -o XXX.dll.so abc.o def.o -lole32 -lwinmm -lpthread -luuid
= problems =
== /dev/zero needs to be executable ==
make sure your /dev/zero is executable (needed for mmap() )
== 64 bit builds ==
http://www.x86-64.org/documentation/assembly.html
== missing dlls ==
wget kegel.com/wine/winetricks
sh winetricks mfc42
|