if charset == "Unicode" then if stringmode == "WCHAR" then project "OpenMPT" mpt_projectname = "OpenMPT" uuid "37FC32A4-8DDC-4A9C-A30C-62989DD8ACE9" else project "OpenMPT-UTF8" mpt_projectname = "OpenMPT-UTF8" uuid "e89507fa-a251-457e-9957-f6b453c77daf" end else project "OpenMPT-ANSI" mpt_projectname = "OpenMPT-ANSI" uuid "ba66db50-e2f0-4c9e-b650-0cca6c66e1c1" end language "C++" location ( "../../build/" .. mpt_projectpathname ) vpaths { ["*"] = "../../" } dofile "../../build/premake/premake-defaults-EXEGUI.lua" dofile "../../build/premake/premake-defaults.lua" if stringmode == "UTF8" then targetname "OpenMPT-UTF8" elseif charset == "MBCS" then targetname "OpenMPT-ANSI" else targetname "OpenMPT" end filter {} local extincludedirs = { "../../include", "../../include/ancient/api", "../../include/asiomodern/include", "../../include/ASIOSDK2/common", "../../include/flac/include", "../../include/lame/include", "../../include/lhasa/lib/public", "../../include/mpg123/ports/MSVC++", "../../include/mpg123/src/libmpg123", "../../include/nlohmann-json/include", "../../include/ogg/include", "../../include/opus/include", "../../include/opusenc/include", "../../include/opusfile/include", "../../include/portaudio/include", "../../include/rtaudio", "../../include/vorbis/include", "../../include/zlib", } filter { "action:vs*" } includedirs ( extincludedirs ) filter { "not action:vs*" } sysincludedirs ( extincludedirs ) filter {} includedirs { "../../src", "../../common", "../../soundlib", "$(IntDir)/svn_version", "../../build/svn_version", } if _OPTIONS["win10"] then files { "../../mptrack/res/OpenMPT-win10.manifest", } elseif _OPTIONS["win81"] then files { "../../mptrack/res/OpenMPT-win81.manifest", } elseif _OPTIONS["win7"] then files { "../../mptrack/res/OpenMPT-win7.manifest", } end if not _OPTIONS["winxp"] then files { "../../include/asiomodern/include/ASIOModern/*.hpp", } end files { "../../src/mpt/**.cpp", "../../src/mpt/**.hpp", "../../src/openmpt/**.cpp", "../../src/openmpt/**.hpp", "../../common/*.cpp", "../../common/*.h", "../../soundlib/*.cpp", "../../soundlib/*.h", "../../soundlib/plugins/*.cpp", "../../soundlib/plugins/*.h", "../../soundlib/plugins/dmo/*.cpp", "../../soundlib/plugins/dmo/*.h", "../../sounddsp/*.cpp", "../../sounddsp/*.h", "../../unarchiver/*.cpp", "../../unarchiver/*.h", "../../misc/*.cpp", "../../misc/*.h", "../../tracklib/*.cpp", "../../tracklib/*.h", "../../mptrack/*.cpp", "../../mptrack/*.h", "../../mptrack/plugins/*.cpp", "../../mptrack/plugins/*.h", "../../test/*.cpp", "../../test/*.h", "../../pluginBridge/BridgeCommon.h", "../../pluginBridge/BridgeWrapper.cpp", "../../pluginBridge/BridgeWrapper.h", } files { "../../mptrack/mptrack.rc", "../../mptrack/res/*.*", -- resource data files } if _OPTIONS["win10"] then excludes { "../../mptrack/res/OpenMPT-win7.manifest", "../../mptrack/res/OpenMPT-win81.manifest", } elseif _OPTIONS["win81"] then excludes { "../../mptrack/res/OpenMPT-win7.manifest", "../../mptrack/res/OpenMPT-win10.manifest", } elseif _OPTIONS["win7"] then excludes { "../../mptrack/res/OpenMPT-win81.manifest", "../../mptrack/res/OpenMPT-win10.manifest", } else excludes { "../../mptrack/res/OpenMPT-win7.manifest", "../../mptrack/res/OpenMPT-win81.manifest", "../../mptrack/res/OpenMPT-win10.manifest", } end defines { "MPT_BUILD_ENABLE_PCH" } pchsource "../../build/pch/PCH.cpp" pchheader "PCH.h" files { "../../build/pch/PCH.cpp", "../../build/pch/PCH.h" } includedirs { "../../build/pch" } forceincludes { "PCH.h" } defines { "MODPLUG_TRACKER" } dpiawareness "None" largeaddressaware ( true ) characterset(charset) if charset == "Unicode" then else defines { "NO_WARN_MBCS_MFC_DEPRECATION" } end if stringmode == "UTF8" then defines { "MPT_USTRING_MODE_UTF8_FORCE" } end flags { "MFC" } -- work-around https://developercommunity.visualstudio.com/t/link-errors-when-building-mfc-application-with-cla/1617786 if _OPTIONS["clang"] then filter {} filter { "configurations:Debug" } if true then -- _AFX_NO_MFC_CONTROLS_IN_DIALOGS ignoredefaultlibraries { "afxnmcdd.lib" } links { "afxnmcdd.lib" } end if charset == "Unicode" then ignoredefaultlibraries { "uafxcwd.lib", "libcmtd.lib" } links { "uafxcwd.lib", "libcmtd.lib" } else ignoredefaultlibraries { "nafxcwd.lib", "libcmtd.lib" } links { "nafxcwd.lib", "libcmtd.lib" } end filter { "configurations:DebugShared" } if charset == "Unicode" then ignoredefaultlibraries { "mfc140ud.lib", "msvcrtd.lib" } links { "mfc140ud.lib", "msvcrtd.lib" } else ignoredefaultlibraries { "mfc140d.lib", "msvcrtd.lib" } links { "mfc140d.lib", "msvcrtd.lib" } end filter { "configurations:Checked" } if true then -- _AFX_NO_MFC_CONTROLS_IN_DIALOGS ignoredefaultlibraries { "afxnmcd.lib" } links { "afxnmcd.lib" } end if charset == "Unicode" then ignoredefaultlibraries { "uafxcw.lib", "libcmt.lib" } links { "uafxcw.lib", "libcmt.lib" } else ignoredefaultlibraries { "nafxcw.lib", "libcmt.lib" } links { "nafxcw.lib", "libcmt.lib" } end filter { "configurations:CheckedShared" } if charset == "Unicode" then ignoredefaultlibraries { "mfc140u.lib", "msvcrt.lib" } links { "mfc140u.lib", "msvcrt.lib" } else ignoredefaultlibraries { "mfc140.lib", "msvcrt.lib" } links { "mfc140.lib", "msvcrt.lib" } end filter { "configurations:Release" } if true then -- _AFX_NO_MFC_CONTROLS_IN_DIALOGS ignoredefaultlibraries { "afxnmcd.lib" } links { "afxnmcd.lib" } end if charset == "Unicode" then ignoredefaultlibraries { "uafxcw.lib", "libcmt.lib" } links { "uafxcw.lib", "libcmt.lib" } else ignoredefaultlibraries { "nafxcw.lib", "libcmt.lib" } links { "nafxcw.lib", "libcmt.lib" } end filter { "configurations:ReleaseShared" } if charset == "Unicode" then ignoredefaultlibraries { "mfc140u.lib", "msvcrt.lib" } links { "mfc140u.lib", "msvcrt.lib" } else ignoredefaultlibraries { "mfc140.lib", "msvcrt.lib" } links { "mfc140.lib", "msvcrt.lib" } end filter {} end warnings "Extra" links { "ancient", "UnRAR", "zlib", "minizip", "smbPitchShift", "lame", "lhasa", "flac", "mpg123", "ogg", "opus", "opusenc", "opusfile", "portaudio", "r8brain", "rtaudio", "rtmidi", "soundtouch", "vorbis", } filter {} if not _OPTIONS["winxp"] then linkoptions { "/DELAYLOAD:mf.dll", "/DELAYLOAD:mfplat.dll", "/DELAYLOAD:mfreadwrite.dll", -- "/DELAYLOAD:mfuuid.dll", -- static library "/DELAYLOAD:propsys.dll", } end filter { "action:vs*" } files { "../../build/vs/debug/openmpt.natvis", } filter {} prebuildcommands { "..\\..\\build\\svn_version\\update_svn_version_vs_premake.cmd $(IntDir)" } project "OpenMPT-NativeSupport" uuid "563a631d-fe07-47bc-a98f-9fe5b3ebabfa" language "C++" location ( "../../build/" .. mpt_projectpathname ) vpaths { ["*"] = "../../" } mpt_projectname = "OpenMPT-NativeSupport" dofile "../../build/premake/premake-defaults-DLL.lua" dofile "../../build/premake/premake-defaults.lua" includedirs { "../../src", "../../common", "../../include", "../../include/asiomodern/include", "../../include/ASIOSDK2/common", "../../include/nlohmann-json/include", "../../include/portaudio/include", "../../include/rtaudio", "$(IntDir)/svn_version", "../../build/svn_version", } files { "../../include/asiomodern/include/ASIOModern/*.hpp", "../../src/mpt/**.cpp", "../../src/mpt/**.hpp", "../../src/openmpt/**.cpp", "../../src/openmpt/**.hpp", "../../common/*.cpp", "../../common/*.h", "../../misc/*.cpp", "../../misc/*.h", "../../mptrack/wine/*.cpp", "../../mptrack/wine/*.h", } excludes { "../../mptrack/wine/WineWrapper.cpp", } defines { "MODPLUG_TRACKER", "MPT_BUILD_WINESUPPORT" } largeaddressaware ( true ) characterset "Unicode" warnings "Extra" links { "portaudio", "rtaudio", } filter {} prebuildcommands { "..\\..\\build\\svn_version\\update_svn_version_vs_premake.cmd $(IntDir)" } project "OpenMPT-WineWrapper" uuid "f3da2bf5-e84a-4f71-80ab-884594863d3a" language "C" location ( "../../build/" .. mpt_projectpathname ) vpaths { ["*"] = "../../" } mpt_projectname = "OpenMPT-WineWrapper" dofile "../../build/premake/premake-defaults-DLL.lua" dofile "../../build/premake/premake-defaults.lua" includedirs { "../../src", "../../common", "../../include", "$(IntDir)/svn_version", "../../build/svn_version", } files { "../../mptrack/wine/WineWrapper.c", } defines { "MODPLUG_TRACKER", "MPT_BUILD_WINESUPPORT_WRAPPER" } largeaddressaware ( true ) characterset "Unicode" warnings "Extra" links { "OpenMPT-NativeSupport", } filter {} postbuildcommands { "..\\..\\build\\wine\\build_wine_support.cmd $(IntDir) $(OutDir)" }