Skip to content

Commit

Permalink
Merge pull request #13 from CleverRaven/master
Browse files Browse the repository at this point in the history
Update to master
  • Loading branch information
I-am-Erk committed May 24, 2019
2 parents a7b7600 + 4985bb0 commit ab749a9
Show file tree
Hide file tree
Showing 289 changed files with 14,404 additions and 4,281 deletions.
4 changes: 2 additions & 2 deletions .clang-tidy
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Checks: 'clang-diagnostic-*,-clang-analyzer-security.FloatLoopCounter,-clang-analyzer-core.UndefinedBinaryOperatorResult'
Checks: 'clang-diagnostic-*,modernize-use-using'
WarningsAsErrors: '*'
HeaderFilterRegex: '.*'
HeaderFilterRegex: '(src|test).*'
FormatStyle: none

# vim:tw=0
135 changes: 78 additions & 57 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,71 +32,94 @@ branches:
- master
- development

# Overall strategy for what sorts of builds to include:
# We want a build for each compiler and each platform.
# For PRs, we lessen the "each compiler" requirement to just covering the newest
# and oldest relevant version of each compiler.
# We also want to ensure that each of the following tweaks are covered in at
# least one PR build:
# - TILES=1
# - SOUND=1
# - RELEASE=1
# - CMAKE=1
# - SANITIZE=address
# - LOCALIZE=0
# - A clang-tidy run
# We try to minimize the number of builds subject to those constraints.

# To see what toolchains are available, consult the following:
# https://github.com/travis-ci/apt-source-safelist/blob/master/ubuntu.json
# https://launchpad.net/%7Eubuntu-toolchain-r/+archive/ubuntu/test/+index

jobs:
include:
# Initial test stage, if this fails everything else is cancelled.
- stage: test
# GCC 5.4 is the pre-installed compiler on Xenial
env: COMPILER=g++ MODS=--mods=RL_Classes TEST_STAGE=1
- stage: Test
# Clang is consistently the fastest to build, so use it for the initial test.
# Clang 3.8, oldest supported Clang, build with Makefile with extra tests and json style check.
env: CLANG=clang++-3.8 MODS=--mods=RL_Classes TEST_STAGE=1 CXXFLAGS='-Wno-error=unused-command-line-argument -D__extern_always_inline="extern __always_inline"'
compiler: clang
addons: &clang38
apt:
packages: ["clang-3.8", "g++-multilib", "libc6-dbg", "libc6-dbg:i386", "g++-6"]
sources: *apt_sources

# Then build different configurations and targets in parallel.
- stage: variants
# Linux Tiles
env: COMPILER=g++-8 CXXFLAGS='-Wno-implicit-fallthrough' TILES=1 SOUND=1 SANITIZE=address
- stage: "Main Compilers"
# GCC 5.3, oldest supported GCC, build with Makefile configured for Curses, disable LOCALIZE
env: COMPILER=g++ LOCALIZE=0
compiler: gcc
addons: &gcc53
apt:
packages: ["g++-5=5.3.1-14ubuntu2", "libstdc++-5-dev=5.3.1-14ubuntu2", "gcc-5=5.3.1-14ubuntu2", "gcc-5-base=5.3.1-14ubuntu2", "cpp-5=5.3.1-14ubuntu2", "libgcc-5-dev=5.3.1-14ubuntu2", "libasan2=5.3.1-14ubuntu2", "libmpx0=5.3.1-14ubuntu2"]
sources: [*apt_sources]

# GCC 8, latest supported GCC, build with Makefile configured with TILES and SOUND and use address sanitization
- env: COMPILER=g++-8 CXXFLAGS='-Wno-implicit-fallthrough' TILES=1 SOUND=1 SANITIZE=address
compiler: gcc
addons: &gcc8
apt:
packages: ["g++-8", "g++-8-multilib", "libc6-dbg", "libc6-dbg:i386", "libsdl2-dev", "libsdl2-ttf-dev", "libsdl2-image-dev", "libsdl2-mixer-dev"]
sources: *apt_sources

