mirror of
https://github.com/minetest/minetest.git
synced 2024-08-18 20:44:16 +02:00
Minetest for C++11 (CMakeLists + Travis)
* Move GCC to GCC 6 & GCC 7 * Move Clang to Clang 3.6 & Clang 4.0 * LINT moves from Clang 3.9 to Clang 4.0 * Move XCode 7.3 to 8.0 * Use more travis tricks to install compilers instead of adding complexity to our build script * Clang format fixes on checked files (compat Cpp11 instead of Cpp03) * Mingw GCC update from 4.8.4 to 5.3 (Ubuntu Xenial) * Drop mingw cmake generated files and add them to gitignore
This commit is contained in:
parent
0e58168fe5
commit
bf6569b570
@ -2,7 +2,7 @@ BasedOnStyle: LLVM
|
||||
IndentWidth: 8
|
||||
UseTab: Always
|
||||
BreakBeforeBraces: Custom
|
||||
Standard: Cpp03
|
||||
Standard: Cpp11
|
||||
BraceWrapping:
|
||||
AfterClass: true
|
||||
AfterControlStatement: false
|
||||
|
88
.travis.yml
88
.travis.yml
@ -2,6 +2,7 @@ language: cpp
|
||||
before_install: ./util/travis/before_install.sh
|
||||
script: ./util/travis/script.sh
|
||||
sudo: required
|
||||
dist: trusty
|
||||
notifications:
|
||||
email: false
|
||||
matrix:
|
||||
@ -10,30 +11,81 @@ matrix:
|
||||
- env: PLATFORM=Win32
|
||||
compiler: gcc
|
||||
os: linux
|
||||
addons:
|
||||
apt:
|
||||
packages: ['gcc-mingw-w64-i686', 'g++-mingw-w64-i686', 'binutils-mingw-w64-i686']
|
||||
sources: &sources
|
||||
- ubuntu-toolchain-r-test
|
||||
- sourceline: 'deb http://mirrors.kernel.org/ubuntu xenial main universe'
|
||||
|
||||
- env: PLATFORM=Win64
|
||||
compiler: gcc
|
||||
os: linux
|
||||
- env: PLATFORM=Unix COMPILER=clang
|
||||
addons:
|
||||
apt:
|
||||
packages: ['gcc-mingw-w64-x86-64', 'g++-mingw-w64-x86-64', 'binutils-mingw-w64-x86-64']
|
||||
sources: &sources
|
||||
- ubuntu-toolchain-r-test
|
||||
- sourceline: 'deb http://mirrors.kernel.org/ubuntu xenial main universe'
|
||||
|
||||
- env: PLATFORM=Unix
|
||||
compiler: clang
|
||||
os: osx
|
||||
- env: PLATFORM=Unix COMPILER=g++
|
||||
osx_image: xcode8
|
||||
|
||||
- env: PLATFORM=Unix COMPILER=gcc-6
|
||||
compiler: gcc
|
||||
os: linux
|
||||
- env: PLATFORM=Unix COMPILER=clang
|
||||
compiler: clang
|
||||
os: linux
|
||||
- env: PLATFORM=Unix COMPILER=clang VALGRIND=1
|
||||
compiler: clang
|
||||
os: linux
|
||||
dist: trusty
|
||||
- env: COMPILER=none LINT=1
|
||||
compiler: clang
|
||||
os: linux
|
||||
dist: trusty
|
||||
- env: PLATFORM=Unix COMPILER=g++-6
|
||||
addons:
|
||||
apt:
|
||||
packages: ['gcc-6', 'g++-6']
|
||||
sources: &sources
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- env: PLATFORM=Unix COMPILER=gcc-7
|
||||
compiler: gcc
|
||||
os: linux
|
||||
addons:
|
||||
apt:
|
||||
sources: &sources
|
||||
- ubuntu-toolchain-r-test
|
||||
addons:
|
||||
apt:
|
||||
packages: ['gcc-7', 'g++-7']
|
||||
sources: &sources
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- env: PLATFORM=Unix COMPILER=clang-3.6
|
||||
compiler: clang
|
||||
os: linux
|
||||
addons:
|
||||
apt:
|
||||
packages: ['clang-3.6', 'clang++-3.6']
|
||||
sources: &sources
|
||||
- llvm-toolchain-trusty-3.6
|
||||
|
||||
- env: PLATFORM=Unix COMPILER=clang-4.0
|
||||
compiler: clang
|
||||
os: linux
|
||||
addons:
|
||||
apt:
|
||||
packages: ['clang-4.0', 'clang++-4.0']
|
||||
sources: &sources
|
||||
- llvm-toolchain-trusty-4.0
|
||||
|
||||
- env: PLATFORM=Unix COMPILER=clang-4.0 VALGRIND=1
|
||||
compiler: clang
|
||||
os: linux
|
||||
addons:
|
||||
apt:
|
||||
packages: ['valgrind', 'clang-4.0', 'clang++-4.0']
|
||||
sources: &sources
|
||||
- llvm-toolchain-trusty-4.0
|
||||
|
||||
- env: LINT=1
|
||||
compiler: clang
|
||||
os: linux
|
||||
addons:
|
||||
apt:
|
||||
packages: ['clang-format-4.0']
|
||||
sources: &sources
|
||||
- llvm-toolchain-trusty-4.0
|
||||
|
||||
|
||||
|
||||
|
@ -9,6 +9,8 @@ endif()
|
||||
project(minetest)
|
||||
set(PROJECT_NAME_CAPITALIZED "Minetest")
|
||||
|
||||
# Works only for cmake 3.1 and greater
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
|
||||
# Also remember to set PROTOCOL_VERSION in network/networkprotocol.h when releasing
|
||||
set(VERSION_MAJOR 0)
|
||||
|
@ -708,7 +708,7 @@ include(CheckCXXCompilerFlag)
|
||||
|
||||
if(MSVC)
|
||||
# Visual Studio
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++11")
|
||||
# EHa enables SEH exceptions (used for catching segfaults)
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "/EHa /Ox /GL /FD /MT /GS- /Zi /arch:SSE /fp:fast /D NDEBUG /D _HAS_ITERATOR_DEBUGGING=0 /TP")
|
||||
#set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG /NODEFAULTLIB:\"libcmtd.lib\" /NODEFAULTLIB:\"libcmt.lib\"")
|
||||
@ -728,9 +728,10 @@ if(MSVC)
|
||||
# /MT = Link statically with standard library stuff
|
||||
set(CMAKE_C_FLAGS_RELEASE "/O2 /Ob2 /MT")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
# Probably GCC
|
||||
if(APPLE)
|
||||
SET( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pagezero_size 10000 -image_base 100000000" )
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pagezero_size 10000 -image_base 100000000" )
|
||||
endif()
|
||||
if(WARN_ALL)
|
||||
set(RELEASE_WARNING_FLAGS "-Wall")
|
||||
|
@ -40,6 +40,7 @@ public:
|
||||
|
||||
void beginSave() {}
|
||||
void endSave() {}
|
||||
|
||||
private:
|
||||
std::map<s64, std::string> m_database;
|
||||
};
|
||||
|
@ -41,6 +41,7 @@ public:
|
||||
|
||||
void beginSave() {}
|
||||
void endSave() {}
|
||||
|
||||
private:
|
||||
leveldb::DB *m_database;
|
||||
};
|
||||
|
@ -79,6 +79,7 @@ public:
|
||||
u32 m_added_objects;
|
||||
|
||||
IGameDef *getGameDef() { return m_gamedef; }
|
||||
|
||||
protected:
|
||||
GenericAtomic<float> m_time_of_day_speed;
|
||||
|
||||
|
@ -80,6 +80,7 @@ public:
|
||||
return true;
|
||||
}
|
||||
u16 size() const { return m_id_to_name.size(); }
|
||||
|
||||
private:
|
||||
UNORDERED_MAP<u16, std::string> m_id_to_name;
|
||||
UNORDERED_MAP<std::string, u16> m_name_to_id;
|
||||
|
@ -32,6 +32,7 @@ class MetaDataRef : public ModApiBase
|
||||
{
|
||||
public:
|
||||
virtual ~MetaDataRef() {}
|
||||
|
||||
protected:
|
||||
static MetaDataRef *checkobject(lua_State *L, int narg);
|
||||
|
||||
|
@ -172,7 +172,7 @@ private:
|
||||
IEventReceiver *m_receiver;
|
||||
ISimpleTextureSource *m_texturesource;
|
||||
v2u32 m_screensize;
|
||||
std::map<int, rect<s32> > m_hud_rects;
|
||||
std::map<int, rect<s32>> m_hud_rects;
|
||||
std::map<int, irr::EKEY_CODE> m_hud_ids;
|
||||
bool m_visible; // is the gui visible
|
||||
|
||||
|
@ -16,13 +16,13 @@ toolchain_file=$dir/toolchain_mingw.cmake
|
||||
irrlicht_version=1.8.4
|
||||
ogg_version=1.3.2
|
||||
vorbis_version=1.3.5
|
||||
curl_version=7.50.3
|
||||
curl_version=7.54.0
|
||||
gettext_version=0.19.8.1
|
||||
freetype_version=2.7
|
||||
sqlite3_version=3.14.2
|
||||
luajit_version=2.1.0-beta2
|
||||
leveldb_version=1.18
|
||||
zlib_version=1.2.8
|
||||
freetype_version=2.8
|
||||
sqlite3_version=3.19.2
|
||||
luajit_version=2.1.0-beta3
|
||||
leveldb_version=1.19
|
||||
zlib_version=1.2.11
|
||||
|
||||
mkdir -p $packagedir
|
||||
mkdir -p $libdir
|
||||
|
@ -16,13 +16,13 @@ toolchain_file=$dir/toolchain_mingw64.cmake
|
||||
irrlicht_version=1.8.4
|
||||
ogg_version=1.3.2
|
||||
vorbis_version=1.3.5
|
||||
curl_version=7.50.3
|
||||
curl_version=7.54.0
|
||||
gettext_version=0.19.8.1
|
||||
freetype_version=2.7
|
||||
sqlite3_version=3.14.2
|
||||
luajit_version=2.1.0-beta2
|
||||
leveldb_version=1.18
|
||||
zlib_version=1.2.8
|
||||
freetype_version=2.8
|
||||
sqlite3_version=3.19.2
|
||||
luajit_version=2.1.0-beta3
|
||||
leveldb_version=1.19
|
||||
zlib_version=1.2.11
|
||||
|
||||
mkdir -p $packagedir
|
||||
mkdir -p $libdir
|
||||
|
@ -1,49 +1,33 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
echo "Preparing for $TRAVIS_COMMIT_RANGE"
|
||||
|
||||
if [[ "$LINT" == "1" ]]; then
|
||||
curl http://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
|
||||
sudo add-apt-repository "deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-3.9 main"
|
||||
sudo apt-get -yq update
|
||||
sudo apt-get install clang-format-3.9
|
||||
. util/travis/common.sh
|
||||
|
||||
if [[ "${LINT}" == "1" ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
. util/travis/common.sh
|
||||
needs_compile || exit 0
|
||||
|
||||
if [[ $TRAVIS_OS_NAME == "linux" ]]; then
|
||||
sudo apt-get update
|
||||
sudo apt-get install p7zip-full $COMPILER
|
||||
fi
|
||||
|
||||
if [[ $PLATFORM == "Unix" ]]; then
|
||||
if [[ $TRAVIS_OS_NAME == "linux" ]]; then
|
||||
sudo apt-get update
|
||||
sudo apt-get install libirrlicht-dev cmake libbz2-dev libpng12-dev \
|
||||
libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev \
|
||||
libhiredis-dev libogg-dev libgmp-dev libvorbis-dev libopenal-dev \
|
||||
gettext libpq-dev postgresql-server-dev-all
|
||||
# Linking to LevelDB is broken, use a custom build
|
||||
wget http://minetest.kitsunemimi.pw/libleveldb-1.18-ubuntu12.04.7z
|
||||
sudo 7z x -o/usr libleveldb-1.18-ubuntu12.04.7z
|
||||
if [[ "$VALGRIND" == "1" ]]; then
|
||||
sudo apt-get install valgrind
|
||||
fi
|
||||
|
||||
install_linux_deps
|
||||
else
|
||||
brew update
|
||||
brew install freetype gettext hiredis irrlicht jpeg leveldb libogg libvorbis luajit
|
||||
#brew upgrade postgresql
|
||||
install_macosx_deps
|
||||
fi
|
||||
elif [[ $PLATFORM == "Win32" ]]; then
|
||||
wget http://minetest.kitsunemimi.pw/mingw_w64_i686_ubuntu12.04_4.9.1.7z -O mingw.7z
|
||||
sudo apt-get update
|
||||
sudo apt-get install p7zip-full
|
||||
wget http://minetest.kitsunemimi.pw/mingw-w64-i686_7.1.1_ubuntu14.04.7z -O mingw.7z
|
||||
sed -e "s|%PREFIX%|i686-w64-mingw32|" \
|
||||
-e "s|%ROOTPATH%|/usr/i686-w64-mingw32|" \
|
||||
< util/travis/toolchain_mingw.cmake.in > util/buildbot/toolchain_mingw.cmake
|
||||
sudo 7z x -y -o/usr mingw.7z
|
||||
elif [[ $PLATFORM == "Win64" ]]; then
|
||||
wget http://minetest.kitsunemimi.pw/mingw_w64_x86_64_ubuntu12.04_4.9.1.7z -O mingw.7z
|
||||
sudo apt-get update
|
||||
sudo apt-get install p7zip-full
|
||||
wget http://minetest.kitsunemimi.pw/mingw-w64-x86_64_7.1.1_ubuntu14.04.7z -O mingw.7z
|
||||
sed -e "s|%PREFIX%|x86_64-w64-mingw32|" \
|
||||
-e "s|%ROOTPATH%|/usr/x86_64-w64-mingw32|" \
|
||||
< util/travis/toolchain_mingw.cmake.in > util/buildbot/toolchain_mingw64.cmake
|
||||
|
@ -1,5 +1,40 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
set_linux_compiler_env() {
|
||||
if [[ "${COMPILER}" == "gcc-5.1" ]]; then
|
||||
export CC=gcc-5.1
|
||||
export CXX=g++-5.1
|
||||
elif [[ "${COMPILER}" == "gcc-6" ]]; then
|
||||
export CC=gcc-6
|
||||
export CXX=g++-6
|
||||
elif [[ "${COMPILER}" == "gcc-7" ]]; then
|
||||
export CC=gcc-7
|
||||
export CXX=g++-7
|
||||
elif [[ "${COMPILER}" == "clang-3.6" ]]; then
|
||||
export CC=clang-3.6
|
||||
export CXX=clang++-3.6
|
||||
elif [[ "${COMPILER}" == "clang-4.0" ]]; then
|
||||
export CC=clang-4.0
|
||||
export CXX=clang++-4.0
|
||||
fi
|
||||
}
|
||||
|
||||
# Linux build only
|
||||
install_linux_deps() {
|
||||
sudo apt-get update
|
||||
sudo apt-get install libirrlicht-dev cmake libbz2-dev libpng12-dev \
|
||||
libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev \
|
||||
libhiredis-dev libogg-dev libgmp-dev libvorbis-dev libopenal-dev \
|
||||
gettext libpq-dev libleveldb-dev
|
||||
}
|
||||
|
||||
# Mac OSX build only
|
||||
install_macosx_deps() {
|
||||
brew update
|
||||
brew install freetype gettext hiredis irrlicht jpeg leveldb libogg libvorbis luajit
|
||||
#brew upgrade postgresql
|
||||
}
|
||||
|
||||
# Relative to git-repository root:
|
||||
TRIGGER_COMPILE_PATHS="src/.*\.(c|cpp|h)|CMakeLists.txt|cmake/Modules/|util/travis/|util/buildbot/"
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
#! /bin/bash
|
||||
function perform_lint() {
|
||||
echo "Performing LINT..."
|
||||
if hash clang-format-3.9 2>/dev/null; then
|
||||
CLANG_FORMAT=clang-format-3.9
|
||||
if hash clang-format-4.0 2>/dev/null; then
|
||||
CLANG_FORMAT=clang-format-4.0
|
||||
else
|
||||
CLANG_FORMAT=clang-format
|
||||
fi
|
||||
|
@ -10,22 +10,15 @@ if [[ "$LINT" == "1" ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [[ $PLATFORM == "Unix" ]]; then
|
||||
set_linux_compiler_env
|
||||
|
||||
if [[ ${PLATFORM} == "Unix" ]]; then
|
||||
mkdir -p travisbuild
|
||||
cd travisbuild || exit 1
|
||||
|
||||
CMAKE_FLAGS=''
|
||||
if [[ $COMPILER == "g++-6" ]]; then
|
||||
export CC=gcc-6
|
||||
export CXX=g++-6
|
||||
fi
|
||||
|
||||
# Clang builds with FreeType fail on Travis
|
||||
if [[ $CC == "clang" ]]; then
|
||||
CMAKE_FLAGS+=' -DENABLE_FREETYPE=FALSE'
|
||||
fi
|
||||
|
||||
if [[ $TRAVIS_OS_NAME == "osx" ]]; then
|
||||
if [[ ${TRAVIS_OS_NAME} == "osx" ]]; then
|
||||
CMAKE_FLAGS+=' -DCUSTOM_GETTEXT_PATH=/usr/local/opt/gettext'
|
||||
fi
|
||||
|
||||
@ -33,12 +26,12 @@ if [[ $PLATFORM == "Unix" ]]; then
|
||||
-DRUN_IN_PLACE=TRUE \
|
||||
-DENABLE_GETTEXT=TRUE \
|
||||
-DBUILD_SERVER=TRUE \
|
||||
$CMAKE_FLAGS ..
|
||||
${CMAKE_FLAGS} ..
|
||||
make -j2
|
||||
|
||||
echo "Running unit tests."
|
||||
CMD="../bin/minetest --run-unittests"
|
||||
if [[ "$VALGRIND" == "1" ]]; then
|
||||
if [[ "${VALGRIND}" == "1" ]]; then
|
||||
valgrind --leak-check=full --leak-check-heuristics=all --undef-value-errors=no --error-exitcode=9 ${CMD} && exit 0
|
||||
else
|
||||
${CMD} && exit 0
|
||||
|
Loading…
Reference in New Issue
Block a user