Add Windows module

This commit is contained in:
Antonin Décimo
2014-08-19 12:35:58 +02:00
parent 3c734d62d1
commit 6d641c951c
2 changed files with 122 additions and 6 deletions

View File

@@ -14,12 +14,18 @@ LOVE_VERSION=0.9.1
## - a colon ":" if it requires an argument ## - a colon ":" if it requires an argument
## SCRIPT_ARGS="a; osname:" ## SCRIPT_ARGS="a; osname:"
SCRIPT_ARGS="l; " SCRIPT_ARGS="l; w."
## Windows
SCRIPT_ARGS="icon: $SCRIPT_ARGS"
## Add a short summary of your platform script here ## Add a short summary of your platform script here
## SHORT_HELP=" -a Create an executable for a ## SHORT_HELP=" -a Create an executable for a
## --osname Create an executable for osname" ## --osname Create an executable for osname"
SHORT_HELP=" -l Create a plain Love file" SHORT_HELP=" -l Create a plain Love file
-w, Create a Windows application
-w32 Create a Windows x86 application
-w64 Create a Windows x64 application"
## Don't forget to source the corresponding file at the bottom of the script ! ## Don't forget to source the corresponding file at the bottom of the script !
@@ -85,6 +91,7 @@ Options:
-v Set the Love version -v Set the Love version
$SHORT_HELP" $SHORT_HELP"
# Parsing options # Parsing options
source "$INCLUDE_DIR"/getopt.sh source "$INCLUDE_DIR"/getopt.sh
while getoptex "$SCRIPT_ARGS" "$@" while getoptex "$SCRIPT_ARGS" "$@"
@@ -133,11 +140,11 @@ init_module ()
create_love_file () create_love_file ()
{ {
cd "$PROJECT_DIR" cd "$PROJECT_DIR"
rm -rf "$RELEASE_DIR"/"$PROJECT_NAME".love rm -rf "$RELEASE_DIR"/"$PROJECT_NAME".love 2> /dev/null
if [ -z "$PROJECT_FILES" ]; then if [ -z "$PROJECT_FILES" ]; then
zip -9 -r "$RELEASE_DIR"/"$PROJECT_NAME".love -x "$0" "$MAIN_RELEASE_DIR"/\* "$EXCLUDE_FILES" @ * zip -9 -r "$RELEASE_DIR"/"$PROJECT_NAME".love -x "$0" "$MAIN_RELEASE_DIR"/\* $EXCLUDE_FILES @ *
else else
zip -9 -r "$RELEASE_DIR"/"$PROJECT_NAME".love -x "$0" "$MAIN_RELEASE_DIR"/\* "$EXCLUDE_FILES" @ "$PROJECT_FILES" zip -9 -r "$RELEASE_DIR"/"$PROJECT_NAME".love -x "$0" "$MAIN_RELEASE_DIR"/\* $EXCLUDE_FILES @ $PROJECT_FILES
fi fi
cd "$RELEASE_DIR" cd "$RELEASE_DIR"
LOVE_FILE="$PROJECT_NAME".love LOVE_FILE="$PROJECT_NAME".love
@@ -176,7 +183,17 @@ do
## source "$PLATFORMS_DIR/os.sh" ## source "$PLATFORMS_DIR/os.sh"
## fi ## fi
if [ "$OPTOPT" = "l" ]; then if [ "$OPTOPT" = "l" ]; then
source $PLATFORMS_DIR/love.sh source "$PLATFORMS_DIR"/love.sh
elif [ "$OPTOPT" = "w" ]; then
if [ "$OPTARG" = "32" ]; then
RELEASE_WIN_32=true
elif [ "$OPTARG" = "64" ]; then
RELEASE_WIN_64=true
else
RELEASE_WIN_32=true
RELEASE_WIN_64=true
fi
source "$PLATFORMS_DIR"/windows.sh
fi fi
done done

99
scripts/windows.sh Normal file
View File

@@ -0,0 +1,99 @@
# Windows
init_module "Windows"
# Options
while getoptex "$SCRIPT_ARGS" "$@"
do
if [ "$OPTOPT" = "icon" ]; then
PROJECT_ICO=$OPTARG
fi
done
EXCLUDE_FILES="$EXCLUDE_FILES $PROJECT_ICO test"
# Wine
FOUND_WINE=true
command -v wine >/dev/null 2>&1 || { FOUND_WINE=false; }
if [ "$FOUND_WINE" = true ] && [ -n "$PROJECT_ICO" ]; then
WINEPREFIX="$MAIN_CACHE_DIR"/wine
mkdir -p "$WINEPREFIX"/drive_c
RESHACKER="$WINEPREFIX"/drive_c/"Program Files (x86)"/"Resource Hacker"/ResHacker.exe
if [ -f "$RESHACKER" ]; then
:
else
curl -L -C - -o "$WINEPREFIX"/drive_c/reshack_setup.exe http://www.angusj.com/resourcehacker/reshack_setup.exe
WINEPREFIX="$WINEPREFIX" wine "$WINEPREFIX/drive_c/reshack_setup.exe"
fi
fi
create_love_file
# Windows 32-bits
if [ "$RELEASE_WIN_32" = true ]; then
if [ "$LOVE_GT_090" = true ]; then
if [ -f "$CACHE_DIR"/love-$LOVE_VERSION-win32.zip ]; then
cp "$CACHE_DIR"/love-$LOVE_VERSION-win32.zip ./
else
curl -L -C - -o "$CACHE_DIR"/love-$LOVE_VERSION-win32.zip https://bitbucket.org/rude/love/downloads/love-$LOVE_VERSION-win32.zip
cp "$CACHE_DIR"/love-$LOVE_VERSION-win32.zip ./
fi
else
if [ -f "$CACHE_DIR"/love-$LOVE_VERSION-win-x86.zip ]; then
cp "$CACHE_DIR"/love-$LOVE_VERSION-win-x86.zip ./love-$LOVE_VERSION-win32.zip
else
curl -L -C - -o "$CACHE_DIR"/love-$LOVE_VERSION-win-x86.zip https://bitbucket.org/rude/love/downloads/love-$LOVE_VERSION-win-x86.zip
cp "$CACHE_DIR"/love-$LOVE_VERSION-win-x86.zip ./love-$LOVE_VERSION-win32.zip
fi
fi
unzip -qq love-$LOVE_VERSION-win32.zip
rm -rf "$PROJECT_NAME"-win32.zip 2> /dev/null
if [ "$FOUND_WINE" = true ] && [ -n "$PROJECT_ICO" ]; then
WINEPREFIX="$WINEPREFIX" wine "$RESHACKER" -addoverwrite "love-$LOVE_VERSION-win32/love.exe,love-$LOVE_VERSION-win32/love.exe,"$PROJECT_ICO",ICONGROUP,MAINICON,0" 2> /dev/null
fi
cat love-$LOVE_VERSION-win32/love.exe "$LOVE_FILE" > love-$LOVE_VERSION-win32/"$PROJECT_NAME".exe
rm love-$LOVE_VERSION-win32/love.exe
zip -9 -qr "$PROJECT_NAME"-win32.zip love-$LOVE_VERSION-win32
rm -rf love-$LOVE_VERSION-win32.zip love-$LOVE_VERSION-win32
fi
## Windows 64-bits ##
if [ "$RELEASE_WIN_64" = true ] && [ "$LOVE_GT_080" = true ]; then
if [ "$LOVE_GT_090" = true ]; then
if [ -f "$CACHE_DIR"/love-$LOVE_VERSION-win64.zip ]; then
cp "$CACHE_DIR"/love-$LOVE_VERSION-win64.zip ./
else
curl -L -C - -o "$CACHE_DIR"/love-$LOVE_VERSION-win64.zip https://bitbucket.org/rude/love/downloads/love-$LOVE_VERSION-win64.zip
cp "$CACHE_DIR"/love-$LOVE_VERSION-win64.zip ./
fi
else
if [ -f "$CACHE_DIR"/love-$LOVE_VERSION-win-x64.zip ]; then
cp "$CACHE_DIR"/love-$LOVE_VERSION-win-x64.zip ./love-$LOVE_VERSION-win64.zip
else
curl -L -C - -o "$CACHE_DIR"/love-$LOVE_VERSION-win-x64.zip https://bitbucket.org/rude/love/downloads/love-$LOVE_VERSION-win-x64.zip
cp "$CACHE_DIR"/love-$LOVE_VERSION-win-x64.zip ./love-$LOVE_VERSION-win64.zip
fi
fi
unzip -qq love-$LOVE_VERSION-win64.zip
rm -rf "$PROJECT_NAME"-win64.zip 2> /dev/null
if [ "$FOUND_WINE" = true ] && [ -n "$PROJECT_ICO" ]; then
WINEPREFIX="$WINEPREFIX" wine "$RESHACKER" -addoverwrite "love-$LOVE_VERSION-win32/love.exe,love-$LOVE_VERSION-win32/love.exe,"$PROJECT_ICO",ICONGROUP,MAINICON,0" 2> /dev/null
fi
cat love-$LOVE_VERSION-win64/love.exe "$LOVE_FILE" > love-$LOVE_VERSION-win64/"$PROJECT_NAME".exe
rm love-$LOVE_VERSION-win64/love.exe
zip -9 -qr "$PROJECT_NAME"-win64.zip love-$LOVE_VERSION-win64
rm -rf love-$LOVE_VERSION-win64.zip love-$LOVE_VERSION-win64
fi
remove_love_file
exit_module