Menu

#4 build with -Dlibmt32emu_SHARED=1 fails

closed
nobody
None
HEAD
1
2015-12-19
2015-12-18
No

Hi.

I tried to build munt as shared lib.

cmake . -Dlibmt32emu_SHARED=1
make

[ 35%] Building CXX object mt32emu_smf2wav/CMakeFiles/mt32emu-smf2wav.dir/src/mt32emu-smf2wav.cpp.o
In file included from /home/stas/src/munt/mt32emu_smf2wav/src/mt32emu-smf2wav.cpp:27:0:
/home/stas/src/munt/mt32emu/include/mt32emu/mt32emu.h:52:19: fatal error: Types.h: No such file or directory
compilation terminated.

Moreover, after this you can't easily recover.
If you do
cmake .
without specifying SHARED=1, the build would still
fail until you do "git clean -fd" and re-run cmake.

Discussion

  • Serg M

    Serg M - 2015-12-19

    Hi, Stas

    Please note, that the configuration option libmt32emu_SHARED is still under development and this issue does not relate to 1.5.0 release.

    Setting libmt32emu_SHARED option to true also implies libmt32emu_C_INTERFACE=true by default. This is intentional and aimed to provide well-defined ABI only for shared library builds. Atm, neither smf2wav nor mt32emu-qt can be built with that option set to true without code modification, however. Setting libmt32emu_C_INTERFACE=false along will let you build all the components but the resulting libmt32emu shared object will be compiler-specific.

    As for setting/changing various configuration options, you can either edit CMakeCache.txt file manually or more easily do so using one of the CMake GUI tools.

     
  • Serg M

    Serg M - 2015-12-19

    Ticket moved from /p/munt/bugs/23/

     
  • Serg M

    Serg M - 2015-12-19
    • Group: v1.5.0 --> HEAD
     
  • Stas Sergeev

    Stas Sergeev - 2015-12-19

    Indeed, with libmt32emu_C_INTERFACE=false it builds.
    But I wanted to try out the C interface and see how it
    goes. Good to know it is being developed.
    Btw, there are no hopes for some free replacement
    of the proprietary rom dumps, right?

     
  • Serg M

    Serg M - 2015-12-19

    I think it would be best if I enable C-interface in builds that involve library only (at least for now). This should prevent confusion. There are other build options you can find in CMake GUI that allow you to disable each application component individually, so you'll get proper build of the library only.

    I'm currently unaware whether Roland released any of ROMs for free. The copyright owner is who you need to request about that.

     
  • Serg M

    Serg M - 2015-12-19
    • status: open --> closed
     
  • Stas Sergeev

    Stas Sergeev - 2015-12-19

    I think it would be best if I enable C-interface in builds that involve library only

    Would be nice.

    I'm currently unaware whether Roland released any of ROMs for free.

    I meant maybe someone else recorded the
    similar samples etc. Likely not. :)

     
  • Serg M

    Serg M - 2015-12-19

    It looks impossible to replace original PCM samples with something hand made. The reason is essentially how linear arithmetic works. Many timbres comprise from several partials mixed in various ways, not only PCM ones but also synthesized. This means that replacing PCM samples would definitely break sounding, even in terms of musical correctness. So, the emulation is bound to a set of original ROMs.

     

Log in to post a comment.