muse for windows

MusE is a DAW for Linux with both MIDI and Audio editing. https://muse-sequencer.github.io

Moderators: MattKingUSA, khz, spamatica

aquilarubra
Established Member
Posts: 52
Joined: Sat Nov 24, 2018 8:12 pm

muse for windows

Post by aquilarubra »

Hi, I am looking into compiling MusE for Windows. If there is some collective effort, I think it is well possible to do.

So far, I did this: Prepared a MSYS2/mingw environment on Windows.

Created a custom compile_muse.sh (compile_muse_mingw.sh).

Now, there are some functions that are Linux specific and need to be changed throughout the code. I advise the maintainer to do so, for more cross-compatibility.

exp10(what_it_is) needs to be changed to pow(10, what_it_is). For example, I found:

muse3\muse\widgets\mmath.cpp

fr = exp10(lx - p10);
fr = pow(10, (lx - p10));

rv = fr * exp10(p10);
rv = fr * pow(10, (p10));



muse3\muse\widgets\scldiv.cpp

firstTick = exp10(lFirst);
firstTick = pow(10, lFirst);

lastTick = exp10(lLast);
lastTick = pow(10, lLast);

val = d_majMarks[0] / exp10(d_majStep);
val = d_majMarks[0] / pow(10, d_majStep);

minFactor = MusECore::qwtMax(exp10(minStep), 10.0);
minFactor = MusECore::qwtMax(pow(10, minStep), 10.0);

val = firstTick / exp10(d_majStep);
val = firstTick / pow(10, d_majStep);



muse3\muse\widgets\spinboxFP.cpp

double div = exp10(decimals());
double div = pow(10, decimals());

double step = 1.0 / exp10(val);
double step = 1.0 / pow(10, val);

int div = int(exp10(_decimals));
int div = int(pow(10, _decimals));

double div = int(exp10(_decimals));
double div = int(pow(10, _decimals));


At this point, MusE will run cmake correctly (some libraries won't be included, but I will get on that later, when the core MusE will compile) and will compile to about 25%.

Now, I am investigating the next steps. There are Posix calls that need to be replaced or rewritten, as they are not available on Windows systems (probably, Mac either). The includes to sys/wait.h, sys/resources.h, etc., need to be addressed. I will isolate the functions that are needed and let's cross fingers.
Attachments
compile_muse_mingw.sh.txt
(1.37 KiB) Downloaded 100 times
aquilarubra
Established Member
Posts: 52
Joined: Sat Nov 24, 2018 8:12 pm

Re: muse for windows

Post by aquilarubra »

So far, I got good results. I could add _aligned_malloc instructions to replace posix_memalign. For example:

lv2host.cpp

Code: Select all

#ifdef _WIN32
   state->pluginCVPorts = (float **) _aligned_malloc(16, sizeof(float *) * numAllPorts);
   if(state->pluginCVPorts == NULL)
   {
      fprintf(stderr, "ERROR: LV2Synth::lv2state_PostInstantiate: _aligned_malloc returned error: NULL. Aborting!\n");
      abort();
   }
#else
   int rv = posix_memalign((void **)&state->pluginCVPorts, 16, sizeof(float *) * numAllPorts);
   if(rv != 0)
   {
      fprintf(stderr, "ERROR: LV2Synth::lv2state_PostInstantiate: posix_memalign returned error:%d. Aborting!\n", rv);
      abort();
   }
#endif
It's a few decades I don't write C code. So, somebody can check if I used the correct syntax, but I think it should work.

Once I got compilation to 100%, but it failed in the last step.

There is one fork() and waitpid() that need to be replaced. Any idea on that? I see the functions right in the cpp files that make the obj, so it's not clear.

Code: Select all

Built target simpler_plugingui
F:/msys64/usr/src/muse/muse3/muse/waveedit/wavecanvas.cpp: In member function 'void MusEGui::WaveCanvas::editExternal(unsigned int, unsigned int, unsigned int, float**, unsigned int)':
F:/msys64/usr/src/muse/muse3/muse/waveedit/wavecanvas.cpp:2449:17: error: 'fork' was not declared in this scope
       int pid = fork();
                 ^~~~
F:/msys64/usr/src/muse/muse3/muse/waveedit/wavecanvas.cpp:2449:17: note: suggested alternative: 'xorg'
       int pid = fork();
                 ^~~~
                 xorg
F:/msys64/usr/src/muse/muse3/muse/waveedit/wavecanvas.cpp:2467:13: error: 'waitpid' was not declared in this scope
             waitpid(pid, &status, 0);
             ^~~~~~~
F:/msys64/usr/src/muse/muse3/muse/waveedit/wavecanvas.cpp:2467:13: note: suggested alternative: 'getpid'
             waitpid(pid, &status, 0);
             ^~~~~~~
             getpid
F:/msys64/usr/src/muse/muse3/muse/waveedit/wavecanvas.cpp:2469:17: error: 'WEXITSTATUS' was not declared in this scope
             if( WEXITSTATUS(status) != 0 ){
                 ^~~~~~~~~~~
F:/msys64/usr/src/muse/muse3/muse/waveedit/wavecanvas.cpp:2469:17: note: suggested alternative: 'PNTSTATUS'
             if( WEXITSTATUS(status) != 0 ){
                 ^~~~~~~~~~~
                 PNTSTATUS
mingw32-make[2]: *** [muse\waveedit\CMakeFiles\waveedit.dir\build.make:89: muse/waveedit/CMakeFiles/waveedit.dir/wavecanvas.obj] Error 1

Finally, I often get unresolved symbols and I couldn't understand why yet. Any idea on that?

Code: Select all

CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x81a): undefined reference to `MusECore::Audio::curFrame() const'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x915): undefined reference to `MusECore::PluginIBase::setNativeGeometry(int, int, int, int)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0xb9b): undefined reference to `MusECore::Song::sigDirty()'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0xd9d): undefined reference to `MusECore::Audio::curFrame() const'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0xee7): undefined reference to `MusECore::Plugin::~Plugin()'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x1c49): undefined reference to `MusECore::MidiPort::sendHwCtrlState(MusECore::MidiPlayEvent const&, bool)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x1c9a): undefined reference to `MusECore::AudioTrack::setPluginCtrlVal(int, double)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x208d): undefined reference to `dlclose'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x20df): undefined reference to `MusECore::Pos::frame() const'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x2109): undefined reference to `MusECore::Pos::Pos(unsigned int, bool)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x2125): undefined reference to `MusECore::Pos::tick() const'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x213a): undefined reference to `MusECore::TempoList::tempo(unsigned int) const'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x2a63): undefined reference to `MusEGui::MenuTitleItem::MenuTitleItem(QString const&, QWidget*)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x2a76): undefined reference to `MusEGui::PopupMenu::addAction(QAction*)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x2aa6): undefined reference to `MusEGui::PopupMenu::addAction(QString const&)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x2b4c): undefined reference to `MusEGui::PopupMenu::addAction(QString const&)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x2be7): undefined reference to `MusEGui::MenuTitleItem::MenuTitleItem(QString const&, QWidget*)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x2bfa): undefined reference to `MusEGui::PopupMenu::addAction(QAction*)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x2c28): undefined reference to `MusEGui::PopupMenu::addAction(QString const&)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x2ce7): undefined reference to `MusEGui::PopupMenu::addAction(QString const&)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x2e1d): undefined reference to `MusECore::PluginIBase::PluginIBase()'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x3022): undefined reference to `MusECore::AudioTrack::setPluginCtrlVal(int, double)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x308e): undefined reference to `MusECore::AudioTrack::setPluginCtrlVal(int, double)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x3158): undefined reference to `MusECore::midiControllerType(int)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x3391): undefined reference to `MusECore::midiCtrlName(int, bool)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x33e3): undefined reference to `MusECore::midiControllerType(int)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x38c2): undefined reference to `MusECore::midiControllerType(int)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x38d3): undefined reference to `MusECore::midiControllerType(int)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x38e4): undefined reference to `MusECore::midiControllerType(int)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x398a): undefined reference to `MusECore::AudioTrack::setPluginCtrlVal(int, double)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x438a): undefined reference to `MusECore::Plugin::~Plugin()'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x4a46): undefined reference to `MusECore::Audio::curFrame() const'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x4a91): undefined reference to `MusECore::AudioTrack::recordAutomation(int, double)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x4aae): undefined reference to `MusECore::ControlFifo::put(MusECore::ControlEvent const&)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x4b65): undefined reference to `MusECore::AudioTrack::recordAutomation(int, double)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x6c60): undefined reference to `MusEGui::PopupMenu::PopupMenu(bool)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x6ce2): undefined reference to `MusEGui::PopupMenu::addMenu(QMenu*)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x6d0c): undefined reference to `MusEGui::PopupMenu::PopupMenu(bool)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x6d42): undefined reference to `MusEGui::PopupMenu::addMenu(QMenu*)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x6e3f): undefined reference to `MusEGui::PopupMenu::PopupMenu(bool)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x6ec3): undefined reference to `MusEGui::PopupMenu::addMenu(QMenu*)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x6ef8): undefined reference to `MusEGui::PopupMenu::addAction(QString const&)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x892e): undefined reference to `dlclose'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x8e85): undefined reference to `MusECore::AudioTrack::setPluginCtrlVal(int, double)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x8ec1): undefined reference to `MusECore::ControlFifo::remove()'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x8ee5): undefined reference to `MusECore::ControlFifo::peek(int)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x93aa): undefined reference to `MusECore::MEvent::operator<(MusECore::MEvent const&) const'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x9527): undefined reference to `MusECore::ControlFifo::remove()'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x95ef): undefined reference to `MusECore::ControlFifo::remove()'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x983d): undefined reference to `MusECore::CtrlList::interpolate(int, MusECore::CtrlInterpolate const&)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x9937): undefined reference to `MusECore::CtrlList::getInterpolation(int, bool, MusECore::CtrlInterpolate*)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0xac58): undefined reference to `MusECore::Xml::strTag(int, char const*, QString const&)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0xb24e): undefined reference to `MusECore::CtrlList::CtrlList(int, bool)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0xb262): undefined reference to `MusECore::CtrlListList::add(MusECore::CtrlList*)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0xb27c): undefined reference to `MusECore::CtrlList::setCurVal(double)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0xb6c8): undefined reference to `MusECore::CtrlList::curVal() const'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0xb9c2): undefined reference to `MusECore::PluginIBase::PluginIBase()'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0xbbfd): undefined reference to `MusECore::Synth::Synth(QFileInfo const&, QString, QString, QString, QString, int)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0xdcb3): undefined reference to `MusECore::PluginList::find(QString const&, QString const&) const'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0xdcd0): undefined reference to `MusECore::SynthList::find(QString const&, QString const&) const'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0xe3f0): undefined reference to `MusEPlugin::PluginScanInfoStruct::dump(char const*) const'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0xfc42): undefined reference to `dlopen'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0xfc63): undefined reference to `dlsym'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0xff94): undefined reference to `MusEGui::MenuTitleItem::MenuTitleItem(QString const&, QWidget*)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x8a9): undefined reference to `MusECore::PluginIBase::getNativeGeometry(int*, int*, int*, int*) const'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0xa61): undefined reference to `MusECore::SynthIF::writeConfiguration(int, MusECore::Xml&)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0xa75): undefined reference to `MusECore::SynthIF::readConfiguration(MusECore::Xml&, bool)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0xadc): undefined reference to `MusECore::Plugin::~Plugin()'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text+0x87fa): undefined reference to `MusECore::PluginIBase::~PluginIBase()'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text$_ZNSt8_Rb_treeIN8MusECore13MidiPlayEventES1_St9_IdentityIS1_ESt4lessIS1_ENS0_19audioMPEventRTallocIS1_EEE15_M_insert_equalIRKS1_EESt17_Rb_tree_iteratorIS1_EOT_[_ZNSt8_Rb_treeIN8MusECore13MidiPlayEventES1_St9_IdentityIS1_ESt4lessIS1_ENS0_19audioMPEventRTallocIS1_EEE15_M_insert_equalIRKS1_EESt17_Rb_tree_iteratorIS1_EOT_]+0x47): undefined reference to `MusECore::MEvent::operator<(MusECore::MEvent const&) const'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text$_ZNSt8_Rb_treeIN8MusECore13MidiPlayEventES1_St9_IdentityIS1_ESt4lessIS1_ENS0_19audioMPEventRTallocIS1_EEE15_M_insert_equalIRKS1_EESt17_Rb_tree_iteratorIS1_EOT_[_ZNSt8_Rb_treeIN8MusECore13MidiPlayEventES1_St9_IdentityIS1_ESt4lessIS1_ENS0_19audioMPEventRTallocIS1_EEE15_M_insert_equalIRKS1_EESt17_Rb_tree_iteratorIS1_EOT_]+0x6a): undefined reference to `MusECore::MEvent::operator<(MusECore::MEvent const&) const'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.text$_ZN8MusECore7SynthIF7showGuiEb[_ZN8MusECore7SynthIF7showGuiEb]+0x3e): undefined reference to `MusECore::PluginIBase::showGui(bool)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$_ZTVN8MusECore10LV2SynthIFE[_ZTVN8MusECore10LV2SynthIFE]+0x20): undefined reference to `MusECore::SynthIF::requiredFeatures() const'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$_ZTVN8MusECore10LV2SynthIFE[_ZTVN8MusECore10LV2SynthIFE]+0x28): undefined reference to `MusECore::SynthIF::on() const'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$_ZTVN8MusECore10LV2SynthIFE[_ZTVN8MusECore10LV2SynthIFE]+0x30): undefined reference to `MusECore::SynthIF::setOn(bool)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$_ZTVN8MusECore10LV2SynthIFE[_ZTVN8MusECore10LV2SynthIFE]+0x38): undefined reference to `MusECore::SynthIF::pluginID()'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$_ZTVN8MusECore10LV2SynthIFE[_ZTVN8MusECore10LV2SynthIFE]+0x48): undefined reference to `MusECore::SynthIF::pluginLabel() const'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$_ZTVN8MusECore10LV2SynthIFE[_ZTVN8MusECore10LV2SynthIFE]+0x50): undefined reference to `MusECore::SynthIF::name() const'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$_ZTVN8MusECore10LV2SynthIFE[_ZTVN8MusECore10LV2SynthIFE]+0x58): undefined reference to `MusECore::SynthIF::lib() const'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$_ZTVN8MusECore10LV2SynthIFE[_ZTVN8MusECore10LV2SynthIFE]+0x60): undefined reference to `MusECore::SynthIF::dirPath() const'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$_ZTVN8MusECore10LV2SynthIFE[_ZTVN8MusECore10LV2SynthIFE]+0x68): undefined reference to `MusECore::SynthIF::fileName() const'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$_ZTVN8MusECore10LV2SynthIFE[_ZTVN8MusECore10LV2SynthIFE]+0x70): undefined reference to `MusECore::SynthIF::titlePrefix() const'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$_ZTVN8MusECore10LV2SynthIFE[_ZTVN8MusECore10LV2SynthIFE]+0x78): undefined reference to `MusECore::SynthIF::track()'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$_ZTVN8MusECore10LV2SynthIFE[_ZTVN8MusECore10LV2SynthIFE]+0xc0): undefined reference to `MusECore::PluginIBase::addScheduledControlEvent(unsigned long, double, unsigned int)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$_ZTVN8MusECore10LV2SynthIFE[_ZTVN8MusECore10LV2SynthIFE]+0x110): undefined reference to `MusECore::SynthIF::latency()'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$_ZTVN8MusECore10LV2SynthIFE[_ZTVN8MusECore10LV2SynthIFE]+0x130): undefined reference to `MusECore::PluginIBase::showGui()'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$_ZTVN8MusECore10LV2SynthIFE[_ZTVN8MusECore10LV2SynthIFE]+0x140): undefined reference to `MusECore::PluginIBase::guiVisible() const'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$_ZTVN8MusECore10LV2SynthIFE[_ZTVN8MusECore10LV2SynthIFE]+0x148): undefined reference to `MusECore::PluginIBase::setGeometry(int, int, int, int)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$_ZTVN8MusECore10LV2SynthIFE[_ZTVN8MusECore10LV2SynthIFE]+0x150): undefined reference to `MusECore::PluginIBase::getGeometry(int*, int*, int*, int*) const'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$_ZTVN8MusECore10LV2SynthIFE[_ZTVN8MusECore10LV2SynthIFE]+0x158): undefined reference to `MusECore::PluginIBase::saveGeometry(int, int, int, int)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$_ZTVN8MusECore10LV2SynthIFE[_ZTVN8MusECore10LV2SynthIFE]+0x160): undefined reference to `MusECore::PluginIBase::savedGeometry(int*, int*, int*, int*) const'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$_ZTVN8MusECore10LV2SynthIFE[_ZTVN8MusECore10LV2SynthIFE]+0x190): undefined reference to `MusECore::PluginIBase::saveNativeGeometry(int, int, int, int)'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$_ZTVN8MusECore10LV2SynthIFE[_ZTVN8MusECore10LV2SynthIFE]+0x198): undefined reference to `MusECore::PluginIBase::savedNativeGeometry(int*, int*, int*, int*) const'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$_ZTVN8MusECore10LV2SynthIFE[_ZTVN8MusECore10LV2SynthIFE]+0x230): undefined reference to `MusECore::SynthIF::getMapItem(int, int, int, MusECore::DrumMap&, int) const'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$.refptr._ZN10MusEGlobal7loadLV2E[.refptr._ZN10MusEGlobal7loadLV2E]+0x0): undefined reference to `MusEGlobal::loadLV2'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$.refptr._ZN10MusEGlobal7synthisE[.refptr._ZN10MusEGlobal7synthisE]+0x0): undefined reference to `MusEGlobal::synthis'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$.refptr._ZN10MusEGlobal7pluginsE[.refptr._ZN10MusEGlobal7pluginsE]+0x0): undefined reference to `MusEGlobal::plugins'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$.refptr._ZN10MusEPlugin10pluginListE[.refptr._ZN10MusEPlugin10pluginListE]+0x0): undefined reference to `MusEPlugin::pluginList'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$.refptr._ZN10MusEGlobal12denormalBiasE[.refptr._ZN10MusEGlobal12denormalBiasE]+0x0): undefined reference to `MusEGlobal::denormalBias'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$.refptr._ZN10MusEGlobal10automationE[.refptr._ZN10MusEGlobal10automationE]+0x0): undefined reference to `MusEGlobal::automation'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$.refptr._ZN10MusEGlobal6configE[.refptr._ZN10MusEGlobal6configE]+0x0): undefined reference to `MusEGlobal::config'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$.refptr._ZN10MusEGlobal10sampleRateE[.refptr._ZN10MusEGlobal10sampleRateE]+0x0): undefined reference to `MusEGlobal::sampleRate'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$.refptr._ZTVN8MusECore7SynthIFE[.refptr._ZTVN8MusECore7SynthIFE]+0x0): undefined reference to `vtable for MusECore::SynthIF'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$.refptr._ZN7MusEGui12pianoNewIconE[.refptr._ZN7MusEGui12pianoNewIconE]+0x0): undefined reference to `MusEGui::pianoNewIcon'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$.refptr._ZN8MusECore19audioMPEventRTallocISt13_Rb_tree_nodeINS_13MidiPlayEventEEE4poolE[.refptr._ZN8MusECore19audioMPEventRTallocISt13_Rb_tree_nodeINS_13MidiPlayEventEEE4poolE]+0x0): undefined reference to `MusECore::audioMPEventRTalloc<std::_Rb_tree_node<MusECore::MidiPlayEvent> >::pool'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$.refptr._ZN10MusEGlobal11museProjectE[.refptr._ZN10MusEGlobal11museProjectE]+0x0): undefined reference to `MusEGlobal::museProject'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$.refptr._ZN10MusEGlobal4museE[.refptr._ZN10MusEGlobal4museE]+0x0): undefined reference to `MusEGlobal::muse'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$.refptr._ZN10MusEGlobal8museUserE[.refptr._ZN10MusEGlobal8museUserE]+0x0): undefined reference to `MusEGlobal::museUser'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$.refptr._ZN10MusEGlobal11segmentSizeE[.refptr._ZN10MusEGlobal11segmentSizeE]+0x0): undefined reference to `MusEGlobal::segmentSize'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$.refptr._ZTVN8MusECore6PluginE[.refptr._ZTVN8MusECore6PluginE]+0x0): undefined reference to `vtable for MusECore::Plugin'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$.refptr._ZN10MusEGlobal8debugMsgE[.refptr._ZN10MusEGlobal8debugMsgE]+0x0): undefined reference to `MusEGlobal::debugMsg'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$.refptr._ZN7MusEGui14presetsNewIconE[.refptr._ZN7MusEGui14presetsNewIconE]+0x0): undefined reference to `MusEGui::presetsNewIcon'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$.refptr._ZN10MusEGlobal11audioDeviceE[.refptr._ZN10MusEGlobal11audioDeviceE]+0x0): undefined reference to `MusEGlobal::audioDevice'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$.refptr._ZN10MusEGlobal8tempomapE[.refptr._ZN10MusEGlobal8tempomapE]+0x0): undefined reference to `MusEGlobal::tempomap'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$.refptr._ZN10MusEGlobal11extSyncFlagE[.refptr._ZN10MusEGlobal11extSyncFlagE]+0x0): undefined reference to `MusEGlobal::extSyncFlag'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$.refptr._ZN10MusEGlobal9midiPortsE[.refptr._ZN10MusEGlobal9midiPortsE]+0x0): undefined reference to `MusEGlobal::midiPorts'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$.refptr._ZN10MusEGlobal4songE[.refptr._ZN10MusEGlobal4songE]+0x0): undefined reference to `MusEGlobal::song'
CMakeFiles\lv2host_module.dir/objects.a(lv2host.obj):lv2host.cpp:(.rdata$.refptr._ZN10MusEGlobal5audioE[.refptr._ZN10MusEGlobal5audioE]+0x0): undefined reference to `MusEGlobal::audio'
collect2.exe: error: ld returned 1 exit status
mingw32-make[2]: *** [muse\CMakeFiles\lv2host_module.dir\build.make:113: muse/libmuse_lv2host_module.dll] Error 1
mingw32-make[1]: *** [CMakeFiles\Makefile2:669: muse/CMakeFiles/lv2host_module.dir/all] Error 2
mingw32-make: *** [Makefile:151: all] Error 2
aquilarubra
Established Member
Posts: 52
Joined: Sat Nov 24, 2018 8:12 pm

Re: muse for windows

Post by aquilarubra »

I found the line that fails, giving all the undefined references:

build/muse/CMakeFiles/lv2host_module.dir/link.txt

F:/msys64/mingw64/bin/g++.exe -std=c++11 -Werror=format-security -Wextra -Winvalid-pch -fexceptions -Wall -fPIC -std=c++11 -O2 -fomit-frame-pointer -ffast-math -fno-finite-math-only -Wall -Wextra -fPIC -O3 -DNDEBUG -shared -o libmuse_lv2host_module.dll -Wl,--out-implib,libmuse_lv2host_module.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -Wl,--whole-archive CMakeFiles/lv2host_module.dir/objects.a -Wl,--no-whole-archive @CMakeFiles/lv2host_module.dir/linklibs.rsp
spamatica
Established Member
Posts: 573
Joined: Mon Feb 08, 2010 10:38 am
Has thanked: 80 times
Been thanked: 97 times

Re: muse for windows

Post by spamatica »

Hi aquilaruba,

Great to see you working on this.
Are you familiar with git in general and pull requests specifically?
The best way for you to make changes, that we later hopefully can merge into our code base, is to use pull requests.

For the change exp10 to pow you mention we can probably get by without it but the sooner we get there the better. This change could be a good test for making a pull request.

More info about github specifics can be found here: https://help.github.com/articles/about-pull-requests/
aquilarubra wrote: There is one fork() and waitpid() that need to be replaced. Any idea on that? I see the functions right in the cpp files that make the obj, so it's not clear.
For replacing functions, first place to look is if Qt has a replacement for the required functionality, in the case of fork(), Qt has QProcess, there might already be some parts of this already solved in the platform independence branch.
Finally, I often get unresolved symbols and I couldn't understand why yet. Any idea on that?
Can't help with this specific case but it's probably a good idea remove as many optional modules as possible and focus on getting the base application to build.
The optional modules should be most of the option lines in the CMakeLists.txt file.
Looking at the option list I think you might actually consider turning ON the last option: MODULES_BUILD_STATIC, if I recall correctly it will link everything in one big bang instead of making several dynamic link libaries. The individual dlls probably utilize functions in the other dlls which may require exposing these functions in the dlls for external use. By linking everything at once this works around this problem. (The drawback is that the linking takes substantially longer time, but with a modern computer it should be less of a problem)
... take this last part with a pinch of salt, I may remember things wrongly, was a long time since I tried.
MusE DAW
Tim E. Real
Established Member
Posts: 660
Joined: Sat Sep 15, 2012 12:36 am
Has thanked: 36 times
Been thanked: 105 times

Re: muse for windows

Post by Tim E. Real »

Hi, just a quick note, there's already an issue request for the pow() / exp() changes here:
https://github.com/muse-sequencer/muse/issues/584

I never took care of it or replied to the request.
Tim.
aquilarubra
Established Member
Posts: 52
Joined: Sat Nov 24, 2018 8:12 pm

Re: muse for windows

Post by aquilarubra »

I will have to learn how to use git.

I suspect that the cmake generation of mingw code is a little buggy. I see that libraries are compiled practically in alphabetical order.

Also, many paths were wrong in the build.make files. They used "cd /d" plus a path with wrong slashes: \. They need to be reversed or they are interpreted wrong and the ui files are not generated. And the "/d" flag shouldn't be there. I wrote a Perl script to fix all paths in pertinent files before mingw32-make and now ui files are generated correctly.

A couple of times I got compilation to 100%, but it fails in the last steps with those undefined, and the fork, of course. I think I am very near to successful compilation, but there are the few bits I don't know (those undefined, especially).

There is an inline definition of exp10 somewhere in the code, but I think it makes more sense to use pow everywhere. When I end with my tests, I can try to submit git requests with my changes. Even if it won't compile in mingw yet, it's very close to, and the code will be more cross-platform.

Can somebody modify the fork with qt version?
spamatica
Established Member
Posts: 573
Joined: Mon Feb 08, 2010 10:38 am
Has thanked: 80 times
Been thanked: 97 times

Re: muse for windows

Post by spamatica »

aquilarubra wrote: Can somebody modify the fork with qt version?
Please have a look at the solution in the platform independence branch
Direct link:
https://github.com/muse-sequencer/muse/ ... canvas.cpp
Hopefully it works.
MusE DAW
aquilarubra
Established Member
Posts: 52
Joined: Sat Nov 24, 2018 8:12 pm

Re: muse for windows

Post by aquilarubra »

More progress. The independence branch was useful. I saw also a predefined function to replace posix_malloc. I used _WIN32 defines, instead.

Now compilation stops at 65%.


[ 65%] Building CXX object muse/driver/CMakeFiles/driver.dir/jack.obj
E:/msys64/usr/src/muse/muse3/muse/driver/jack.cpp: In member function 'virtual int MusECore::JackAudioDevice::realtimePriority() const':
E:/msys64/usr/src/muse/muse3/muse/driver/jack.cpp:459:40: error: invalid conversion from 'pthread_t' {aka 'long long unsigned int'} to 'jack_client_t*' {aka '_jack_client*'} [-fpermissive]
pthread_t t = jack_client_thread_id((pthread_t) _client);
^~~~~~~~~~~~~~~~~~~
In file included from E:/msys64/usr/src/muse/muse3/muse/driver/jackaudio.h:27,
from E:/msys64/usr/src/muse/muse3/muse/driver/jack.cpp:45:
E:/msys64/mingw64/include/jack/jack.h:231:60: note: initializing argument 1 of 'void* jack_client_thread_id(jack_client_t*)'
jack_native_thread_t jack_client_thread_id (jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
~~~~~~~~~~~~~~~^~~~~~
E:/msys64/usr/src/muse/muse3/muse/driver/jack.cpp:459:39: error: invalid conversion from 'jack_native_thread_t' {aka 'void*'} to 'pthread_t' {aka 'long long unsigned int'} [-fpermissive]
pthread_t t = jack_client_thread_id((pthread_t) _client);
~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
mingw32-make[2]: *** [muse\driver\CMakeFiles\driver.dir\build.make:109: muse/driver/CMakeFiles/driver.dir/jack.obj] Error 1
mingw32-make[1]: *** [CMakeFiles/Makefile2:1867: muse/driver/CMakeFiles/driver.dir/all] Error 2
mingw32-make: *** [Makefile:151: all] Error 2


This does not seem a mingw issue. Maybe under Linux it is more permissive, but it looks like a bug. Any idea?
aquilarubra
Established Member
Posts: 52
Joined: Sat Nov 24, 2018 8:12 pm

Re: muse for windows

Post by aquilarubra »

I solved that with:

pthread_t t = (pthread_t ) jack_client_thread_id(_client);

Now an issue with muse3/muse/driver/rtctimer.cpp, as it uses the ioctl function. I found nothing in the independence branch to address this. Any idea? Also linux/version.h and few other headers are also not available, obviously.

[ 65%] Building CXX object muse/driver/CMakeFiles/driver.dir/rtctimer.obj
E:/msys64/usr/src/muse/muse3/muse/driver/rtctimer.cpp: In member function 'virtual long unsigned int MusECore::RtcTimer::setTimerFreq(long unsigned int)':
E:/msys64/usr/src/muse/muse3/muse/driver/rtctimer.cpp:101:29: error: 'RTC_IRQP_SET' was not declared in this scope
int rc = ioctl(timerFd, RTC_IRQP_SET, freq);
^~~~~~~~~~~~
E:/msys64/usr/src/muse/muse3/muse/driver/rtctimer.cpp:101:14: error: 'ioctl' was not declared in this scope
int rc = ioctl(timerFd, RTC_IRQP_SET, freq);
^~~~~
E:/msys64/usr/src/muse/muse3/muse/driver/rtctimer.cpp: In member function 'virtual long unsigned int MusECore::RtcTimer::getTimerFreq()':
E:/msys64/usr/src/muse/muse3/muse/driver/rtctimer.cpp:122:29: error: 'RTC_IRQP_READ' was not declared in this scope
int rv = ioctl(timerFd, RTC_IRQP_READ, &freq);
^~~~~~~~~~~~~
E:/msys64/usr/src/muse/muse3/muse/driver/rtctimer.cpp:122:14: error: 'ioctl' was not declared in this scope
int rv = ioctl(timerFd, RTC_IRQP_READ, &freq);
^~~~~
E:/msys64/usr/src/muse/muse3/muse/driver/rtctimer.cpp: In member function 'virtual bool MusECore::RtcTimer::startTimer()':
E:/msys64/usr/src/muse/muse3/muse/driver/rtctimer.cpp:136:24: error: 'RTC_PIE_ON' was not declared in this scope
if (ioctl(timerFd, RTC_PIE_ON, 0) == -1) {
^~~~~~~~~~
E:/msys64/usr/src/muse/muse3/muse/driver/rtctimer.cpp:136:9: error: 'ioctl' was not declared in this scope
if (ioctl(timerFd, RTC_PIE_ON, 0) == -1) {
^~~~~
E:/msys64/usr/src/muse/muse3/muse/driver/rtctimer.cpp: In member function 'virtual bool MusECore::RtcTimer::stopTimer()':
E:/msys64/usr/src/muse/muse3/muse/driver/rtctimer.cpp:149:24: error: 'RTC_PIE_OFF' was not declared in this scope
ioctl(timerFd, RTC_PIE_OFF, 0);
^~~~~~~~~~~
E:/msys64/usr/src/muse/muse3/muse/driver/rtctimer.cpp:149:9: error: 'ioctl' was not declared in this scope
ioctl(timerFd, RTC_PIE_OFF, 0);
^~~~~
mingw32-make[2]: *** [muse\driver\CMakeFiles\driver.dir\build.make:133: muse/driver/CMakeFiles/driver.dir/rtctimer.obj] Error 1
mingw32-make[1]: *** [CMakeFiles/Makefile2:1867: muse/driver/CMakeFiles/driver.dir/all] Error 2
mingw32-make: *** [Makefile:151: all] Error 2
User avatar
khz
Established Member
Posts: 1648
Joined: Thu Apr 17, 2008 6:29 am
Location: German
Has thanked: 42 times
Been thanked: 92 times

Re: muse for windows

Post by khz »

Among other things, please use the code, quote, ... Function. Thank you.

Code: Select all

[code]your code
[/code]
. . . FZ - Does humor belongs in Music?
. . GNU/LINUX@AUDIO ~ /Wiki $ Howto.Info && GNU/Linux Debian installing >> Linux Audio Workstation LAW
  • I don't care about the freedom of speech because I have nothing to say.
aquilarubra
Established Member
Posts: 52
Joined: Sat Nov 24, 2018 8:12 pm

Re: muse for windows

Post by aquilarubra »

Thanks, I was wondering how to do that.

I searched a bit and maybe the best way would be to use QTimer (Qt::PreciseTimer) to replace ioctl. The code in the file should be completely rewritten. Is there anybody comfortable with QT?
spamatica
Established Member
Posts: 573
Joined: Mon Feb 08, 2010 10:38 am
Has thanked: 80 times
Been thanked: 97 times

Re: muse for windows

Post by spamatica »

aquilarubra wrote:Thanks, I was wondering how to do that.

I searched a bit and maybe the best way would be to use QTimer (Qt::PreciseTimer) to replace ioctl. The code in the file should be completely rewritten. Is there anybody comfortable with QT?
Remove the alsatimer.cpp and rtctimer.cpp from the build configuration when building under windows, they will not work.

To give some background, MusE requires a timer to give precise playback of midi. There are implementations for several timers in MusE, the RTC and Alsa timers are unix only. The most simple one is SimpleTimer (well duh) and the platform independence branch has a new timer called QtTimer:
https://github.com/muse-sequencer/muse/ ... ttimer.cpp

Hmm, looking at the implementation I'm not so sure this works. To get further I suggest you use the SimpleTimer until a working replacement can be procured.
MusE DAW
spamatica
Established Member
Posts: 573
Joined: Mon Feb 08, 2010 10:38 am
Has thanked: 80 times
Been thanked: 97 times

Re: muse for windows

Post by spamatica »

After another look at the QtTimer, it might work, actually.
Been meaning to do some MusE things before the holidays are over (: so I'll try to give it a spin in the coming days.
MusE DAW
aquilarubra
Established Member
Posts: 52
Joined: Sat Nov 24, 2018 8:12 pm

Re: muse for windows

Post by aquilarubra »

I am getting this:

Code: Select all

[ 70%] Building CXX object muse/driver/CMakeFiles/driver.dir/qttimer.obj
In file included from E:\msys64\usr\src\muse\muse3\muse\driver\qttimer.cpp:26:
E:\msys64\usr\src\muse\muse3\muse\driver\qttimer.h:55:33: error: expected class-name before ',' token
 class QtTimer : public BaseTimer, public QThread {
                                 ^
E:\msys64\usr\src\muse\muse3\muse\driver\qttimer.cpp: In member function 'virtual int MusECore::QtTimer::initTimer()':
E:\msys64\usr\src\muse\muse3\muse\driver\qttimer.cpp:59:9: error: 'pipe' was not declared in this scope
     if (pipe(filedes) == -1) {
         ^~~~
E:\msys64\usr\src\muse\muse3\muse\driver\qttimer.cpp:59:9: note: suggested alternative: '_pipe'
     if (pipe(filedes) == -1) {
         ^~~~
         _pipe
E:\msys64\usr\src\muse\muse3\muse\driver\qttimer.cpp:63:32: error: 'F_SETFL' was not declared in this scope
     int rv = fcntl(filedes[1], F_SETFL, O_NONBLOCK);
                                ^~~~~~~
E:\msys64\usr\src\muse\muse3\muse\driver\qttimer.cpp:63:41: error: 'O_NONBLOCK' was not declared in this scope
     int rv = fcntl(filedes[1], F_SETFL, O_NONBLOCK);
                                         ^~~~~~~~~~
E:\msys64\usr\src\muse\muse3\muse\driver\qttimer.cpp:63:41: note: suggested alternative: 'ENOTSOCK'
     int rv = fcntl(filedes[1], F_SETFL, O_NONBLOCK);
                                         ^~~~~~~~~~
                                         ENOTSOCK
E:\msys64\usr\src\muse\muse3\muse\driver\qttimer.cpp:63:14: error: 'fcntl' was not declared in this scope
     int rv = fcntl(filedes[1], F_SETFL, O_NONBLOCK);
              ^~~~~
E:\msys64\usr\src\muse\muse3\muse\driver\qttimer.cpp:63:14: note: suggested alternative: 'fcvt'
     int rv = fcntl(filedes[1], F_SETFL, O_NONBLOCK);
              ^~~~~
              fcvt
E:\msys64\usr\src\muse\muse3\muse\driver\qttimer.cpp:67:9: error: 'pipe' was not declared in this scope
     if (pipe(filedes) == -1) {
         ^~~~
E:\msys64\usr\src\muse\muse3\muse\driver\qttimer.cpp:67:9: note: suggested alternative: '_pipe'
     if (pipe(filedes) == -1) {
         ^~~~
         _pipe
mingw32-make[2]: *** [muse\driver\CMakeFiles\driver.dir\build.make:109: muse/driver/CMakeFiles/driver.dir/qttimer.obj] Error 1
mingw32-make[1]: *** [CMakeFiles\Makefile2:1867: muse/driver/CMakeFiles/driver.dir/all] Error 2
mingw32-make: *** [Makefile:151: all] Error 2
spamatica
Established Member
Posts: 573
Joined: Mon Feb 08, 2010 10:38 am
Has thanked: 80 times
Been thanked: 97 times

Re: muse for windows

Post by spamatica »

Seems I have overworked my elbow so can't keep keyboard work up for long at the moment :/ But I poked the code a bit yesterday and I found that I had renamed the base class from Timer to BaseTimer.
Simply changing all BaseTimer to Timer in qttimer.h should take care of that. There are however some other changes to the base class that needs to fixed in QtTimer, most of the arguments and return values are long instead of int and a new argument to the init function.
I got it to compile but had trouble linking, not sure why.
All I can add for the moment, I'll give it another try in a bit.
MusE DAW
Post Reply