diff --git a/.gitignore b/.gitignore index f843c64c..b8680775 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,8 @@ config.log .sconf_temp engine/.github +project/.godot +build/PROJECT.pck +build/PROJECT.x86_64 +build/PROJECT.exe +build.zip diff --git a/build/.gitkeep b/build/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/justfile b/justfile index c8d4ac1a..f13b11e1 100644 --- a/justfile +++ b/justfile @@ -1,10 +1,34 @@ +set export + +BUILD_NAME := "change_me" + +release_template_path_linux := `realpath engine/bin/godot.linuxbsd.template_release.x86_64.llvm` +release_template_path_windows := `realpath engine/bin/godot.windows.template_release.x86_64.llvm` + build: cd engine/ && scons target=editor symbols=yes optimization=debug dev_build=yes linker=mold use_llvm=yes compiledb=yes run: build engine/bin/godot.linuxbsd.editor.dev.x86_64.llvm --editor --path project -initialize-template projectname: - sed -i -e "s/PROJECT/{{projectname}}/g" ./engine/modules/PROJECT/register_types.h ./engine/modules/PROJECT/register_types.cpp ./project/project.godot - mv ./engine/modules/PROJECT ./engine/modules/{{projectname}} +release-linux: build + cd engine/ && scons platform=linuxbsd target=template_release arch=x86_64 linker=mold use_llvm=yes compiledb=yes custom_modules="../modules" + sed -i "s!{path}!{{release_template_path_linux}}!" project/export_presets.cfg + rm -rf build && mkdir build + engine/bin/godot.*.editor.dev.*.llvm --headless --export-release "Linux" project/project.godot && zip build.zip build/* + touch build/.gitkeep + sed -i "s!{{release_template_path_linux}}!{path}!" project/export_presets.cfg + +release-windows: build + cd engine/ && scons platform=windows target=template_release arch=x86_64 linker=mold use_llvm=yes compiledb=yes custom_modules="../modules" + sed -i "s!{path}!{{release_template_path_windows}}!" project/export_presets.cfg + rm -rf build && mkdir build + engine/bin/godot.*.editor.dev.*.llvm --headless --export-release "Windows" project/project.godot && zip build.zip build/* + touch build/.gitkeep + sed -i "s!{{release_template_path_windows}}!{path}!" project/export_presets.cfg + +initialize-template projectname: + sed -i -e "s/PROJECT/{{projectname}}/g" ./modules/PROJECT/register_types.h ./modules/PROJECT/register_types.cpp ./project/project.godot ./project/export_presets.cfg .gitignore + sed "s/change_me/{{projectname}}/" ./justfile + mv ./modules/PROJECT ./modules/{{projectname}} diff --git a/project/export_presets.cfg b/project/export_presets.cfg new file mode 100644 index 00000000..c7ac7659 --- /dev/null +++ b/project/export_presets.cfg @@ -0,0 +1,108 @@ +[preset.0] + +name="Linux" +platform="Linux" +runnable=true +advanced_options=true +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="../build/PROJECT.x86_64" +patches=PackedStringArray() +encryption_include_filters="" +encryption_exclude_filters="" +seed=0 +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.0.options] + +custom_template/debug="" +custom_template/release="{path}" +debug/export_console_wrapper=1 +binary_format/embed_pck=false +texture_format/s3tc_bptc=true +texture_format/etc2_astc=false +binary_format/architecture="x86_64" +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="#!/usr/bin/env bash +export DISPLAY=:0 +unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\" +\"{temp_dir}/{exe_name}\" {cmd_args}" +ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash +kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\") +rm -rf \"{temp_dir}\"" + +[preset.1] + +name="Windows" +platform="Windows Desktop" +runnable=true +advanced_options=false +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="../build/PROJECT.exe" +patches=PackedStringArray() +encryption_include_filters="" +encryption_exclude_filters="" +seed=0 +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.1.options] + +custom_template/debug="" +custom_template/release="{path}" +debug/export_console_wrapper=1 +binary_format/embed_pck=false +texture_format/s3tc_bptc=true +texture_format/etc2_astc=false +binary_format/architecture="x86_64" +codesign/enable=false +codesign/timestamp=true +codesign/timestamp_server_url="" +codesign/digest_algorithm=1 +codesign/description="" +codesign/custom_options=PackedStringArray() +application/modify_resources=true +application/icon="" +application/console_wrapper_icon="" +application/icon_interpolation=4 +application/file_version="" +application/product_version="" +application/company_name="" +application/product_name="" +application/file_description="" +application/copyright="" +application/trademarks="" +application/export_angle=0 +application/export_d3d12=0 +application/d3d12_agility_sdk_multiarch=true +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}' +$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}' +$trigger = New-ScheduledTaskTrigger -Once -At 00:00 +$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries +$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings +Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true +Start-ScheduledTask -TaskName godot_remote_debug +while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 } +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue" +ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue +Remove-Item -Recurse -Force '{temp_dir}'"