Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update CI #26

Merged
merged 2 commits into from
Nov 1, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
110 changes: 88 additions & 22 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,34 +1,76 @@
matrix:
include:
- name: Ubuntu 20.04 Clang
- name: Ubuntu 20.04 AMD64 Clang
os: linux
dist: focal
env:
- MATRIX_EVAL="CC=clang && CXX=clang++"
- FILE_SUF="clang"
- NEED_DEPLOY="true"
addons:
apt:
packages:
- cmake
- make
- ninja-build
- libsdl2-dev
- libogg-dev
- libvorbis-dev
- libopenal-dev
- libalut-dev
- libfreetype6-dev
- libfontconfig1-dev
- name: Ubuntu 20.04 GCC
- name: Ubuntu 20.04 AMD64 GCC
os: linux
dist: focal
env:
- MATRIX_EVAL="CC=gcc && CXX=g++"
- FILE_SUF="gcc"
- NEED_DEPLOY="false"
addons:
apt:
packages:
- cmake
- make
- ninja-build
- libsdl2-dev
- libogg-dev
- libvorbis-dev
- libopenal-dev
- libalut-dev
- libfreetype6-dev
- libfontconfig1-dev
- name: Ubuntu 20.04 ARM64 Clang
os: linux
arch: arm64
dist: focal
env:
- MATRIX_EVAL="CC=clang && CXX=clang++"
- NEED_DEPLOY="true"
addons:
apt:
packages:
- cmake
- make
- ninja-build
- libsdl2-dev
- libogg-dev
- libvorbis-dev
- libopenal-dev
- libalut-dev
- libfreetype6-dev
- libfontconfig1-dev
- name: Ubuntu 20.04 ARM64 GCC
os: linux
arch: arm64
dist: focal
env:
- MATRIX_EVAL="CC=gcc && CXX=g++"
- NEED_DEPLOY="false"
addons:
apt:
packages:
- cmake
- make
- ninja-build
- libsdl2-dev
- libogg-dev
- libvorbis-dev
Expand All @@ -39,22 +81,33 @@ matrix:
- name: Ubuntu 20.04 MinGW
os: linux
dist: focal
env: MINGW="true"
env:
- MINGW="true"
- NEED_DEPLOY="true"
addons:
apt:
packages:
- cmake
- make
- ninja-build
- libsdl2-dev
- libogg-dev
- libvorbis-dev
- libopenal-dev
- libalut-dev
- libfreetype6-dev
- libfontconfig1-dev
- p7zip-full
- mingw-w64
- wine
- wine32
- name: macOS native compilation
os: osx
osx_image: xcode12
env:
- NEED_DEPLOY="true"
addons:
homebrew:
packages:
- ninja
- sdl2
- libogg
- libvorbis
Expand All @@ -69,45 +122,57 @@ git:
branches:
only:
- master
- test_ci

env:
global:
- RELEASE_BRANCH=master
- RELEASE_BRANCH=test_ci

before_install:
- eval "${MATRIX_EVAL}"
- |
if [ "$MINGW" = "true" ]; then
wget https://github.com/viewizard/astromenace-mingw-deps/releases/download/latest/deps.zip
unzip -o deps.zip
rm deps.zip
export CUSTOM_CMAKE_ARGS="-DMINGW32=1 -DDEPS_PATH=$PWD/deps"
wget https://github.com/viewizard/astromenace-windows-prebuilt-dependencies/releases/download/latest/prebuilt_dep_mingw_32bit.zip
unzip prebuilt_dep_mingw_32bit.zip
rm prebuilt_dep_mingw_32bit.zip
export CUSTOM_CMAKE_ARGS="-DMINGW=1 -DDEPS_PATH=$PWD/prebuilt_dep_mingw_32bit -DDONTCREATEVFS=1"
fi

script:
- mkdir build
- cd build
- cmake .. -DCMAKE_INSTALL_PREFIX=$PWD/../bin -DCMAKE_BUILD_TYPE=Release ${CUSTOM_CMAKE_ARGS}
- cmake --build . --target install -- -j8
- cmake .. -G Ninja -DCMAKE_INSTALL_PREFIX=$PWD/../bin -DCMAKE_BUILD_TYPE=Release ${CUSTOM_CMAKE_ARGS}
- cmake --build . --target install
- |
if [ "$MINGW" = "true" ]; then
mkdir ../build-vfs
cd ../build-vfs
cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build .
mv gamedata.vfs ../bin/gamedata.vfs
fi
- cd ..