# MXE variants using alternate repository http://mirror.mxe.cc/repos/apt
# GCC MinGW
- env: COMPILER='g++' LDFLAGS='-static-libgcc -static-libstdc++' MXE_TARGET='i686-w64-mingw32.static' WINE='wine'
addons: &gcc
# Clang 8, latest supported Clang, build with Makefile and address sanitization, but disable some very long-running tests
- env: CLANG=clang++-8 SANITIZE=address EXTRA_TEST_OPTS="~[.] ~vehicle_efficiency ~vehicle_drag ~starting_items"
compiler: clang
addons: &clang8
apt:
packages: ["wine"]
packages: ["clang-8", "libc6-dbg", "libc6-dbg:i386"]
sources: [*apt_sources, llvm-toolchain-xenial-8]

# Windows Tiles
- env: COMPILER='g++' LDFLAGS='-static-libgcc -static-libstdc++' MXE_TARGET='i686-w64-mingw32.static' WINE='wine' TILES=1 SOUND=1
- stage: "Platforms and Tidy"
# MXE variant using alternate repository http://mirror.mxe.cc/repos/apt
# Mingw-w64 building with Tiles and Sound
env: COMPILER='g++' LDFLAGS='-static-libgcc -static-libstdc++' MXE_TARGET='i686-w64-mingw32.static' WINE='wine' TILES=1 SOUND=1
compiler: gcc
addons: &gcc
apt:
packages: ["wine"]

# CMake Clang 6.0 Tiles with CMAKE
- env: CLANG=clang++-6.0 TILES=1 SOUND=1 CXXFLAGS=-Wno-error=unused-command-line-argument CMAKE=1 RELEASE=1
dist: trusty
compiler: clang
addons: &clang60
apt:
packages: ["clang-6.0", "g++-multilib", "libc6-dbg", "libc6-dbg:i386", "g++-6", "libsdl2-dev", "libsdl2-ttf-dev", "libsdl2-image-dev", "libsdl2-mixer-dev"]
sources: [*apt_sources, llvm-toolchain-trusty-6.0]

# macOS Tiles
# Xcode 10.1 building with Tiles and sound
- env: CLANG=clang++ NATIVE=osx OSX_MIN=10.13 TILES=1 SOUND=1
os: osx
osx_image: xcode10.1
compiler: clang

# CMake Clang 8.0 Tiles with CMAKE and clang-tidy
# Execute Clang-tidy with CMake, configured with Tiles and Sound
# (analysis only; no build or tests)
- env: CLANG=clang++-8 TILES=1 SOUND=1 CXXFLAGS=-Wno-unused-command-line-argument CMAKE=1 CATA_CLANG_TIDY=clang-tidy-8
compiler: clang
addons: &clang80
addons: &clang8
apt:
packages: ["clang-8", "clang-tidy-8", "libc6-dbg", "libc6-dbg:i386", "g++-6", "libsdl2-dev", "libsdl2-ttf-dev", "libsdl2-image-dev", "libsdl2-mixer-dev"]
packages: ["clang-8", "clang-tidy-8", "libsdl2-dev", "libsdl2-ttf-dev", "libsdl2-image-dev", "libsdl2-mixer-dev"]
sources: [*apt_sources, llvm-toolchain-xenial-8]


# Finally check the compiler variants
- stage: compilers
env: COMPILER=g++ 5.3
# GCC 5.4 is default on Xenial
env: COMPILER=g++
if: type != pull_request
compiler: gcc
addons: &gcc53
apt:
packages: ["g++-5=5.3.1-14ubuntu2", "libstdc++-5-dev=5.3.1-14ubuntu2", "gcc-5=5.3.1-14ubuntu2", "gcc-5-base=5.3.1-14ubuntu2", "cpp-5=5.3.1-14ubuntu2", "libgcc-5-dev=5.3.1-14ubuntu2", "libasan2=5.3.1-14ubuntu2", "libmpx0=5.3.1-14ubuntu2"]
sources: [*apt_sources]

# GCC 6
- env: COMPILER=g++-6
Expand All @@ -107,34 +130,21 @@ jobs:
packages: ["g++-6", "g++-6-multilib", "libc6-dbg", "libc6-dbg:i386"]
sources: *apt_sources

