# sources that shouldn't be compiled for whatever reason exclude_sources = [ ' ! -path "*/Platform/*"', ' ! -path "*/../Common/Network/Sony/*"', ' ! -path "*/../Common/XUI/*"', ' ! -path "*/../Common/zlib/*"', ] # get all those files client_sources = run_command( 'sh', '-c', 'find "' + meson.current_source_dir() + '" \\( -name "*.cpp" -o -name "*.c" \\) ' + ' '.join(exclude_sources), check : true, ).stdout().strip().split('\n') # Common/ sources (previously lived in Minecraft.Client/Build/Common/) common_exclude = [ ' ! -path "*/Network/Sony/*"', ' ! -path "*/XUI/*"', ' ! -path "*/zlib/*"', ' ! -path "*/Media/*"', ' ! -path "*/DummyTexturePack/*"', ] common_sources = run_command( 'sh', '-c', 'find "' + meson.current_source_dir() / '../Common' + '" \\( -name "*.cpp" -o -name "*.c" \\) ' + ' '.join(common_exclude), check : true, ).stdout().strip().split('\n') platform_sources = [] # linux-specific files (everything in Platform/Linux) if host_machine.system() == 'linux' platform_sources += run_command( 'sh', '-c', 'find "' + meson.current_source_dir() / 'Platform/Linux' + '" \\( -name "*.cpp" -o -name "*.c" \\) ', check : true, ).stdout().strip().split('\n') endif executable('Minecraft.Client', client_sources + platform_sources + common_sources, include_directories : include_directories('Build', '..'), dependencies : [ render_dep, input_dep, profile_dep, storage_dep, world_dep, gl_dep, glu_dep, glfw_dep, thread_dep, dl_dep, dependency('zlib'), ], cpp_args : global_cpp_args + global_cpp_defs + [ '-DUNICODE', '-D_UNICODE', '-include', meson.current_source_dir() / 'Build/stdafx.h', ], c_args : global_cpp_defs + ['-DUNICODE', '-D_UNICODE'], install : true, install_dir : '' ) # # Assets # asset_dir = meson.current_source_dir() / 'Build/Assets' install_subdir(asset_dir / 'music', install_dir : '') # Need to test on a modified windows build to force trial mode but I'm pretty sure that this is not referenced anywhere even if it should be # install_data(asset_dir / 'levels/TrialLevel.mcs', install_dir : 'Common/Trial') install_subdir(asset_dir / 'res', install_dir : 'Common') install_subdir(asset_dir / 'font', install_dir : 'Common/Media') install_subdir(meson.current_source_dir() / 'Platform/Durango/Sound', install_dir : 'Durango') # install_subdir(meson.current_source_dir() / 'Platform/Windows64Media/DLC', install_dir : 'Windows64Media') install_subdir(meson.current_source_dir() / 'Platform/DurangoMedia/DLC', install_dir : 'Windows64Media') # Use this just for funsies so we get access to more dlc # Need to make this take inputs localisation = custom_target('Minecraft.Client_Localisation', output : 'languages.loc', command : [ 'python3', meson.project_source_root() / 'scripts/pack_loc.py', meson.current_source_dir() / 'Platform/Windows64Media/loc', '@OUTPUT@' ], build_always_stale : true ) colour_table = custom_target('Minecraft.Client_Colour_Table', output : 'HTMLColours.col', input : asset_dir / 'HTMLColours.xml', command : [ 'python3', meson.project_source_root() / 'scripts/build_col.py', '@INPUT@', '@OUTPUT@' ] ) movies_path = meson.current_source_dir() / 'Build/Assets/movies' archive_sources = [ meson.current_source_dir() / 'Platform/Windows64Media/Media/languages.loc', colour_table, asset_dir / 'splashes.txt', asset_dir / 'graphics\SaveChest.png', asset_dir / 'graphics\MinecraftIcon.png', asset_dir / 'graphics\TexturePackIcon.png', meson.current_source_dir() / 'Platform/Windows64Media/Media/Tutorial.pck', meson.current_source_dir() / 'Platform/Windows64Media/Media/skinWin.swf', meson.current_source_dir() / 'Platform/Windows64Media/Media/skinHDWin.swf', meson.current_source_dir() / 'Platform/Windows64Media/Media/DLCOffersMenu480.swf', meson.current_source_dir() / 'Platform/Windows64Media/Media/DLCOffersMenu720.swf', meson.current_source_dir() / 'Platform/Windows64Media/Media/DLCOffersMenu1080.swf', meson.current_source_dir() / 'Platform/Windows64Media/Media/DLCOffersMenuVita.swf' ] archive_sources_movies1080 = [ movies_path / 'skinHDGraphics.swf', movies_path / 'skinHDGraphicsHud.swf', movies_path / 'skinHDGraphicsLabels.swf', movies_path / 'skinHDGraphicsInGame.swf', movies_path / 'skinHD.swf', movies_path / 'skinHDHud.swf', movies_path / 'skinHDLabels.swf', movies_path / 'skinHDInGame.swf', movies_path / 'AnvilMenu1080.swf', movies_path / 'BrewingStandMenu1080.swf', movies_path / 'ChestMenu1080.swf', movies_path / 'ChestLargeMenu1080.swf', movies_path / 'ComponentLogo1080.swf', movies_path / 'ComponentLogoSplit1080.swf', movies_path / 'Controls1080.swf', movies_path / 'ControlsRemotePlay1080.swf', movies_path / 'CreateWorldMenu1080.swf', movies_path / 'CreativeMenu1080.swf', movies_path / 'Credits1080.swf', movies_path / 'Crafting2x2Menu1080.swf', movies_path / 'Crafting3x3Menu1080.swf', movies_path / 'DeathMenu1080.swf', movies_path / 'DebugCreateSchematic1080.swf', movies_path / 'DebugMenu1080.swf', movies_path / 'DebugOptionsMenu1080.swf', movies_path / 'DebugSetCamera1080.swf', movies_path / 'DebugUIConsoleComponent1080.swf', movies_path / 'DebugUIMarketingGuide1080.swf', movies_path / 'DLCMainMenu1080.swf', movies_path / 'DispenserMenu1080.swf', movies_path / 'EnchantingMenu1080.swf', movies_path / 'EndPoem1080.swf', movies_path / 'EULA1080.swf', movies_path / 'FullscreenProgress1080.swf', movies_path / 'FurnaceMenu1080.swf', movies_path / 'HelpAndOptionsMenu1080.swf', movies_path / 'HowToPlay1080.swf', movies_path / 'HowToPlayMenu1080.swf', movies_path / 'HUD1080.swf', movies_path / 'InGameHostOptions1080.swf', movies_path / 'InGameInfoMenu1080.swf', movies_path / 'InGamePlayerOptions1080.swf', movies_path / 'InGameTeleportMenu1080.swf', movies_path / 'Intro1080.swf', movies_path / 'InventoryMenu1080.swf', movies_path / 'JoinMenu1080.swf', movies_path / 'LoadOrJoinMenu1080.swf', movies_path / 'LaunchMoreOptionsMenu1080.swf', movies_path / 'LeaderboardMenu1080.swf', movies_path / 'LoadMenu1080.swf', movies_path / 'MainMenu1080.swf', movies_path / 'MenuBackground1080.swf', movies_path / 'MessageBox1080.swf', movies_path / 'NewUpdateMessage1080.swf', movies_path / 'Panorama1080.swf', movies_path / 'PauseMenu1080.swf', movies_path / 'PressStartToPlay1080.swf', movies_path / 'QuadrantSignin1080.swf', movies_path / 'ReinstallMenu1080.swf', movies_path / 'SaveMenu1080.swf', movies_path / 'SaveMessage1080.swf', movies_path / 'SettingsMenu1080.swf', movies_path / 'SettingsAudioMenu1080.swf', movies_path / 'SettingsControlMenu1080.swf', movies_path / 'SettingsGraphicsMenu1080.swf', movies_path / 'SettingsOptionsMenu1080.swf', movies_path / 'SettingsUIMenu1080.swf', movies_path / 'SignEntryMenu1080.swf', movies_path / 'SkinSelectMenu1080.swf', movies_path / 'Timer1080.swf', movies_path / 'ToolTips1080.swf', movies_path / 'TradingMenu1080.swf', movies_path / 'TutorialPopup1080.swf', movies_path / 'AnvilMenuSplit1080.swf', movies_path / 'BrewingStandMenuSplit1080.swf', movies_path / 'ChestMenuSplit1080.swf', movies_path / 'ChestLargeMenuSplit1080.swf', movies_path / 'ControlsSplit1080.swf', movies_path / 'Crafting2x2MenuSplit1080.swf', movies_path / 'Crafting3x3MenuSplit1080.swf', movies_path / 'CreativeMenuSplit1080.swf', movies_path / 'DeathMenuSplit1080.swf', movies_path / 'DispenserMenuSplit1080.swf', movies_path / 'EnchantingMenuSplit1080.swf', movies_path / 'FurnaceMenuSplit1080.swf', movies_path / 'FullscreenProgressSplit1080.swf', movies_path / 'HelpAndOptionsMenuSplit1080.swf', movies_path / 'HowToPlaySplit1080.swf', movies_path / 'HowToPlayMenuSplit1080.swf', movies_path / 'HUDSplit1080.swf', movies_path / 'InGameHostOptionsSplit1080.swf', movies_path / 'InGameInfoMenuSplit1080.swf', movies_path / 'InGameTeleportMenuSplit1080.swf', movies_path / 'InGamePlayerOptionsSplit1080.swf', movies_path / 'InventoryMenuSplit1080.swf', movies_path / 'MessageBoxSplit1080.swf', movies_path / 'PanoramaSplit1080.swf', movies_path / 'PauseMenuSplit1080.swf', movies_path / 'ReinstallMenuSplit1080.swf', movies_path / 'SettingsAudioMenuSplit1080.swf', movies_path / 'SettingsControlMenuSplit1080.swf', movies_path / 'SettingsGraphicsMenuSplit1080.swf', movies_path / 'SettingsMenuSplit1080.swf', movies_path / 'SettingsOptionsMenuSplit1080.swf', movies_path / 'SettingsUIMenuSplit1080.swf', movies_path / 'SignEntryMenuSplit1080.swf', movies_path / 'SkinSelectMenuSplit1080.swf', movies_path / 'TimerSplit1080.swf', movies_path / 'ToolTipsSplit1080.swf', movies_path / 'TradingMenuSplit1080.swf', movies_path / 'TutorialPopupSplit1080.swf', movies_path / 'Keyboard1080.swf', movies_path / 'KeyboardSplit1080.swf' ] archive_sources_movies720 = [ movies_path / 'skinGraphics.swf', movies_path / 'skinGraphicsHud.swf', movies_path / 'skinGraphicsLabels.swf', movies_path / 'skinGraphicsInGame.swf', movies_path / 'skin.swf', movies_path / 'skinHud.swf', movies_path / 'skinLabels.swf', movies_path / 'skinInGame.swf', movies_path / 'AnvilMenu720.swf', movies_path / 'BrewingStandMenu720.swf', movies_path / 'ChestMenu720.swf', movies_path / 'ChestLargeMenu720.swf', movies_path / 'ComponentLogo720.swf', movies_path / 'Controls720.swf', movies_path / 'CreateWorldMenu720.swf', movies_path / 'CreativeMenu720.swf', movies_path / 'Credits720.swf', movies_path / 'Crafting2x2Menu720.swf', movies_path / 'Crafting3x3Menu720.swf', movies_path / 'DeathMenu720.swf', movies_path / 'DebugCreateSchematic720.swf', movies_path / 'DebugMenu720.swf', movies_path / 'DebugOptionsMenu720.swf', movies_path / 'DebugSetCamera720.swf', movies_path / 'DebugUIConsoleComponent720.swf', movies_path / 'DebugUIMarketingGuide720.swf', movies_path / 'DLCMainMenu720.swf', movies_path / 'DispenserMenu720.swf', movies_path / 'EnchantingMenu720.swf', movies_path / 'EndPoem720.swf', movies_path / 'EULA720.swf', movies_path / 'FullscreenProgress720.swf', movies_path / 'FurnaceMenu720.swf', movies_path / 'HelpAndOptionsMenu720.swf', movies_path / 'HowToPlay720.swf', movies_path / 'HowToPlayMenu720.swf', movies_path / 'HUD720.swf', movies_path / 'InGameHostOptions720.swf', movies_path / 'InGameInfoMenu720.swf', movies_path / 'InGamePlayerOptions720.swf', movies_path / 'InGameTeleportMenu720.swf', movies_path / 'Intro720.swf', movies_path / 'InventoryMenu720.swf', movies_path / 'JoinMenu720.swf', movies_path / 'LoadOrJoinMenu720.swf', movies_path / 'LaunchMoreOptionsMenu720.swf', movies_path / 'LeaderboardMenu720.swf', movies_path / 'LoadMenu720.swf', movies_path / 'MainMenu720.swf', movies_path / 'MenuBackground720.swf', movies_path / 'MessageBox720.swf', movies_path / 'NewUpdateMessage720.swf', movies_path / 'Panorama720.swf', movies_path / 'PauseMenu720.swf', movies_path / 'PressStartToPlay720.swf', movies_path / 'QuadrantSignin720.swf', movies_path / 'ReinstallMenu720.swf', movies_path / 'SaveMessage720.swf', movies_path / 'SettingsMenu720.swf', movies_path / 'SettingsAudioMenu720.swf', movies_path / 'SettingsControlMenu720.swf', movies_path / 'SettingsGraphicsMenu720.swf', movies_path / 'SettingsOptionsMenu720.swf', movies_path / 'SettingsUIMenu720.swf', movies_path / 'SignEntryMenu720.swf', movies_path / 'SkinSelectMenu720.swf', movies_path / 'Timer720.swf', movies_path / 'ToolTips720.swf', movies_path / 'TradingMenu720.swf', movies_path / 'TutorialPopup720.swf', movies_path / 'AnvilMenuSplit720.swf', movies_path / 'BrewingStandMenuSplit720.swf', movies_path / 'ChestMenuSplit720.swf', movies_path / 'ChestLargeMenuSplit720.swf', movies_path / 'ControlsSplit720.swf', movies_path / 'ComponentLogoSplit720.swf', movies_path / 'Crafting2x2MenuSplit720.swf', movies_path / 'Crafting3x3MenuSplit720.swf', movies_path / 'CreativeMenuSplit720.swf', movies_path / 'DeathMenuSplit720.swf', movies_path / 'DispenserMenuSplit720.swf', movies_path / 'EnchantingMenuSplit720.swf', movies_path / 'FurnaceMenuSplit720.swf', movies_path / 'FullscreenProgressSplit720.swf', movies_path / 'GamertagSplit720.swf', movies_path / 'HelpAndOptionsMenuSplit720.swf', movies_path / 'HowToPlaySplit720.swf', movies_path / 'HowToPlayMenuSplit720.swf', movies_path / 'HUDSplit720.swf', movies_path / 'InGameHostOptionsSplit720.swf', movies_path / 'InGameInfoMenuSplit720.swf', movies_path / 'InGamePlayerOptionsSplit720.swf', movies_path / 'InventoryMenuSplit720.swf', movies_path / 'MessageBoxSplit720.swf', movies_path / 'PanoramaSplit720.swf', movies_path / 'PauseMenuSplit720.swf', movies_path / 'ReinstallMenuSplit720.swf', movies_path / 'SettingsAudioMenuSplit720.swf', movies_path / 'SettingsControlMenuSplit720.swf', movies_path / 'SettingsGraphicsMenuSplit720.swf', movies_path / 'SettingsMenuSplit720.swf', movies_path / 'SettingsOptionsMenuSplit720.swf', movies_path / 'SettingsUIMenuSplit720.swf', movies_path / 'SignEntryMenuSplit720.swf', movies_path / 'InGameTeleportMenuSplit720.swf', movies_path / 'ToolTipsSplit720.swf', movies_path / 'TradingMenuSplit720.swf', movies_path / 'TrialExitUpsell720.swf', movies_path / 'TutorialPopupSplit720.swf', movies_path / 'SkinSelectMenuSplit720.swf' ] archive_sources_movies480 = [ movies_path / 'AnvilMenu480.swf', movies_path / 'BrewingStandMenu480.swf', movies_path / 'ChestLargeMenu480.swf', movies_path / 'ChestMenu480.swf', movies_path / 'Controls480.swf', movies_path / 'ComponentLogo480.swf', movies_path / 'Crafting2x2Menu480.swf', movies_path / 'Crafting3x3Menu480.swf', movies_path / 'CreateWorldMenu480.swf', movies_path / 'CreativeMenu480.swf', movies_path / 'Credits480.swf', movies_path / 'DeathMenu480.swf', movies_path / 'DispenserMenu480.swf', movies_path / 'DLCMainMenu480.swf', movies_path / 'EnchantingMenu480.swf', movies_path / 'EndPoem480.swf', movies_path / 'EULA480.swf', movies_path / 'FullscreenProgress480.swf', movies_path / 'FurnaceMenu480.swf', movies_path / 'HelpAndOptionsMenu480.swf', movies_path / 'HowToPlay480.swf', movies_path / 'HowToPlayMenu480.swf', movies_path / 'HUD480.swf', movies_path / 'InGameHostOptions480.swf', movies_path / 'InGameInfoMenu480.swf', movies_path / 'InGamePlayerOptions480.swf', movies_path / 'Intro480.swf', movies_path / 'InventoryMenu480.swf', movies_path / 'JoinMenu480.swf', movies_path / 'LaunchMoreOptionsMenu480.swf', movies_path / 'LeaderboardMenu480.swf', movies_path / 'LoadMenu480.swf', movies_path / 'LoadOrJoinMenu480.swf', movies_path / 'MainMenu480.swf', movies_path / 'MenuBackground480.swf', movies_path / 'MessageBox480.swf', movies_path / 'NewUpdateMessage480.swf', movies_path / 'Panorama480.swf', movies_path / 'PauseMenu480.swf', movies_path / 'PressStartToPlay480.swf', movies_path / 'ReinstallMenu480.swf', movies_path / 'SaveMessage480.swf', movies_path / 'SettingsAudioMenu480.swf', movies_path / 'SettingsControlMenu480.swf', movies_path / 'SettingsGraphicsMenu480.swf', movies_path / 'SettingsMenu480.swf', movies_path / 'SettingsOptionsMenu480.swf', movies_path / 'SettingsUIMenu480.swf', movies_path / 'SignEntryMenu480.swf', movies_path / 'SkinSelectMenu480.swf', movies_path / 'InGameTeleportMenu480.swf', movies_path / 'Timer480.swf', movies_path / 'ToolTips480.swf', movies_path / 'TradingMenu480.swf', movies_path / 'TrialExitUpsell480.swf', movies_path / 'TutorialPopup480.swf' ] archive_sources_moviesVita = [ movies_path / 'skinGraphics.swf', movies_path / 'skinGraphicsHud.swf', movies_path / 'skinGraphicsLabels.swf', movies_path / 'skinGraphicsInGame.swf', movies_path / 'skin.swf', movies_path / 'skinHud.swf', movies_path / 'skinLabels.swf', movies_path / 'skinInGame.swf', movies_path / 'AnvilMenuVita.swf', movies_path / 'BrewingStandMenuVita.swf', movies_path / 'ChestLargeMenuVita.swf', movies_path / 'ChestMenuVita.swf', movies_path / 'ComponentLogoVita.swf', movies_path / 'ControlsVita.swf', movies_path / 'ControlsTVVita.swf', movies_path / 'Crafting2x2MenuVita.swf', movies_path / 'Crafting3x3MenuVita.swf', movies_path / 'CreateWorldMenuVita.swf', movies_path / 'CreativeMenuVita.swf', movies_path / 'CreditsVita.swf', movies_path / 'DeathMenuVita.swf', movies_path / 'DispenserMenuVita.swf', movies_path / 'DLCMainMenuVita.swf', movies_path / 'EnchantingMenuVita.swf', movies_path / 'EndPoemVita.swf', movies_path / 'EULAVita.swf', movies_path / 'FullscreenProgressVita.swf', movies_path / 'FurnaceMenuVita.swf', movies_path / 'HelpAndOptionsMenuVita.swf', movies_path / 'HowToPlayMenuVita.swf', movies_path / 'HowToPlayVita.swf', movies_path / 'HUDVita.swf', movies_path / 'InGameHostOptionsVita.swf', movies_path / 'InGameInfoMenuVita.swf', movies_path / 'InGamePlayerOptionsVita.swf', movies_path / 'InGameTeleportMenuVita.swf', movies_path / 'IntroVita.swf', movies_path / 'InventoryMenuVita.swf', movies_path / 'JoinMenuVita.swf', movies_path / 'LaunchMoreOptionsMenuVita.swf', movies_path / 'LeaderboardMenuVita.swf', movies_path / 'LoadMenuVita.swf', movies_path / 'LoadOrJoinMenuVita.swf', movies_path / 'MainMenuVita.swf', movies_path / 'MenuBackgroundVita.swf', movies_path / 'MessageBoxVita.swf', movies_path / 'NewUpdateMessageVita.swf', movies_path / 'PanoramaVita.swf', movies_path / 'PauseMenuVita.swf', movies_path / 'PressStartToPlayVita.swf', movies_path / 'ReinstallMenuVita.swf', movies_path / 'SaveMessageVita.swf', movies_path / 'SettingsAudioMenuVita.swf', movies_path / 'SettingsControlMenuVita.swf', movies_path / 'SettingsGraphicsMenuVita.swf', movies_path / 'SettingsMenuVita.swf', movies_path / 'SettingsOptionsMenuVita.swf', movies_path / 'SettingsUIMenuVita.swf', movies_path / 'SignEntryMenuVita.swf', movies_path / 'SkinSelectMenuVita.swf', movies_path / 'TimerVita.swf', movies_path / 'ToolTipsVita.swf', movies_path / 'TradingMenuVita.swf', movies_path / 'TutorialPopupVita.swf', movies_path / 'DebugCreateSchematic720.swf', movies_path / 'DebugMenu720.swf', movies_path / 'DebugOptionsMenu720.swf', movies_path / 'DebugSetCamera720.swf', movies_path / 'DebugUIConsoleComponent720.swf', movies_path / 'DebugUIMarketingGuide720.swf' ] custom_target('Minecraft.Client_Archive', output : 'MediaWindows64.arc', input : archive_sources + archive_sources_movies1080 + archive_sources_movies720, command : [ 'python3', meson.project_source_root() / 'scripts/pack_arc.py', '@OUTPUT@', '@INPUT@' ], install : true, install_dir : 'Common/Media', build_subdir : 'Common/Media', build_by_default : true, )