before_deploy:
- |
if [ "$TRAVIS_BRANCH" = "$RELEASE_BRANCH" -a "$TRAVIS_PULL_REQUEST" = "false" ]; then
if [[ -z "$TRAVIS_TAG" ]]; then
export TRAVIS_TAG="$(awk -F'"' '/GAME_VERSION/ {print $2}' ./src/build_config.h)-$(git rev-list HEAD --count)"
git config --local user.name "Travis"
git config --local user.email "travis@travis-ci.org"
git tag "$TRAVIS_TAG" -a -m "[Autogenerated] This is the latest version pushed to the ${TRAVIS_BRANCH} branch."
git push https://${GITHUB_API_KEY}@github.com/${TRAVIS_REPO_SLUG} --tags >/dev/null 2>&1
fi

# Create tag
#if [[ -z "$TRAVIS_TAG" ]]; then
# export TRAVIS_TAG="$(awk -F'"' '/GAME_VERSION/ {print $2}' ./src/build_config.h)-$(git rev-list HEAD --count)"
# git config --local user.name "Travis"
# git config --local user.email "travis@travis-ci.org"
# git tag "$TRAVIS_TAG" -a -m "[Autogenerated] This is the latest version pushed to the ${TRAVIS_BRANCH} branch."
# git push https://${GITHUB_API_KEY}@github.com/${TRAVIS_REPO_SLUG} --tags >/dev/null 2>&1
#fi

