How to compile without ALSA

I am on FreeBSD, and there is no ALSA.
Could there be a switch to discard ALSA, as it is only needed for MIDI input?
How do I compile without ALSA?
thanks

Comments

portability

I hacked as far as getting ALSA disabled.

Please, the code should be somehow portable. I have no /proc/cpuinfo on FreeBSD

next:
- I have zip.h in /usr/local/include which is loaded before your zip.h
- I have no log2 function, please add
double log2(double d) {return log(d)/log(2)}
somewhere

Porting to FreeBSD

I cannot port MuseScore to FreeBSD or other systems because i have no access to these systems and therefore cannot test any change. But if you have any patches that allow this i will happily apply them.
Requirement for this patch is that they have no negative effects on the current system.
For example removing the cpuinfo thing and alway compile with one cpu is not acceptable. Also replacing the buildin log2 function by a (less efficient) macro is not acceptable because it is used in a performace critical path.

Missing ALSA is treated as a fatal bug on unix systems. This should be changed for BSD to no fatal (like for APPLE or MINGW).

that's ok, I was trying to

that's ok, I was trying to prepare a FreeBSD port which would include the patches. That could also include a log2 function or some other cpu detection.

But now I run into bigger problems it seems:

[ 9%] Built target fluid
[ 9%] Building CXX object mscore/CMakeFiles/mscore.dir/harmony.o
/data/compile/musescore/port/work/mscore-0.9.3/mscore/mscore/harmony.cpp: In member function 'void Harmony::buildText()':
/data/compile/musescore/port/work/mscore-0.9.3/mscore/mscore/harmony.cpp:770: error: expected primary-expression before 'static'
/data/compile/musescore/port/work/mscore-0.9.3/mscore/mscore/harmony.cpp:770: error: expected `;' before 'static'
gmake[2]: *** [mscore/CMakeFiles/mscore.dir/harmony.o] Error 1


[ 9%] Building CXX object mscore/CMakeFiles/mscore.dir/pa.o
/data/compile/musescore/port/work/mscore-0.9.3/mscore/mscore/pa.cpp:43: error: expected ',' or '...' before '*' token
/data/compile/musescore/port/work/mscore-0.9.3/mscore/mscore/pa.cpp:43: error: ISO C++ forbids declaration of 'PaStreamCallbackTimeInfo' with no type

These errors I don't really understand (yet?).

And why does it include alsa.h despite I have ALSA disabled already?
(have (APPLE OR MINGW OR FREEBSD) in mscore/CMakeLists.txt)

[ 9%] Building CXX object mscore/CMakeFiles/mscore.dir/jackaudio.o
In file included from /data/compile/musescore/port/work/mscore-0.9.3/mscore/mscore/jackaudio.cpp:29:
/data/compile/musescore/port/work/mscore-0.9.3/mscore/mscore/alsa.h:38:28: error: alsa/asoundlib.h: No such file or directory

I have jack, but no ALSA. I guess this combination is not provided for...
It seems that I probably will have to give up.

What compiler you are

What compiler you are using?

The second compiler bug probably means that portaudio.h is wrong (has wrong version?) and does not declare PaStreamCallbackTimeInfo.
Unfortunately JACK works only with ALSA (for midi). This is a bug and i will change that in a later version (probably with JACK midi support).

BTW. you should try to compile the latest svn version.

I havegcc (GCC) 4.2.1

I have
gcc (GCC) 4.2.1 20070719 [FreeBSD]
I could get 4.4.0 for FreeBSD... maybe I need to?

so I would have to disable jack as well

Of course it would be better to take the svn version but I can't make a FreeBSD package out of it

...ok, with gcc 4.4.0 and portaudio 1.9 only one error is left:
mscore/harmony.cpp:770: error: expected primary-expression before 'static'
...I have Qt 4.4.1 btw.

I checked compiling 0.9.3

I checked compiling 0.9.3 with qt4.0.0 and gcc 4.3.2 and had no problem. I cannot see from here what may be wrong with
static const QChar majorSym(0x25b3);
in harmony.cpp. Maybe some macro madness?

funny, but it compiles when I

funny, but it compiles when I take out minor, like this:


void Harmony::buildText()
{
static const QChar majorSym(0x25b3);
/* static const QChar minor(0x2d);*/
static const QChar augmented(0x2b);
static const QChar diminished(0xb0);

so there would be 2 final

so there would be 2 final questions:
- How do I avoid conflict with the zip.h in /usr/local/include (where is the include dir sequence set)?
- What files will be installed where, I didn't find a 0.9.3 package for linux to compare

Syndicate content