VOGONS


Compiling/building Munt

Topic actions

First post, by HunterZ

User metadata
Rank l33t++
Rank
l33t++

Are there instructions for building Munt on Windows?

The official builds are a bit old, and I have Visual Studio installed.

Reply 1 of 9, by gdjacobs

User metadata
Rank l33t++
Rank
l33t++

Is Munt best built with VC++ or with Mingw-32/64?

All hail the Great Capacitor Brand Finder

Reply 2 of 9, by HunterZ

User metadata
Rank l33t++
Rank
l33t++

I have no idea. That would be good information too.

I guess it's not a huge deal now that I got my MT-32 and SC-88 working with my Windows 10 laptop, but it's nice for those few CM-32 games.

Reply 4 of 9, by HunterZ

User metadata
Rank l33t++
Rank
l33t++

Yeah potentially, if it's not hard.

Reply 5 of 9, by sergm

User metadata
Rank Oldbie
Rank
Oldbie

OK, I'll try to summarise the topic... 😀

I think there is no special build instructions for Windows. The general approach briefly described in the README should work with either Visual Studio, MinGW, MSYS or Cygwin. In short, one starts with getting a not too old CMake and configuring the build (along the way, setting build options and resolving all the necessary dependencies). Upon success, Visual Studio project(s) or Makefile(s) appear, and if the configuration step was correct, the compilation ends up with ready-to-use binaries. There is also a "package" target automatically creates by CMake, but the resulting package usually sucks and requires some additional effort to get a "product quality". Apparently, Linux packages are produced almost ready to use but for other systems this is not generally the case.

I personally see no much difference in performance comparing VS and MinGW builds while MinGW builds just tend to be a little bit bigger (still nothing compared to today's storage), so it seems to be simply a matter of personal preference and experience. Cygwin builds seem to be rather for academic purposes and not for general use cases.

Of course, it's no problem to update the snapshots at the SF page. Although, there were plans to even establish daily/nightly builds, but perhaps those are not of much use. Hopefully, updating the snapshots at some milestones when interesting features appear is enough.

I'm glad to help in case of any further questions.

Reply 6 of 9, by sergm

User metadata
Rank Oldbie
Rank
Oldbie

As for building the Windows Multimedia driver, it's a bit trickier. While a ready to use VS project file is included, the Windows Driver Kit dependency might be difficult to get / install / configure. Having just VS 2012...2015 Express may appear not enough if the necessary include files are not installed. I used to use GRMWDK_EN_7600_1.ISO with VS Express 2008 but it also works with more recent compilers. But now, VS 2015 seems to include all the needed files when installed with default options. And a compiler from VS 2012 and above is preferred to get a 64-bit driver.

Out of pure curiosity, I did get it built with MinGW but it required enough hacking. The WDK include files are not suitable for MinGW, and the latter lacks the necessary definitions of data structures used. So, I don't think this way is a good idea (at least by now).

Reply 7 of 9, by HunterZ

User metadata
Rank l33t++
Rank
l33t++

Thanks!

Dependencies are one of my concerns; do I need to manually download any libraries/headers/SDKs that don't ship with VS2015?

Edit: Yeah, dependencies are going to be a problem:

The C compiler identification is MSVC 19.0.23918.0
The CXX compiler identification is MSVC 19.0.23918.0
Check for working C compiler: E:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe
Check for working C compiler: E:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe -- works
Detecting C compiler ABI info
Detecting C compiler ABI info - done
Check for working CXX compiler: E:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe
Check for working CXX compiler: E:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe -- works
Detecting CXX compiler ABI info
Detecting CXX compiler ABI info - done
Detecting CXX compile features
Detecting CXX compile features - done
Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
CMake Error at C:/Program Files/CMake/share/cmake-3.6/Modules/FindPackageHandleStandardArgs.cmake:148 (message):
Could NOT find GLIB2 (missing: GLIB2_LIBRARY GLIB2_INCLUDE_DIR
GLIB2_CONFIG_INCLUDE_DIR)
Call Stack (most recent call first):
C:/Program Files/CMake/share/cmake-3.6/Modules/FindPackageHandleStandardArgs.cmake:388 (_FPHSA_FAILURE_MESSAGE)
cmake/Modules/FindGLIB2.cmake:32 (find_package_handle_standard_args)
mt32emu_smf2wav/CMakeLists.txt:17 (find_package)


Configuring incomplete, errors occurred!
See also "C:/Users/Ben/Projects/munt/CMakeFiles/CMakeOutput.log".

Reply 8 of 9, by sergm

User metadata
Rank Oldbie
Rank
Oldbie

The list of dependencies needed for a particular build can be derived from the list of components being built. By default, it tries to configure and build everything, and atm these are the library, smf2wav command-line tool and the GUI app. A build option is provided to control whether to build each component. Obviously, the library is built anyway as the other components depend on it. The smf2wav tool also needs GLib2 and the Qt app indeed requires Qt (either Qt4 or Qt5). The Qt app can make use of other libraries as listed in README.txt but they are optional. So, if smf2wav isn't needed, it may be disabled and Qt remains the only requirement.

Despite that CMake is able to search for libraries in default locations, obviously it will fail to find anything "well hidden", and we usually need to add our custom paths to the configuration when using Visual Studio for building. For simplifying the process of configuration, CMake GUI can be used, as it lists all the available build options and facilitates an easy way to set up paths to the library files the build depends on.

Seeing that you use the VS 2015, I assume the Windows driver should be built finely oob.