# Prepare files for deployment
mv bin astromenace
if [ "$MINGW" = "true" ]; then
7z a astromenace-win.zip astromenace
elif [ ${TRAVIS_OS_NAME} = 'linux' ]; then
echo "Make sure, you have all required libs installed: libSDL2 (ver 2.0.5+), libopenal (ver 1.0+), libalut (ver 1.0+), libogg (ver 1.1+), libvorbis (ver 1.1+), freetype (ver 2.1.6+)." > ./astromenace/ReadMe.txt
tar cfz astromenace-${TRAVIS_OS_NAME}-${FILE_SUF}-${TRAVIS_CPU_ARCH}.tar.gz ./astromenace/*
tar cfz astromenace-${TRAVIS_OS_NAME}-${TRAVIS_CPU_ARCH}.tar.gz ./astromenace/*
elif [ ${TRAVIS_OS_NAME} = 'osx' ]; then
echo "Make sure, you have all required libs installed with HomeBrew (https://brew.sh/): sdl2, libogg, libvorbis, freealut, freetype." > ./astromenace/ReadMe.txt
tar cfz astromenace-${TRAVIS_OS_NAME}.tar.gz ./astromenace/*
Expand All @@ -129,4 +194,5 @@ deploy:
on:
repo: $TRAVIS_REPO_SLUG
branch: $RELEASE_BRANCH
condition: $NEED_DEPLOY == "true"

92 changes: 45 additions & 47 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,23 +9,23 @@ ENDIF()
# $ sudo apt-get install mingw-w64
# $ mkdir build
# $ cd build
# $ cmake .. -DMINGW32=1 -DDEPS_PATH=$HOME/share/AstroMenace/deps/ -DCMAKE_INSTALL_PREFIX=$PWD/../bin -DCMAKE_BUILD_TYPE=Release
# $ cmake .. -DMINGW=1 -DDEPS_PATH=/path -DCMAKE_INSTALL_PREFIX=$PWD/../bin -DCMAKE_BUILD_TYPE=Release
# $ cmake --build . --target install
# Will automatically create VFS file on Windows and Linux (wine package must be installed).
# If Linux don't have wine installed, use -DDONTCREATEVFS=1 and create VFS file manually.
IF(MINGW32)
IF(MINGW)
# make sure, this block located before PROJECT
SET(CMAKE_SYSTEM_NAME Windows)
SET(CMAKE_C_COMPILER i686-w64-mingw32-gcc)
SET(CMAKE_CXX_COMPILER i686-w64-mingw32-g++)
ENDIF(MINGW32)
ENDIF(MINGW)

# project name
PROJECT(AstroMenace)

IF(CMAKE_HOST_WIN32)
# at this moment, only MinGW supported for Windows build
SET(MINGW32 1)
SET(MINGW 1)
ELSEIF(CMAKE_HOST_APPLE)
# make sure, that CMAKE_HOST_APPLE called before CMAKE_HOST_UNIX
SET(MACOS 1)
Expand All @@ -34,23 +34,24 @@ ELSEIF(CMAKE_HOST_UNIX)
ENDIF()


IF(MINGW32)
IF(MINGW)
# provide deps location with -DDEPS_PATH=path
# all libs must be in 'lib' folder
# all headers must be in 'include' folder
SET(ALL_LIBRARIES "mingw32
-lopengl32
-lglu32
${DEPS_PATH}/lib/libSDL2main.a
${DEPS_PATH}/lib/SDL2.dll
${DEPS_PATH}/lib/alut.dll
${DEPS_PATH}/lib/ogg.dll
${DEPS_PATH}/lib/vorbis.dll
${DEPS_PATH}/lib/vorbisfile.dll
${DEPS_PATH}/lib/OpenAL32.dll
${DEPS_PATH}/lib/freetype.dll")
SET(ALL_LIBRARIES "mingw32 \
-lopengl32 \
-lglu32 \
${DEPS_PATH}/lib/libSDL2main.a \
${DEPS_PATH}/lib/libSDL2.dll.a \
${DEPS_PATH}/lib/libalut.dll.a \
${DEPS_PATH}/lib/libogg.dll.a \
${DEPS_PATH}/lib/libvorbis.dll.a \
${DEPS_PATH}/lib/libvorbisfile.dll.a \
${DEPS_PATH}/lib/libOpenAL32.dll.a \
${DEPS_PATH}/lib/libfreetype.dll.a")
INCLUDE_DIRECTORIES(SYSTEM "${DEPS_PATH}/include/")
ELSE(MINGW32)
INCLUDE_DIRECTORIES(SYSTEM "${DEPS_PATH}/include/freetype2")
ELSE(MINGW)
# libSDL2 (./share/cmake/FindSDL2.cmake)

SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/share/cmake)
Expand Down Expand Up @@ -161,7 +162,7 @@ ELSE(MINGW32)
ELSE(FREETYPE_FOUND)
MESSAGE(FATAL_ERROR "freetype not found")
ENDIF(FREETYPE_FOUND)
ENDIF(MINGW32)
ENDIF(MINGW)


# Use C++11.
Expand Down Expand Up @@ -215,64 +216,61 @@ IF(DATADIR)
ADD_DEFINITIONS(-DDATADIR="${DATADIR}")
ENDIF(DATADIR)

IF(MINGW32)
IF(MINGW)
ADD_DEFINITIONS(-D__GNUWIN32__)
ADD_DEFINITIONS(-DWIN32)
ADD_DEFINITIONS(-DOV_EXCLUDE_STATIC_CALLBACKS)
SET(CMAKE_EXE_LINKER_FLAGS "-static -static-libgcc -static-libstdc++")
ENDIF(MINGW32)
ENDIF(MINGW)

IF(MINGW32)
IF(MINGW)
# WIN32 - suppress terminal
ADD_EXECUTABLE(astromenace WIN32 ${astromenace_SRCS})
ELSE(MINGW32)
ELSE(MINGW)
ADD_EXECUTABLE(astromenace ${astromenace_SRCS})
ENDIF(MINGW32)
ENDIF(MINGW)
TARGET_LINK_LIBRARIES(astromenace ${ALL_LIBRARIES})


ADD_CUSTOM_TARGET(CopyLIBS
COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_PATH}/lib/SDL2.dll ${CMAKE_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_PATH}/lib/alut.dll ${CMAKE_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_PATH}/lib/ogg.dll ${CMAKE_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_PATH}/lib/vorbis.dll ${CMAKE_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_PATH}/lib/vorbisfile.dll ${CMAKE_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_PATH}/lib/OpenAL32.dll ${CMAKE_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_PATH}/lib/freetype.dll ${CMAKE_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_PATH}/bin/SDL2.dll ${CMAKE_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_PATH}/bin/libalut.dll ${CMAKE_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_PATH}/bin/libogg.dll ${CMAKE_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_PATH}/bin/libvorbis.dll ${CMAKE_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_PATH}/bin/libvorbisfile.dll ${CMAKE_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_PATH}/bin/soft_oal.dll ${CMAKE_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_PATH}/bin/libfreetype.dll ${CMAKE_BINARY_DIR}
)
IF(MINGW32)
IF(MINGW)
ADD_DEPENDENCIES(astromenace CopyLIBS)
ENDIF(MINGW32)
ENDIF(MINGW)


# generate game data file (gamedata.vfs)
IF(NOT DONTCREATEVFS)
SET(astromenace_BIN "astromenace")
IF(MINGW32)
IF(MINGW)
SET(astromenace_BIN "astromenace.exe")
IF(CMAKE_HOST_UNIX)
SET(wine_BIN "wine")
ENDIF(CMAKE_HOST_UNIX)
ENDIF(MINGW32)
ENDIF(MINGW)

ADD_CUSTOM_COMMAND(
TARGET astromenace
POST_BUILD
COMMAND ${wine_BIN} ${CMAKE_BINARY_DIR}/${astromenace_BIN} --pack --rawdata=${astromenace_DATA} --dir=${PROJECT_BINARY_DIR}
COMMAND ${CMAKE_BINARY_DIR}/${astromenace_BIN} --pack --rawdata=${astromenace_DATA} --dir=${PROJECT_BINARY_DIR}
)
ENDIF(NOT DONTCREATEVFS)


INSTALL(TARGETS astromenace DESTINATION ${CMAKE_INSTALL_PREFIX})
IF(MINGW32)
INSTALL(FILES "${PROJECT_BINARY_DIR}/SDL2.dll" DESTINATION ${CMAKE_INSTALL_PREFIX})
INSTALL(FILES "${PROJECT_BINARY_DIR}/alut.dll" DESTINATION ${CMAKE_INSTALL_PREFIX})
INSTALL(FILES "${PROJECT_BINARY_DIR}/ogg.dll" DESTINATION ${CMAKE_INSTALL_PREFIX})
INSTALL(FILES "${PROJECT_BINARY_DIR}/vorbis.dll" DESTINATION ${CMAKE_INSTALL_PREFIX})
INSTALL(FILES "${PROJECT_BINARY_DIR}/vorbisfile.dll" DESTINATION ${CMAKE_INSTALL_PREFIX})
INSTALL(FILES "${PROJECT_BINARY_DIR}/OpenAL32.dll" DESTINATION ${CMAKE_INSTALL_PREFIX})
INSTALL(FILES "${PROJECT_BINARY_DIR}/freetype.dll" DESTINATION ${CMAKE_INSTALL_PREFIX})
ENDIF(MINGW32)
IF(MINGW)
INSTALL(FILES "${DEPS_PATH}/bin/SDL2.dll" DESTINATION ${CMAKE_INSTALL_PREFIX})
INSTALL(FILES "${DEPS_PATH}/bin/libalut.dll" DESTINATION ${CMAKE_INSTALL_PREFIX})
INSTALL(FILES "${DEPS_PATH}/bin/libogg.dll" DESTINATION ${CMAKE_INSTALL_PREFIX})
INSTALL(FILES "${DEPS_PATH}/bin/libvorbis.dll" DESTINATION ${CMAKE_INSTALL_PREFIX})
INSTALL(FILES "${DEPS_PATH}/bin/libvorbisfile.dll" DESTINATION ${CMAKE_INSTALL_PREFIX})
INSTALL(FILES "${DEPS_PATH}/bin/soft_oal.dll" DESTINATION ${CMAKE_INSTALL_PREFIX})
INSTALL(FILES "${DEPS_PATH}/bin/libfreetype.dll" DESTINATION ${CMAKE_INSTALL_PREFIX})
ENDIF(MINGW)
IF(NOT DONTCREATEVFS)
INSTALL(FILES "${PROJECT_BINARY_DIR}/gamedata.vfs" DESTINATION ${CMAKE_INSTALL_PREFIX})
ENDIF(NOT DONTCREATEVFS)