Forum rss-feed

Forum

Developers: Building EigenD on Linux

Most Recent

written by: jim


For linux, the build uses the system installed python. You will need the python development
headers and libraries installed. (python-dev on a Debian/Ubuntu distribution) I think the only
other library/headers that will be needed is libiw, for detecting wireless network interfaces.

I've fixed the problem that causes your error above.

We currently use the linux stuff only in a very limited way, and we use an old Ubuntu
distribution. To get a proper Linux port working, the following needs to happen:

1. Fix the shared library visibility declarations (the XXX_DECLSPEC_XXX) macros. Newer
gcc's don't like the ones we have, which were initially put in in all the places Windows needs
them. We implemented them for *nix systems as well to fix some problems with Juce, when
loading plugins that are also implemented with Juce. However, simply sprinkling more
XXX_DECLSPEC's around will break the Windows compile...

This is also what's blocking us from using newer Xcode's. We will get around to it here at
some point, but probably only when we formally drop 10.4 support.

I think the best way to go about it would be to implement macros in the various xxx_exports.h
files called XXX_DECLSPEC_TEMPLATE and XXX_DECLSPEC_INLINECLASS which do
nothing on Windows but are the same as XXX_DECLSPEC_CLASS on Mac and Linux. Then
add them as required.

2. Update the USB driver. The current driver is based around linux's old /proc/bus/usb
which doesn't exist anymore on newer distro's and probably ought to be redone using libusb.

Sound and MIDI should be handled Ok, as Juce supports Linux. EigenD also needs to
get permission for realtime scheduling and memory locking, which is a system configuration
issue.

Patches for linux support will be gratefully received...

jim

written by: fourcheeze

Mon, 4 Jul 2011 19:36:29 +0100 BST

Hi folks,

I've recently acquired a shiny new Linux workstation and I'm attempting to build EigenD on it. I've grabbed the source and the Steinberg bits, however I'm a bit stuck by a couple of things:

1) The README says:

In order to build, you will need the following:

Runtime Files
-------------

You will need to have the stock EigenD installed to get the
runtime support (which is a vanilla Python install) and the
Windows device drivers.

What does that mean for a Linux machine?

2) In any case I thought I would try and make it:

rich@stilton:~/eigenharp/EigenD$ make
scons: Reading SConscript files ...
platform: linux-x86-64 python: /usr/bin/python
clearing /home/rich/eigenharp/EigenD/tmp/stage
clearing /home/rich/eigenharp/EigenD/tmp/pkg
NameError: name 'prereq' is not defined:
File "/home/rich/eigenharp/EigenD/tools/SConstruct", line 43:
SConscript(join(master_env.subst('$TMPDIR'),root,'SConscript.first'))
File "/home/rich/eigenharp/EigenD/tools/packages/SCons/Script/SConscript.py", line 616:
return apply(method, args, kw)
File "/home/rich/eigenharp/EigenD/tools/packages/SCons/Script/SConscript.py", line 553:
return apply(_SConscript, [self.fs,] + files, subst_kw)
File "/home/rich/eigenharp/EigenD/tools/packages/SCons/Script/SConscript.py", line 262:
exec _file_ in call_stack[-1].globals
File "/home/rich/eigenharp/EigenD/SConscript.first", line 49:
master_env.PiPackageCollection('EigenD-gpl',groups=('app',),prereq=prereq)
make: *** [all] Error 2

Am I missing a configuration stage???

Cheers,

Richard


written by: jim

Tue, 5 Jul 2011 11:57:24 +0100 BST


For linux, the build uses the system installed python. You will need the python development
headers and libraries installed. (python-dev on a Debian/Ubuntu distribution) I think the only
other library/headers that will be needed is libiw, for detecting wireless network interfaces.

I've fixed the problem that causes your error above.

We currently use the linux stuff only in a very limited way, and we use an old Ubuntu
distribution. To get a proper Linux port working, the following needs to happen:

1. Fix the shared library visibility declarations (the XXX_DECLSPEC_XXX) macros. Newer
gcc's don't like the ones we have, which were initially put in in all the places Windows needs
them. We implemented them for *nix systems as well to fix some problems with Juce, when
loading plugins that are also implemented with Juce. However, simply sprinkling more
XXX_DECLSPEC's around will break the Windows compile...

This is also what's blocking us from using newer Xcode's. We will get around to it here at
some point, but probably only when we formally drop 10.4 support.

I think the best way to go about it would be to implement macros in the various xxx_exports.h
files called XXX_DECLSPEC_TEMPLATE and XXX_DECLSPEC_INLINECLASS which do
nothing on Windows but are the same as XXX_DECLSPEC_CLASS on Mac and Linux. Then
add them as required.

2. Update the USB driver. The current driver is based around linux's old /proc/bus/usb
which doesn't exist anymore on newer distro's and probably ought to be redone using libusb.

Sound and MIDI should be handled Ok, as Juce supports Linux. EigenD also needs to
get permission for realtime scheduling and memory locking, which is a system configuration
issue.

Patches for linux support will be gratefully received...

jim



Please log in to join the discussions