How to compile without ALSA

• Dec 27, 2008 - 19:31

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?


I hacked as far as getting ALSA disabled.

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

- 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)}

In reply to by kjhdsifd

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).

In reply to by [DELETED] 3

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.

In reply to by kjhdsifd

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.

In reply to by [DELETED] 3

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.

Do you still have an unanswered question? Please log in first to post your question.