Skip to content

Instantly share code, notes, and snippets.

@jjmontesl
Created November 30, 2020 04:24
Show Gist options
  • Save jjmontesl/60e20dc231e46d218a781f7a8f9cc679 to your computer and use it in GitHub Desktop.
Save jjmontesl/60e20dc231e46d218a781f7a8f9cc679 to your computer and use it in GitHub Desktop.
Makefile for Godot projects
# MyGameProject
# Makefile
APPNAME := MyGameProject
APPNAME_LC := mygameproject
#APPVER := 0.8.2
APPVER := $(shell grep 'string ApplicationVersion' scripts/nc/app/GameApplication.cs | cut -d '"' -f 2 )
#echo $(APPVER)
GODOT := ~/apps/godot/Godot_v3.2.3-stable_mono_x11_64/Godot_v3.2.3-stable_mono_x11.64
BUTLER := export/butler/butler
ifndef APPVER
$(error APPVER is not set)
endif
$(info Version is: $(APPVER))
.PHONY: def
def:
$(info No target defined)
build-linux:
GODOT_MAKE_CONSTANTS="GODOT_BUILD_PROD" \
$(GODOT) --path . --export "Linux/X11" export/linux/mygameproject.x86_64 --no-window
build-linux-demo:
GODOT_MAKE_CONSTANTS="GODOT_BUILD_PROD;GODOT_BUILD_DEMO" \
$(GODOT) --path . --export "Linux/X11 DEMO" export/linux-demo/mygameproject-DEMO.x86_64 --no-window
build-linux-devel:
GODOT_MAKE_CONSTANTS="GODOT_BUILD_DEVEL" \
$(GODOT) --path . --export "Linux/X11 DEVEL" export/linux-devel/mygameproject-DEVEL.x86_64 --no-window
build-win:
GODOT_MAKE_CONSTANTS="GODOT_BUILD_PROD" \
$(GODOT) --path . --export "Windows Desktop" export/win/MyGameProject.exe --no-window
build-win-demo:
#mkdir -p export/win-demo
GODOT_MAKE_CONSTANTS="GODOT_BUILD_PROD;GODOT_BUILD_DEMO" \
$(GODOT) --path . --export "Windows Desktop DEMO" export/win-demo/MyGameProject-DEMO.exe --no-window
build-win-devel:
GODOT_MAKE_CONSTANTS="GODOT_BUILD_DEVEL" \
$(GODOT) --path . --export "Windows Desktop DEVEL" export/win-devel/MyGameProject-DEVEL.exe --no-window
build-osx:
mkdir -p export/osx
rm -rf ~/.local/share/Trash/files/MyGameProject* | true
rm -rf ~/.local/share/Trash/files/mygameproject.app | true
GODOT_MAKE_CONSTANTS="GODOT_BUILD_PROD" \
$(GODOT) --path . --export "Mac OSX" export/osx/MyGameProject.zip --no-window
build-html5-demo:
touch export/.gdignore || true
mkdir -p export/html5-demo
GODOT_MAKE_CONSTANTS="GODOT_BUILD_PROD;GODOT_BUILD_DEMO" \
$(GODOT) --path . --export "HTML5 DEMO" export/html5-demo/index.html --no-window
package-linux:
rm -rf /tmp/${APPNAME} || true
cp -r export/linux /tmp/${APPNAME}
cd /tmp && tar cvzf ${APPNAME}-linux-${APPVER}.tgz ${APPNAME}
mv /tmp/${APPNAME}-linux-${APPVER}.tgz export/
package-linux-demo:
rm -rf /tmp/${APPNAME}-DEMO || true
cp -r export/linux-demo /tmp/${APPNAME}-DEMO
cd /tmp && tar cvzf ${APPNAME}-DEMO-linux-${APPVER}.tgz ${APPNAME}-DEMO
mv /tmp/${APPNAME}-DEMO-linux-${APPVER}.tgz export/
package-linux-devel:
rm -rf /tmp/${APPNAME}-DEVEL || true
cp -r export/linux-devel /tmp/${APPNAME}-DEVEL
cd /tmp && tar cvzf ${APPNAME}-DEVEL-linux-${APPVER}.tgz ${APPNAME}-DEVEL
mv /tmp/${APPNAME}-DEVEL-linux-${APPVER}.tgz export/
package-win:
rm -rf /tmp/${APPNAME} || true
cp -r export/win /tmp/${APPNAME}
cd /tmp && zip -r ${APPNAME}-win-${APPVER}.zip ${APPNAME}
mv /tmp/${APPNAME}-win-${APPVER}.zip export/
package-win-demo:
rm -rf /tmp/${APPNAME}-DEMO || true
cp -r export/win-demo /tmp/${APPNAME}-DEMO
cd /tmp && zip -r ${APPNAME}-DEMO-win-${APPVER}.zip ${APPNAME}-DEMO
mv /tmp/${APPNAME}-DEMO-win-${APPVER}.zip export/
package-win-devel:
rm -rf /tmp/${APPNAME}-DEVEL || true
cp -r export/win-devel /tmp/${APPNAME}-DEVEL
cd /tmp && zip -r ${APPNAME}-DEVEL-win-${APPVER}.zip ${APPNAME}-DEVEL
mv /tmp/${APPNAME}-DEVEL-win-${APPVER}.zip export/
package-osx:
rm -rf /tmp/${APPNAME} || true
cp -r export/osx/ /tmp/${APPNAME}
#cd /tmp && zip -r ${APPNAME}-DEVEL-win-${APPVER}.zip ${APPNAME}-DEVEL
mv /tmp/${APPNAME}/MyGameProject.zip export/MyGameProject-osx-${APPVER}.zip
package-html5-demo-itchio:
rm -rf /tmp/${APPNAME} || true
cp -r export/html5-demo /tmp/${APPNAME}
cd /tmp/${APPNAME} && zip -r ../${APPNAME}-DEMO-html5-${APPVER}.zip *
mv /tmp/${APPNAME}-DEMO-html5-${APPVER}.zip export/
clean:
rm -rf export/linux || true
rm -rf export/linux-demo || true
rm -rf export/linux-devel || true
rm -rf export/win || true
rm -rf export/win-demo || true
rm -rf export/win-devel || true
rm -rf export/osx || true
rm -rf export/html5-demo || true
touch export/.gdignore || true
build-all-full: build-linux build-win build-osx
build-all-demo: build-linux-demo build-win-demo build-html5-demo
build-all-devel: build-linux-devel build-win-devel
package-all-full: package-linux package-win package-osx
package-all-demo: package-linux-demo package-win-demo package-html5-demo-itchio
package-all-devel: package-linux-devel package-win-devel
build-all: build-all-full build-all-demo build-all-devel
package-all: package-all-full package-all-demo package-all-devel
all: build-all package-all
linux: build-linux package-linux
linux-demo: build-linux-demo package-linux-demo
linux-devel: build-linux-devel package-linux-devel
win: build-win package-win
win-demo: build-win-demo package-win-demo
win-devel: build-win-devel package-win-devel
html5-demo: build-html5-demo package-html5-demo-itchio
upload:
rsync -av export/*${APPVER}*.tgz myhost.local:/srv/mygameproject/static-game/mygameproject
rsync -av export/*${APPVER}*.zip myhost.local:/srv/mygameproject/static-game/mygameproject
upload-devel:
if [ -e export/${APPNAME}-DEVEL-linux-${APPVER}.tgz ] ; then rsync -av export/${APPNAME}-DEVEL-linux-${APPVER}.tgz myhost.local:/srv/mygameproject/static-game/mygameproject ; fi
if [ -e export/${APPNAME}-DEVEL-win-${APPVER}.zip ] ; then rsync -av export/${APPNAME}-DEVEL-win-${APPVER}.zip myhost.local:/srv/mygameproject/static-game/mygameproject ; fi
upload-osx:
if [ -e export/${APPNAME}-osx-${APPVER}.zip ] ; then rsync -av export/${APPNAME}-osx-${APPVER}.zip myhost.local:/srv/mygameproject/static-game/mygameproject ; fi
upload-itchio-butler:
rm export/html5-demo/*.import || true
$(BUTLER) push export/html5-demo myitchusername/mygameproject:html5-demo --userversion ${APPVER}
butler-install:
curl -L -o /tmp/butler.zip https://broth.itch.ovh/butler/linux-amd64/LATEST/archive/default
mkdir -p export/butler
cd export/butler && unzip /tmp/butler.zip
chmod +x export/butler/butler
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment