Move build instructions from travis into shell scripts

fix syntax

use elif

run it with bash

fix directory incantations

add missing build steps

dont use colors if not terminal

update install.sh

add sanity check

changes

set verbose mode

enable debug output

changes to get it working on mac

Platform specific cmakelists

fix issue with intptr_t not being found/defined

update build scripts

see if it can find the pkg-config

try running it outside of cmake

check whether excho works way we expect

try -e

remove debug info
This commit is contained in:
Kevin Burke 2014-05-27 02:06:57 +09:00
parent 6d824fd3a8
commit b036a51cfd
7 changed files with 135 additions and 31 deletions

6
.gitignore vendored
View File

@ -2,6 +2,12 @@
sdl
# Compiled dll
openrct2.dll
# Build artifacts
.cache
#################
## Eclipse
#################

View File

@ -1,32 +1,10 @@
language: c
before_install:
- sudo apt-get install -y --force-yes binutils-mingw-w64-i686 gcc-mingw-w64-i686 g++-mingw-w64-i686
# fetch precompiled SDL2 + headers for MinGW and push it into the expected directory
- mkdir -p cache
- export SDL2_PV=2.0.3
- if [[ ! -f cache/SDL2-devel-${SDL2_PV}-mingw.tar.gz ]]; then wget http://libsdl.org/release/SDL2-devel-${SDL2_PV}-mingw.tar.gz --output-document cache/SDL2-devel-${SDL2_PV}-mingw.tar.gz; fi
- pushd cache && tar -xzf SDL2-devel-${SDL2_PV}-mingw.tar.gz && popd
# but first fix SDL2 bug
- if [[ ! -f cache/libsdl2-mingw-2.0.3-fix-platform-detection-for-mingw.patch ]]; then wget "https://github.com/anyc/anyc-overlay/raw/master/media-libs/libsdl2-mingw/files/libsdl2-mingw-2.0.3-fix-platform-detection-for-mingw.patch" --output-document cache/libsdl2-mingw-2.0.3-fix-platform-detection-for-mingw.patch; fi
- pushd cache/SDL2-${SDL2_PV}/i686-w64-mingw32/include/SDL2/ && patch -p2 < ../../../../libsdl2-mingw-2.0.3-fix-platform-detection-for-mingw.patch && popd
- sudo mkdir -p /usr/local/cross-tools/
- sudo cp -r cache/SDL2-${SDL2_PV}/i686-w64-mingw32 /usr/local/cross-tools/
# build a wrapper that looks for the sdl2.pc file in the new directory
- echo -e "#! /bin/sh\\nexport PKG_CONFIG_LIBDIR=/usr/local/cross-tools/i686-w64-mingw32/lib/pkgconfig\\npkg-config \$@" > i686-w64-mingw32-pkg-config
- chmod +x i686-w64-mingw32-pkg-config
- sudo mv i686-w64-mingw32-pkg-config /usr/local/bin/
- bash install.sh
script:
- mkdir build
- pushd build
- cmake -DCMAKE_TOOLCHAIN_FILE=../CMakeLists_mingw.txt -DCMAKE_BUILD_TYPE=Debug ..
- make
- popd
- bash build.sh
notifications:
irc: "irc.freenode.net#openrct2-dev"

View File

@ -1,11 +1,20 @@
SET(CMAKE_SYSTEM_NAME Windows)
SET(COMPILER_PREFIX i686-w64-mingw32)
SET(CMAKE_C_COMPILER ${COMPILER_PREFIX}-gcc)
SET(CMAKE_CXX_COMPILER ${COMPILER_PREFIX}-c++)
SET(CMAKE_RC_COMPILER ${COMPILER_PREFIX}-windres)
SET(CMAKE_PKGCONFIG_EXECUTABLE ${COMPILER_PREFIX}-pkg-config)
SET(PKG_CONFIG_EXECUTABLE ${COMPILER_PREFIX}-pkg-config)
if (APPLE)
SET(COMPILER_PREFIX i586-mingw32)
SET(CMAKE_C_COMPILER ${COMPILER_PREFIX}-gcc)
SET(CMAKE_CXX_COMPILER ${COMPILER_PREFIX}-c++)
SET(CMAKE_RC_COMPILER ${COMPILER_PREFIX}-windres)
SET(CMAKE_PKGCONFIG_EXECUTABLE i686-w64-mingw32-pkg-config)
SET(PKG_CONFIG_EXECUTABLE i686-w64-mingw32-pkg-config)
else()
SET(COMPILER_PREFIX i686-w64-mingw32)
SET(CMAKE_C_COMPILER ${COMPILER_PREFIX}-gcc)
SET(CMAKE_CXX_COMPILER ${COMPILER_PREFIX}-c++)
SET(CMAKE_RC_COMPILER ${COMPILER_PREFIX}-windres)
SET(CMAKE_PKGCONFIG_EXECUTABLE ${COMPILER_PREFIX}-pkg-config)
SET(PKG_CONFIG_EXECUTABLE ${COMPILER_PREFIX}-pkg-config)
endif (APPLE)
# potential flags to make code more similar to MSVC:
# -fshort-wchar -fshort-enums -mms-bitfields -fpack-struct=1

19
build.sh Executable file
View File

@ -0,0 +1,19 @@
#!/bin/bash
set -e
if [[ ! -d build ]]; then
mkdir -p build
fi
pushd build
cmake -DCMAKE_TOOLCHAIN_FILE=../CMakeLists_mingw.txt -DCMAKE_BUILD_TYPE=Debug ..
make
popd
if [[ -t 1 ]]; then
echo "\033[95mDone! Run OpenRCT2 by typing:\n\nwine openrct2.exe\n\033[0m"
else
echo "Done! Run OpenRCT2 by typing:\n\nwine openrct2.exe\n"
fi

10
clean.sh Normal file
View File

@ -0,0 +1,10 @@
#!/bin/bash
set -ev
sudo rm -rf /usr/local/cross-tools/i686-w64-mingw32
#rm -rf .cache
rm -rf .cache/*.patch
rm -rf .cache/SDL2-2.0.3
rm -rf .cache/i686-w64-mingw32-pkg-config
rm -rf build

80
install.sh Executable file
View File

@ -0,0 +1,80 @@
#!/bin/bash
set -e
SDL2_PV=2.0.3
cachedir=.cache
mkdir -p $cachedir
echo `uname`
if [[ `uname` == "Darwin" ]]; then
echo "Installation of OpenRCT2 assumes you have homebrew and use it to install packages."
# Very possible I'm missing some dependencies here.
brew install cmake wine
if [[ ! -d /usr/include/wine ]]; then
# This will almost certainly break as brew changes. Better ideas
# welcome.
sudo ln -s /usr/local/Cellar/wine/1.6.2/include/wine /usr/include
fi
mingw_dmg=gcc-4.8.0-qt-4.8.4-for-mingw32.dmg
mingw_path=/usr/local/gcc-4.8.0-qt-4.8.4-for-mingw32/win32-gcc/bin
if [[ ! -f $cachedir/$mingw_dmg ]]; then
wget http://crossgcc.rts-software.org/download/gcc-4.8.0-qt-4.8.4-win32/$mingw_dmg --output-document $cachedir/$mingw_dmg
fi
if [[ ! -d $mingw_path ]]; then
echo "Open the DMG file and install its contents"
open $cachedir/$mingw_dmg
fi
echo "You will need to add $mingw_path to your \$PATH"
elif [[ `uname` == "Linux" ]]; then
sudo apt-get install -y --force-yes binutils-mingw-w64-i686 gcc-mingw-w64-i686 g++-mingw-w64-i686
fi
if [[ ! -f $cachedir/SDL2-devel-${SDL2_PV}-mingw.tar.gz ]]; then
wget http://libsdl.org/release/SDL2-devel-${SDL2_PV}-mingw.tar.gz --output-document $cachedir/SDL2-devel-${SDL2_PV}-mingw.tar.gz;
fi
if [[ ! -d $cachedir/SDL2-${SDL2_PV} ]]; then
pushd $cachedir
tar -xzf SDL2-devel-${SDL2_PV}-mingw.tar.gz
popd
fi
# Apply platform patch
mingw_patch=libsdl2-mingw-2.0.3-fix-platform-detection-for-mingw.patch
if [[ ! -f $cachedir/$mingw_patch ]]; then
wget "https://github.com/anyc/anyc-overlay/raw/master/media-libs/libsdl2-mingw/files/$mingw_patch" --output-document $cachedir/$mingw_patch;
# XXX not sure how to make this idempotent.
pushd $cachedir/SDL2-${SDL2_PV}/i686-w64-mingw32/include/SDL2/
echo "Applying patch."
patch -p2 < ../../../../$mingw_patch
popd
fi
if [[ ! -d /usr/local/cross-tools ]]; then
sudo mkdir -p /usr/local/cross-tools
fi
if [[ ! -d /usr/local/cross-tools/i686-w64-mingw32 ]]; then
sudo cp -r $cachedir/SDL2-${SDL2_PV}/i686-w64-mingw32 /usr/local/cross-tools/
fi
if [[ ! -f $cachedir/i686-w64-mingw32-pkg-config ]]; then
if [[ `uname` == "Darwin" ]]; then
# BSD echo doesn't recognize the -e flag.
echo "#! /bin/sh\nexport PKG_CONFIG_LIBDIR=/usr/local/cross-tools/i686-w64-mingw32/lib/pkgconfig\npkg-config \$@" > $cachedir/i686-w64-mingw32-pkg-config;
else
echo -e "#! /bin/sh\nexport PKG_CONFIG_LIBDIR=/usr/local/cross-tools/i686-w64-mingw32/lib/pkgconfig\npkg-config \$@" > $cachedir/i686-w64-mingw32-pkg-config;
fi
fi
chmod +x $cachedir/i686-w64-mingw32-pkg-config
sudo cp $cachedir/i686-w64-mingw32-pkg-config /usr/local/bin/
ls -al /usr/local/bin | grep pkg-config
cat /usr/local/bin/i686-w64-mingw32-pkg-config

View File

@ -28,6 +28,8 @@
#include "window.h"
#include "window_dropdown.h"
#include <stdint.h>
enum WINDOW_OPTIONS_WIDGET_IDX {
WIDX_BACKGROUND,
WIDX_TITLE,
@ -676,4 +678,4 @@ static void window_options_update_height_markers()
config_save();
gfx_invalidate_screen();
}
}