# GCC 7
- env: COMPILER=g++-7 CXXFLAGS='-Wno-implicit-fallthrough' CODE_COVERAGE=true
# GCC 7, adding _GLIBCXX_DEBUG so that one build can test with that
- env: COMPILER=g++-7 CXXFLAGS='-Wno-implicit-fallthrough -D_GLIBCXX_DEBUG' CODE_COVERAGE=true
if: type != pull_request
compiler: gcc
dist: trusty
addons: &gcc7
apt:
packages: ["g++-7", "g++-7-multilib", "libc6-dbg", "libc6-dbg:i386", "lcov"]
sources: *apt_sources

# GCC 8
# Also, adding _GLIBCXX_DEBUG so that one build can test with that
- env: COMPILER=g++-8 CXXFLAGS='-Wno-implicit-fallthrough -D_GLIBCXX_DEBUG'
compiler: gcc
if: type != pull_request
addons: &gcc8
apt:
packages: ["g++-8", "g++-8-multilib", "libc6-dbg", "libc6-dbg:i386"]
sources: *apt_sources

# Clang 3.8
- env: CLANG=clang++-3.8 CXXFLAGS='-Wno-error=unused-command-line-argument -D__extern_always_inline="extern __always_inline"'
compiler: clang
# GCC MinGW with only terminal support
- env: COMPILER='g++' LDFLAGS='-static-libgcc -static-libstdc++' MXE_TARGET='i686-w64-mingw32.static' WINE='wine'
if: type != pull_request
addons: &clang38
addons: &gcc
apt:
packages: ["clang-3.8", "g++-multilib", "libc6-dbg", "libc6-dbg:i386", "g++-6"]
sources: *apt_sources
packages: ["wine"]

# Clang 3.9
- env: CLANG=clang++-3.9 CXXFLAGS='-Wno-error=unused-command-line-argument -D__extern_always_inline="extern __always_inline"'
Expand All @@ -152,9 +162,11 @@ jobs:
addons: &clang40
apt:
packages: ["clang-4.0", "g++-multilib", "libc6-dbg", "libc6-dbg:i386", "g++-6"]
# Luckily the Trusty install Just Works on Xenial
sources: [*apt_sources, llvm-toolchain-trusty-4.0]

# Clang 5.0
# Clang 5.0 (still on Trusty, because I could find no readily available
# source on Xenial at time of writing)
- env: CLANG=clang++-5.0 CXXFLAGS=-Wno-error=unused-command-line-argument
if: type != pull_request
dist: trusty
Expand All @@ -164,14 +176,23 @@ jobs:
packages: ["clang-5.0", "g++-multilib", "libc6-dbg", "libc6-dbg:i386", "g++-6"]
sources: [*apt_sources, llvm-toolchain-trusty-5.0]

# Clang 6.0
- env: CLANG=clang++-6.0 CXXFLAGS=-Wno-error=unused-command-line-argument SANITIZE=address EXTRA_TEST_OPTS="~[.] ~vehicle_efficiency ~vehicle_drag ~starting_items"
dist: trusty
# CMake Clang 6.0 Tiles with CMAKE
- env: CLANG=clang++-6.0 TILES=1 SOUND=1 CXXFLAGS=-Wno-error=unused-command-line-argument CMAKE=1 RELEASE=1
if: type != pull_request
compiler: clang
addons: &clang60
apt:
packages: ["clang-6.0", "g++-multilib", "libc6-dbg", "libc6-dbg:i386", "g++-6"]
sources: [*apt_sources, llvm-toolchain-trusty-6.0]
packages: ["clang-6.0", "g++-multilib", "libc6-dbg", "g++-6", "libsdl2-dev", "libsdl2-ttf-dev", "libsdl2-image-dev", "libsdl2-mixer-dev"]
sources: [*apt_sources, llvm-toolchain-xenial-6.0]

# Clang 7
- env: CLANG=clang++-7
if: type != pull_request
compiler: clang
addons: &clang7
apt:
packages: ["clang-7", "libc6-dbg", "libc6-dbg:i386"]
sources: [*apt_sources, llvm-toolchain-xenial-7]

before_script:
- if [ -n "${CLANG}" ]; then COMPILER="$CLANG"; fi
Expand Down
4 changes: 3 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,9 @@ IF(MSVC)
add_definitions(-D_X86_)
endif()
ELSE()
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wall -Wextra -Woverloaded-virtual -Wpedantic -std=c++14")
SET(CATA_WARNINGS
"-Werror -Wall -Wextra -Woverloaded-virtual -Wpedantic -Wmissing-declarations")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CATA_WARNINGS} -std=c++14")
SET(CMAKE_CXX_FLAGS_DEBUG "-Og -g")
ENDIF()

Expand Down
7 changes: 6 additions & 1 deletion COMPILING.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,11 @@
* [Cross-compile to Windows from Linux](#cross-compile-to-windows-from-linux)
* [Cross-compile to Mac OS X from Linux](#cross-compile-to-mac-os-x-from-linux)
* [Cross-compile to Android from Linux](#cross-compile-to-android-from-linux)
* [Troubleshooting](#debian-troubleshooting)
* [Mac OS X](#mac-os-x)
* [Simple build using Homebrew](#simple-build-using-homebrew)
* [Advanced info for Developers](#advanced-info-for-developers)
* [Troubleshooting](#troubleshooting)
* [Troubleshooting](#mac-troubleshooting)
* [Windows](#windows)
* [Visual Studio Guide](#visual-studio-guide)
* [MinGW Guide](#mingw-guide)
Expand Down Expand Up @@ -353,6 +354,10 @@ To build a signed release APK (ie. one that can be installed on a device), [buil

The app stores data files on the device in `/sdcard/Android/data/com.cleverraven/cataclysmdda/files`. The data is backwards compatible with the desktop version.

## Linux Troubleshooting

If you get an error stating `make: build-scripts/validate_pr_in_jenkins: Command not found` clone a separate copy of the upstream source to a new git repository as your git setup has become corrupted by the Blob.

# Mac OS X

To build Cataclysm on Mac you'll need [Command Line Tools for Xcode](https://developer.apple.com/downloads/) and the [Homebrew](http://brew.sh) package manager. With Homebrew, you can easily install or build Cataclysm using the [Cataclysm](https://formulae.brew.sh/formula/cataclysm) forumla.
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@
# PROFILE is for use with gprof or a similar program -- don't bother generally.
# RELEASE_FLAGS is flags for release builds.
RELEASE_FLAGS =
WARNINGS = -Werror -Wall -Wextra -Woverloaded-virtual -Wpedantic
WARNINGS = -Werror -Wall -Wextra -Woverloaded-virtual -Wpedantic -Wmissing-declarations
# Uncomment below to disable warnings
#WARNINGS = -w
DEBUGSYMS = -g
Expand Down
6 changes: 5 additions & 1 deletion build-scripts/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ if [ -n "$TEST_STAGE" ]
then
build-scripts/lint-json.sh
make -j "$num_jobs" style-json

# Also build chkjson (even though we're not using it), to catch any
# compile errors there
make -j "$num_jobs" chkjson
elif [ -n "$JUST_JSON" ]
then
echo "Early exit on just-json change"
Expand Down Expand Up @@ -107,7 +111,7 @@ else
run_tests ./tests/cata_test &
if [ -n "$MODS" ]
then
run_tests ./tests/cata_test $MODS &
run_tests ./tests/cata_test --user-dir=modded $MODS &
wait -n
fi
wait -n
Expand Down
6 changes: 3 additions & 3 deletions build-scripts/requirements.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ if just_json; then
fi

if [ -n "${CODE_COVERAGE}" ]; then
travis_retry pip install --user pyyaml cpp-coveralls;
export CXXFLAGS=--coverage;
export LDFLAGS=--coverage;
travis_retry pip install --user pyyaml cpp-coveralls
export CXXFLAGS="$CXXFLAGS --coverage"
export LDFLAGS="$LDFLAGS --coverage"
fi

if [ -n "$CATA_CLANG_TIDY" ]; then
Expand Down
Loading

0 comments on commit ab749a9

Please sign in to comment.