set a new compilation set of rules, tune cmakefiles, tune buils
* tune up gitlab ci: * add winbuntu 14, add debian 7, winbuntu 17, build minetest for olders one * use minenux minetest repo game (seems not work) * remove non buildable stages.. remove windo shit * back cmake in list new behaviour for blacklist locales * gitlab ci build for debian 8 using backports on jsoncpp * solved https://github.com/minetest/minetest/issues/6567 * solved https://github.com/minetest/minetest/issues/7681 * cmake fixed to minimum supported and c++11 standar able * Fix no locales being generated when APPLY_LOCALE_BLACKLIST=0 * Fix linking with Postgres libs: * closes https://github.com/minetest/minetest/issues/12149 * closes https://github.com/minetest/minetest/issues/11219 * PostgreSQL fallback code missed the includes https://github.com/minetest/minetest/issues/11219 *a24899bf2d
*3e2145d662
* integrates https://github.com/minetest/minetest/pull/11215 *a24899bf2d
* backported998e4820c9
* use SSE registers for FP operations on i386 for modern gcc platforms only * only use if related are given, by example 32bit using gcc compilers/stdlibs becouse of the long time bugs around those errors by desing, its not about to crash the engine.. its about to permits to hacked clients (either players or the client program per se) making predictable results, so predictable results permits to catch securit issues! * floating point problems are only on modern gcc and modern platform arches, raising problems like bad calculations positions.. a long time bug reported at https://git.minetest.land/Mineclonia/Mineclonia/issues/201 and addressed at https://github.com/minetest/minetest/issues/11742#issuecomment-994444462 with enought explanations but not accepted byt stupid developers.. now years later.. the problems were solved and reconiced as big bug! A workaround were proposed at https://github.com/minetest/minetest/pull/12389/files but never accepted (included in this repository), cos was superset by8ff3fadba0
* related minenux/minetest-engine-multicraft2#57
This commit is contained in:
parent
2fcfcf0873
commit
8f690d2bbb
@ -35,6 +35,29 @@ variables:
|
||||
|
||||
# Jessie
|
||||
|
||||
build:debian-7:
|
||||
extends: .build_template
|
||||
image: debian:7
|
||||
before_script:
|
||||
- echo "" > /etc/apt/apt.conf.d/50venenuxcustom
|
||||
- echo "APT::Get::AllowUnauthenticated \"true\";" >> /etc/apt/apt.conf.d/50venenuxcustom
|
||||
- echo "Acquire::AllowInsecureRepositories \"true\";" >> /etc/apt/apt.conf.d/50venenuxcustom
|
||||
- echo "Acquire::AllowDowngradeToInsecureRepositories \"true\";" >> /etc/apt/apt.conf.d/50venenuxcustom
|
||||
- echo "Acquire::AllowReleaseInfoChange::Suite \"true\";" >> /etc/apt/apt.conf.d/50venenuxcustom
|
||||
- echo "Acquire::Check-Valid-Until \"false\";" >> /etc/apt/apt.conf.d/50venenuxcustom
|
||||
- echo "Acquire::Languages \"en\";" >> /etc/apt/apt.conf.d/50venenuxcustom
|
||||
- echo "Aptitude::CmdLine::Ignore-Trust-Violations \"true\";" >> /etc/apt/apt.conf.d/50venenuxcustom
|
||||
# - echo "Acquire::https::download.opensuse.org::Verify-Peer "false";" >> /etc/apt/apt.conf.d/50venenuxcustom
|
||||
- rm -rf /etc/apt/sources.list
|
||||
- echo "deb http://archive.debian.org/debian/ wheezy main contrib" > /etc/apt/sources.list.d/50debianoficial.list
|
||||
- echo "deb http://archive.debian.org/debian/ wheezy-backports main contrib non-free" >> /etc/apt/sources.list.d/50debianoficial.list
|
||||
- echo "deb http://archive.debian.org/debian/ jessie-backports main contrib non-free" >> /etc/apt/sources.list.d/50debianoficial.list
|
||||
- echo "deb http://deb.freexian.com/extended-lts wheezy main contrib non-free" >> /etc/apt/sources.list.d/50debianoficial.list
|
||||
- DEBIAN_FRONTEND=noninteractive apt-get update -y || true
|
||||
- DEBIAN_FRONTEND=noninteractive apt-get -y --force-yes install build-essential cmake pkg-config debhelper lsb-release gettext libbz2-dev libcurl4-gnutls-dev libnl-genl-3-dev libnl-3-dev librtmp-dev libidn11-dev libncurses-dev libfreetype6-dev libglu1-mesa-dev libgmp-dev libirrlicht-dev libjpeg-dev libleveldb-dev libluajit-5.1-dev liblua5.1-dev libogg-dev libopenal-dev libpng-dev libpq-dev libhiredis-dev libspatialindex-dev libsqlite3-dev libvorbis-dev libx11-dev libxxf86vm-dev libpq-dev libhiredis-dev zlib1g-dev doxygen libxrandr-dev x11proto-xf86vidmode-dev
|
||||
- DEBIAN_FRONTEND=noninteractive apt-get -y --force-yes install -t jessie-backports libjsoncpp-dev
|
||||
# Stretch
|
||||
|
||||
build:debian-8:
|
||||
extends: .build_template
|
||||
image: debian:8
|
||||
@ -53,8 +76,8 @@ build:debian-8:
|
||||
- echo "deb http://archive.debian.org/debian/ jessie-backports main contrib non-free" >> /etc/apt/sources.list.d/50debianoficial.list
|
||||
- echo "deb http://deb.freexian.com/extended-lts jessie main contrib non-free" >> /etc/apt/sources.list.d/50debianoficial.list
|
||||
- DEBIAN_FRONTEND=noninteractive apt-get update -y || true
|
||||
- DEBIAN_FRONTEND=noninteractive apt-get -y --force-yes install build-essential git cmake pkg-config cmake-data debhelper lsb-release gettext libbz2-dev libcurl4-gnutls-dev libnl-genl-3-dev libnl-3-dev librtmp-dev libidn11-dev libncurses-dev libfreetype6-dev libglu1-mesa-dev libgmp-dev libirrlicht-dev libjpeg-dev libjsoncpp-dev libleveldb-dev libluajit-5.1-dev liblua5.1-dev libogg-dev libopenal-dev libpng-dev libpq-dev libhiredis-dev libspatialindex-dev libsqlite3-dev libvorbis-dev libx11-dev libxxf86vm-dev libpq-dev libhiredis-dev zlib1g-dev doxygen libxrandr-dev x11proto-xf86vidmode-dev
|
||||
|
||||
- DEBIAN_FRONTEND=noninteractive apt-get -y --force-yes install build-essential cmake pkg-config debhelper lsb-release gettext libbz2-dev libcurl4-gnutls-dev libnl-genl-3-dev libnl-3-dev librtmp-dev libidn11-dev libncurses-dev libfreetype6-dev libglu1-mesa-dev libgmp-dev libirrlicht-dev libjpeg-dev libleveldb-dev libluajit-5.1-dev liblua5.1-dev libogg-dev libopenal-dev libpng-dev libpq-dev libhiredis-dev libspatialindex-dev libsqlite3-dev libvorbis-dev libx11-dev libxxf86vm-dev libpq-dev libhiredis-dev zlib1g-dev doxygen libxrandr-dev x11proto-xf86vidmode-dev
|
||||
- DEBIAN_FRONTEND=noninteractive apt-get -y --force-yes install -t jessie-backports libjsoncpp-dev
|
||||
# Stretch
|
||||
|
||||
build:debian-9:
|
||||
@ -128,9 +151,7 @@ build:ubuntu-14.10:
|
||||
- apt-get update -y || true
|
||||
- apt-get -y --force-yes install build-essential git cmake pkg-config cmake-data debhelper lsb-release gettext libbz2-dev libcurl4-gnutls-dev libnl-genl-3-dev libnl-3-dev librtmp-dev libidn11-dev libncurses-dev libfreetype6-dev libglu1-mesa-dev libgmp-dev libirrlicht-dev libjpeg-dev libjsoncpp-dev libleveldb-dev libluajit-5.1-dev liblua5.1-dev libogg-dev libopenal-dev libpng-dev libpq-dev libhiredis-dev libsqlite3-dev libvorbis-dev libx11-dev libxxf86vm-dev libpq-dev libhiredis-dev zlib1g-dev doxygen libxrandr-dev mesa-common-dev x11proto-xf86vidmode-dev
|
||||
|
||||
# Zesty most close to stretch
|
||||
|
||||
build:ubuntu-17.10:
|
||||
build:ubuntu-17.04:
|
||||
extends: .build_template
|
||||
image: ubuntu:zesty
|
||||
before_script:
|
||||
@ -149,6 +170,27 @@ build:ubuntu-17.10:
|
||||
- DEBIAN_FRONTEND=noninteractive apt-get update -y || true
|
||||
- DEBIAN_FRONTEND=noninteractive apt-get -y --force-yes install build-essential git cmake pkg-config cmake-data debhelper dh-systemd dh-autoreconf lsb-release gettext libbz2-dev libcurl4-gnutls-dev libnl-genl-3-dev libnl-3-dev librtmp-dev libidn11-dev libncurses-dev libfreetype6-dev libglu1-mesa-dev libgmp-dev libirrlicht-dev libjpeg-dev libjsoncpp-dev libleveldb-dev libluajit-5.1-dev liblua5.1-dev libogg-dev libopenal-dev libpng-dev libpq-dev libhiredis-dev libspatialindex-dev libsqlite3-dev libvorbis-dev libx11-dev libxxf86vm-dev postgresql-server-dev-all libpq-dev libhiredis-dev zlib1g-dev doxygen libxrandr-dev mesa-common-dev x11proto-xf86vidmode-dev libzstd-dev
|
||||
|
||||
# artful most close to stretch
|
||||
|
||||
build:ubuntu-17.10:
|
||||
extends: .build_template
|
||||
image: ubuntu:artful
|
||||
before_script:
|
||||
- echo "" > /etc/apt/apt.conf.d/50venenuxcustom
|
||||
- echo "APT::Get::AllowUnauthenticated \"true\";" >> /etc/apt/apt.conf.d/50venenuxcustom
|
||||
- echo "Acquire::AllowInsecureRepositories \"true\";" >> /etc/apt/apt.conf.d/50venenuxcustom
|
||||
- echo "Acquire::AllowDowngradeToInsecureRepositories \"true\";" >> /etc/apt/apt.conf.d/50venenuxcustom
|
||||
- echo "Acquire::AllowReleaseInfoChange::Suite \"true\";" >> /etc/apt/apt.conf.d/50venenuxcustom
|
||||
- echo "Acquire::Check-Valid-Until \"false\";" >> /etc/apt/apt.conf.d/50venenuxcustom
|
||||
- echo "Acquire::Languages \"en\";" >> /etc/apt/apt.conf.d/50venenuxcustom
|
||||
- echo "Aptitude::CmdLine::Ignore-Trust-Violations \"true\";" >> /etc/apt/apt.conf.d/50venenuxcustom
|
||||
- rm -rf /etc/apt/sources.list
|
||||
- echo "deb http://old-releases.ubuntu.com/ubuntu/ artful main restricted universe multiverse" > /etc/apt/sources.list.d/50debianoficial.list
|
||||
- echo "deb http://old-releases.ubuntu.com/ubuntu/ artful-updates main restricted universe multiverse" >> /etc/apt/sources.list.d/50debianoficial.list
|
||||
- echo "deb http://old-releases.ubuntu.com/ubuntu artful-security main restricted universe multiverse" >> /etc/apt/sources.list.d/50debianoficial.list
|
||||
- DEBIAN_FRONTEND=noninteractive apt-get update -y || true
|
||||
- DEBIAN_FRONTEND=noninteractive apt-get -y --force-yes install build-essential git cmake pkg-config cmake-data debhelper dh-systemd dh-autoreconf lsb-release gettext libbz2-dev libcurl4-gnutls-dev libnl-genl-3-dev libnl-3-dev librtmp-dev libidn11-dev libncurses-dev libfreetype6-dev libglu1-mesa-dev libgmp-dev libirrlicht-dev libjpeg-dev libjsoncpp-dev libleveldb-dev libluajit-5.1-dev liblua5.1-dev libogg-dev libopenal-dev libpng-dev libpq-dev libhiredis-dev libspatialindex-dev libsqlite3-dev libvorbis-dev libx11-dev libxxf86vm-dev postgresql-server-dev-all libpq-dev libhiredis-dev zlib1g-dev doxygen libxrandr-dev mesa-common-dev x11proto-xf86vidmode-dev libzstd-dev
|
||||
|
||||
# Xenial
|
||||
|
||||
build:ubuntu-16.04:
|
||||
|
@ -9,12 +9,51 @@ endif()
|
||||
project(minetest)
|
||||
set(PROJECT_NAME_CAPITALIZED "Minetest")
|
||||
|
||||
# check compatible compileer must be after project definition and set flags, assume if C++ is installed also CC is installed
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
|
||||
endif()
|
||||
if (CMAKE_C_COMPILER_VERSION VERSION_LESS 4.6)
|
||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
|
||||
elseif (CMAKE_C_COMPILER_VERSION VERSION_EQUAL 4.6)
|
||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu1x")
|
||||
else()
|
||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu11")
|
||||
endif()
|
||||
message(STATUS "using gnu compiler")
|
||||
elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.4)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++1y")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
|
||||
endif()
|
||||
if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 3.5)
|
||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu11")
|
||||
endif()
|
||||
message(STATUS "using clang compiler")
|
||||
else()
|
||||
if (CMAKE_VERSION VERSION_GREATER 3.0)
|
||||
set(CMAKE_C_STANDARD 11)
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
else()
|
||||
if(APPLE)
|
||||
# Fix behavior of CMAKE_CXX_STANDARD when targeting macOS.
|
||||
if (POLICY CMP0025)
|
||||
cmake_policy(SET CMP0025 NEW)
|
||||
endif ()
|
||||
endif ()
|
||||
endif()
|
||||
message(STATUS "using default installed compiler")
|
||||
endif()
|
||||
|
||||
# Also remember to set PROTOCOL_VERSION in network/networkprotocol.h when releasing
|
||||
set(VERSION_MAJOR 0)
|
||||
set(VERSION_MINOR 4)
|
||||
set(VERSION_PATCH 17)
|
||||
set(VERSION_TWEAK 1)
|
||||
set(VERSION_TWEAK 4)
|
||||
set(VERSION_EXTRA "" CACHE STRING "Stuff to append to version string")
|
||||
|
||||
# Change to false for releases
|
||||
@ -22,7 +61,7 @@ set(DEVELOPMENT_BUILD FALSE)
|
||||
|
||||
set(VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}.${VERSION_TWEAK}")
|
||||
if(VERSION_EXTRA)
|
||||
set(VERSION_STRING ${VERSION_STRING}-${VERSION_EXTRA})
|
||||
set(VERSION_STRING "${VERSION_STRING}-${VERSION_EXTRA}")
|
||||
elseif(DEVELOPMENT_BUILD)
|
||||
set(VERSION_STRING "${VERSION_STRING}-dev")
|
||||
endif()
|
||||
@ -99,7 +138,7 @@ elseif(UNIX) # Linux, BSD etc
|
||||
set(XDG_APPS_DIR "${CMAKE_INSTALL_PREFIX}/share/applications")
|
||||
set(APPDATADIR "${CMAKE_INSTALL_PREFIX}/share/metainfo")
|
||||
set(ICONDIR "${CMAKE_INSTALL_PREFIX}/share/icons")
|
||||
set(LOCALEDIR "${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}/locale")
|
||||
set(LOCALEDIR "${CMAKE_INSTALL_PREFIX}/share/locale")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
mark_as_advanced(CURL_LIBRARY CURL_INCLUDE_DIR)
|
||||
|
||||
find_library(CURL_LIBRARY NAMES curl)
|
||||
find_library(CURL_LIBRARY NAMES curl libcurl)
|
||||
find_path(CURL_INCLUDE_DIR NAMES curl/curl.h)
|
||||
|
||||
set(CURL_REQUIRED_VARS CURL_LIBRARY CURL_INCLUDE_DIR)
|
||||
|
@ -55,17 +55,21 @@ endif(WIN32)
|
||||
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(GetText DEFAULT_MSG ${GETTEXT_REQUIRED_VARS})
|
||||
find_package_handle_standard_args(GettextLib DEFAULT_MSG ${GETTEXT_REQUIRED_VARS})
|
||||
|
||||
|
||||
if(GETTEXT_FOUND)
|
||||
if(GETTEXTLIB_FOUND)
|
||||
# BSD variants require special linkage as they don't use glibc
|
||||
if(${CMAKE_SYSTEM_NAME} MATCHES "BSD")
|
||||
if(${CMAKE_SYSTEM_NAME} MATCHES "BSD|DragonFly")
|
||||
set(GETTEXT_LIBRARY "intl")
|
||||
endif()
|
||||
|
||||
set(GETTEXT_PO_PATH ${CMAKE_SOURCE_DIR}/po)
|
||||
set(GETTEXT_MO_BUILD_PATH ${CMAKE_BINARY_DIR}/locale/<locale>/LC_MESSAGES)
|
||||
if(WIN32)
|
||||
set(GETTEXT_MO_BUILD_PATH ${CMAKE_SOURCE_DIR}/locale/<locale>/LC_MESSAGES)
|
||||
else()
|
||||
set(GETTEXT_MO_BUILD_PATH ${CMAKE_BINARY_DIR}/locale/<locale>/LC_MESSAGES)
|
||||
endif()
|
||||
set(GETTEXT_MO_DEST_PATH ${LOCALEDIR}/<locale>/LC_MESSAGES)
|
||||
file(GLOB GETTEXT_AVAILABLE_LOCALES RELATIVE ${GETTEXT_PO_PATH} "${GETTEXT_PO_PATH}/*")
|
||||
list(REMOVE_ITEM GETTEXT_AVAILABLE_LOCALES minetest.pot)
|
||||
|
@ -42,12 +42,15 @@ else()
|
||||
PATHS
|
||||
/usr/local/include/irrlicht
|
||||
/usr/include/irrlicht
|
||||
/system/develop/headers/irrlicht #Haiku
|
||||
PATH_SUFFIXES "include/irrlicht"
|
||||
)
|
||||
|
||||
find_library(IRRLICHT_LIBRARY NAMES libIrrlicht.so libIrrlicht.a Irrlicht
|
||||
PATHS
|
||||
/usr/local/lib
|
||||
/usr/lib
|
||||
/system/develop/lib # Haiku
|
||||
)
|
||||
endif()
|
||||
|
||||
|
@ -8,7 +8,11 @@ option(ENABLE_SYSTEM_JSONCPP "Enable using a system-wide JSONCPP. May cause seg
|
||||
|
||||
if(ENABLE_SYSTEM_JSONCPP)
|
||||
find_library(JSON_LIBRARY NAMES jsoncpp)
|
||||
find_path(JSON_INCLUDE_DIR json/allocator.h PATH_SUFFIXES jsoncpp)
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5)
|
||||
find_path(JSON_INCLUDE_DIR json/features.h PATH_SUFFIXES jsoncpp)
|
||||
else()
|
||||
find_path(JSON_INCLUDE_DIR json/allocator.h PATH_SUFFIXES jsoncpp)
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(Json DEFAULT_MSG JSON_LIBRARY JSON_INCLUDE_DIR)
|
||||
|
@ -9,7 +9,7 @@
|
||||
FIND_PATH(LUA_INCLUDE_DIR luajit.h
|
||||
HINTS
|
||||
$ENV{LUA_DIR}
|
||||
PATH_SUFFIXES include/luajit-2.1 include/luajit-2.0 include/luajit-5_1-2.1 include/luajit-5_1-2.0 include
|
||||
PATH_SUFFIXES include/luajit-2.1 include/luajit-2.0 include/luajit-5_1-2.1 include/luajit-5_1-2.0 include luajit
|
||||
PATHS
|
||||
~/Library/Frameworks
|
||||
/Library/Frameworks
|
||||
@ -19,19 +19,31 @@ FIND_PATH(LUA_INCLUDE_DIR luajit.h
|
||||
/opt
|
||||
)
|
||||
|
||||
FIND_LIBRARY(LUA_LIBRARY
|
||||
NAMES luajit-5.1
|
||||
HINTS
|
||||
$ENV{LUA_DIR}
|
||||
PATH_SUFFIXES lib64 lib
|
||||
PATHS
|
||||
~/Library/Frameworks
|
||||
/Library/Frameworks
|
||||
/sw
|
||||
/opt/local
|
||||
/opt/csw
|
||||
/opt
|
||||
)
|
||||
# Test if running on vcpkg toolchain
|
||||
if(DEFINED VCPKG_TARGET_TRIPLET AND DEFINED VCPKG_APPLOCAL_DEPS)
|
||||
# On vcpkg luajit is 'lua51' and normal lua is 'lua'
|
||||
FIND_LIBRARY(LUA_LIBRARY
|
||||
NAMES lua51
|
||||
HINTS
|
||||
$ENV{LUA_DIR}
|
||||
PATH_SUFFIXES lib
|
||||
)
|
||||
else()
|
||||
FIND_LIBRARY(LUA_LIBRARY
|
||||
NAMES luajit-5.1
|
||||
HINTS
|
||||
$ENV{LUA_DIR}
|
||||
PATH_SUFFIXES lib64 lib
|
||||
PATHS
|
||||
~/Library/Frameworks
|
||||
/Library/Frameworks
|
||||
/sw
|
||||
/opt/local
|
||||
/opt/csw
|
||||
/opt
|
||||
)
|
||||
endif()
|
||||
|
||||
|
||||
IF(LUA_INCLUDE_DIR AND EXISTS "${LUA_INCLUDE_DIR}/luajit.h")
|
||||
FILE(STRINGS "${LUA_INCLUDE_DIR}/luajit.h" lua_version_str REGEX "^#define[ \t]+LUA_RELEASE[ \t]+\"LuaJIT .+\"")
|
||||
@ -43,7 +55,7 @@ ENDIF()
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
# handle the QUIETLY and REQUIRED arguments and set LUAJIT_FOUND to TRUE if
|
||||
# all listed variables are TRUE
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LuaJit
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LuaJIT
|
||||
REQUIRED_VARS LUA_LIBRARY LUA_INCLUDE_DIR
|
||||
VERSION_VAR LUA_VERSION_STRING)
|
||||
|
||||
|
@ -31,14 +31,10 @@ the `init.lua` scripts in a shared environment.
|
||||
Paths
|
||||
-----
|
||||
* `RUN_IN_PLACE=1` (Windows release, local build)
|
||||
* `$path_user`:
|
||||
* Linux: `<build directory>`
|
||||
* Windows: `<build directory>`
|
||||
* `$path_share`
|
||||
* Linux: `<build directory>`
|
||||
* Windows: `<build directory>`
|
||||
* `$path_user`: `<build directory>`
|
||||
* `$path_share`: `<build directory>`
|
||||
* `RUN_IN_PLACE=0`: (Linux release)
|
||||
* `$path_share`
|
||||
* `$path_share`:
|
||||
* Linux: `/usr/share/minetest`
|
||||
* Windows: `<install directory>/minetest-0.4.x`
|
||||
* `$path_user`:
|
||||
|
@ -72,6 +72,45 @@ if(CMAKE_COMPILER_IS_GNUCC)
|
||||
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_WITHDEBINFO} -O2 -g")
|
||||
endif(CMAKE_COMPILER_IS_GNUCC)
|
||||
|
||||
# check compatible compileer must be after project definition and set flags, assume if C++ is installed also CC is installed
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
|
||||
endif()
|
||||
if (CMAKE_C_COMPILER_VERSION VERSION_LESS 4.6)
|
||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
|
||||
elseif (CMAKE_C_COMPILER_VERSION VERSION_EQUAL 4.6)
|
||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu1x")
|
||||
else()
|
||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu11")
|
||||
endif()
|
||||
message(STATUS "using gnu compiler")
|
||||
elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.4)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++1y")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
|
||||
endif()
|
||||
if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 3.5)
|
||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu11")
|
||||
endif()
|
||||
message(STATUS "using clang compiler")
|
||||
else()
|
||||
if (CMAKE_VERSION VERSION_GREATER 3.0)
|
||||
set(CMAKE_C_STANDARD 11)
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
else()
|
||||
if(APPLE)
|
||||
# Fix behavior of CMAKE_CXX_STANDARD when targeting macOS.
|
||||
if (POLICY CMP0025)
|
||||
cmake_policy(SET CMP0025 NEW)
|
||||
endif ()
|
||||
endif ()
|
||||
endif()
|
||||
message(STATUS "using default installed compiler")
|
||||
endif()
|
||||
|
||||
add_subdirectory(src build)
|
||||
|
||||
|
@ -57,12 +57,12 @@ if(NOT USE_CURL)
|
||||
endif()
|
||||
|
||||
|
||||
option(ENABLE_GETTEXT "Use GetText for internationalization" FALSE)
|
||||
option(ENABLE_GETTEXT "Use GetText for internationalization" TRUE)
|
||||
set(USE_GETTEXT FALSE)
|
||||
|
||||
if(ENABLE_GETTEXT)
|
||||
find_package(GettextLib)
|
||||
if(GETTEXT_FOUND)
|
||||
if(GETTEXTLIB_FOUND)
|
||||
if(WIN32)
|
||||
message(STATUS "GetText library: ${GETTEXT_LIBRARY}")
|
||||
message(STATUS "GetText DLL: ${GETTEXT_DLL}")
|
||||
@ -70,7 +70,7 @@ if(ENABLE_GETTEXT)
|
||||
endif()
|
||||
set(USE_GETTEXT TRUE)
|
||||
message(STATUS "GetText enabled; locales found: ${GETTEXT_AVAILABLE_LOCALES}")
|
||||
endif(GETTEXT_FOUND)
|
||||
endif(GETTEXTLIB_FOUND)
|
||||
else()
|
||||
mark_as_advanced(GETTEXT_ICONV_DLL GETTEXT_INCLUDE_DIR GETTEXT_LIBRARY GETTEXT_MSGFMT)
|
||||
message(STATUS "GetText disabled.")
|
||||
@ -216,7 +216,7 @@ option(ENABLE_LEVELDB "Enable LevelDB backend" TRUE)
|
||||
set(USE_LEVELDB FALSE)
|
||||
|
||||
if(ENABLE_LEVELDB)
|
||||
find_library(LEVELDB_LIBRARY leveldb)
|
||||
find_library(LEVELDB_LIBRARY NAMES leveldb libleveldb)
|
||||
find_path(LEVELDB_INCLUDE_DIR db.h PATH_SUFFIXES leveldb)
|
||||
if(LEVELDB_LIBRARY AND LEVELDB_INCLUDE_DIR)
|
||||
set(USE_LEVELDB TRUE)
|
||||
@ -266,6 +266,12 @@ if(NOT MSVC)
|
||||
set(USE_GPROF FALSE CACHE BOOL "Use -pg flag for g++")
|
||||
endif()
|
||||
|
||||
# Haiku endian support
|
||||
if(HAIKU)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_BSD_SOURCE")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_BSD_SOURCE")
|
||||
endif()
|
||||
|
||||
# Use cmake_config.h
|
||||
add_definitions(-DUSE_CMAKE_CONFIG_H)
|
||||
|
||||
@ -309,15 +315,19 @@ if(WIN32)
|
||||
else()
|
||||
# Unix probably
|
||||
if(BUILD_CLIENT)
|
||||
find_package(X11 REQUIRED)
|
||||
find_package(OpenGL REQUIRED)
|
||||
if(NOT HAIKU AND NOT APPLE)
|
||||
find_package(X11 REQUIRED)
|
||||
find_package(OpenGL REQUIRED)
|
||||
endif(NOT HAIKU AND NOT APPLE)
|
||||
|
||||
|
||||
find_package(JPEG REQUIRED)
|
||||
find_package(BZip2 REQUIRED)
|
||||
find_package(PNG REQUIRED)
|
||||
if(APPLE)
|
||||
find_library(CARBON_LIB Carbon)
|
||||
find_library(COCOA_LIB Cocoa)
|
||||
find_library(IOKIT_LIB IOKit)
|
||||
find_library(CARBON_LIB Carbon REQUIRED)
|
||||
find_library(COCOA_LIB Cocoa REQUIRED)
|
||||
find_library(IOKIT_LIB IOKit REQUIRED)
|
||||
mark_as_advanced(
|
||||
CARBON_LIB
|
||||
COCOA_LIB
|
||||
@ -337,12 +347,16 @@ else()
|
||||
endif(HAVE_LIBRT)
|
||||
endif(APPLE)
|
||||
|
||||
if(NOT APPLE)
|
||||
# This way Xxf86vm is found on OpenBSD too
|
||||
##
|
||||
# The following dependencies are transitive dependencies from Irrlicht.
|
||||
# Minetest itself does not use them, but we link them so that statically
|
||||
# linking Irrlicht works.
|
||||
if(NOT HAIKU AND NOT APPLE)
|
||||
# This way Xxf86vm is found on OpenBSD too
|
||||
find_library(XXF86VM_LIBRARY Xxf86vm)
|
||||
mark_as_advanced(XXF86VM_LIBRARY)
|
||||
set(CLIENT_PLATFORM_LIBS ${CLIENT_PLATFORM_LIBS} ${XXF86VM_LIBRARY})
|
||||
endif(NOT APPLE)
|
||||
endif(NOT HAIKU AND NOT APPLE)
|
||||
|
||||
# Prefer local iconv if installed
|
||||
find_library(ICONV_LIBRARY iconv)
|
||||
@ -350,6 +364,10 @@ else()
|
||||
if (ICONV_LIBRARY)
|
||||
set(PLATFORM_LIBS ${PLATFORM_LIBS} ${ICONV_LIBRARY})
|
||||
endif()
|
||||
if (HAIKU)
|
||||
set(PLATFORM_LIBS ${PLATFORM_LIBS} intl network)
|
||||
endif()
|
||||
|
||||
endif()
|
||||
|
||||
check_include_files(endian.h HAVE_ENDIAN_H)
|
||||
@ -706,7 +724,7 @@ set(GETTEXT_BLACKLISTED_LOCALES
|
||||
|
||||
option(APPLY_LOCALE_BLACKLIST "Use a blacklist to avoid broken locales" TRUE)
|
||||
|
||||
if (GETTEXT_FOUND AND APPLY_LOCALE_BLACKLIST)
|
||||
if (GETTEXTLIB_FOUND AND APPLY_LOCALE_BLACKLIST)
|
||||
set(GETTEXT_USED_LOCALES "")
|
||||
foreach(LOCALE ${GETTEXT_AVAILABLE_LOCALES})
|
||||
if (NOT ";${GETTEXT_BLACKLISTED_LOCALES};" MATCHES ";${LOCALE};")
|
||||
@ -754,12 +772,68 @@ else()
|
||||
set(RELEASE_WARNING_FLAGS "")
|
||||
endif()
|
||||
|
||||
# check compatible compileer must be after project definition and set flags, assume if C++ is installed also CC is installed
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
|
||||
endif()
|
||||
if (CMAKE_C_COMPILER_VERSION VERSION_LESS 4.6)
|
||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
|
||||
elseif (CMAKE_C_COMPILER_VERSION VERSION_EQUAL 4.6)
|
||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu1x")
|
||||
else()
|
||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu11")
|
||||
endif()
|
||||
message(STATUS "using gnu compiler")
|
||||
elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.4)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++1y")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
|
||||
endif()
|
||||
if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 3.5)
|
||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu11")
|
||||
endif()
|
||||
message(STATUS "using clang compiler")
|
||||
else()
|
||||
if (CMAKE_VERSION VERSION_GREATER 3.0)
|
||||
set(CMAKE_C_STANDARD 11)
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
else()
|
||||
if(APPLE)
|
||||
# Fix behavior of CMAKE_CXX_STANDARD when targeting macOS.
|
||||
if (POLICY CMP0025)
|
||||
cmake_policy(SET CMP0025 NEW)
|
||||
endif ()
|
||||
endif ()
|
||||
endif()
|
||||
message(STATUS "using default installed compiler")
|
||||
endif()
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||
set(WARNING_FLAGS "${WARNING_FLAGS} -Wsign-compare")
|
||||
endif()
|
||||
|
||||
|
||||
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
||||
# clang does not understand __extern_always_inline but libc headers use it
|
||||
set(OTHER_FLAGS "${OTHER_FLAGS} \"-D__extern_always_inline=extern __always_inline\"")
|
||||
set(OTHER_FLAGS "${OTHER_FLAGS} -Wsign-compare")
|
||||
endif()
|
||||
|
||||
if(APPLE AND USE_LUAJIT)
|
||||
# required per http://luajit.org/install.html
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pagezero_size 10000 -image_base 100000000")
|
||||
elseif(UNIX AND USE_LUAJIT)
|
||||
check_c_source_compiles("#ifndef __aarch64__\n#error\n#endif\nint main(){}" IS_AARCH64)
|
||||
if(IS_AARCH64)
|
||||
# Move text segment below LuaJIT's 47-bit limit (see issue #9367)
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-Ttext-segment=0x200000000")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(WIN32 AND NOT ZLIBWAPI_DLL AND CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||
set(OTHER_FLAGS "${OTHER_FLAGS} -DWIN32_NO_ZLIB_WINAPI")
|
||||
message(WARNING "Defaulting to cdecl for zlib on win32 because ZLIBWAPI_DLL"
|
||||
@ -768,16 +842,44 @@ else()
|
||||
|
||||
if(MINGW)
|
||||
set(OTHER_FLAGS "${OTHER_FLAGS} -mthreads -fexceptions")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DWIN32_LEAN_AND_MEAN")
|
||||
endif()
|
||||
|
||||
# Use a safe subset of flags to speed up math calculations:
|
||||
# - we don't need errno or math exceptions
|
||||
# - we don't deal with Inf/NaN or signed zero
|
||||
set(MATH_FLAGS "-fno-math-errno -fno-trapping-math -ffinite-math-only -fno-signed-zeros")
|
||||
|
||||
# only related to moder x86 32bit platforms using gcc compilers
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
||||
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER 4.7)
|
||||
# Enable SSE for floating point math on 32-bit x86 by default
|
||||
# reasoning see minetest issue #11810 and https://gcc.gnu.org/wiki/FloatingPointMath
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||
check_c_source_compiles("#ifndef __i686__\n#error\n#endif\nint main(){}" IS_I686)
|
||||
if(IS_I686)
|
||||
message(STATUS "Detected Intel x86: using SSE instead of x87 FPU")
|
||||
set(OTHER_FLAGS "${OTHER_FLAGS} -mfpmath=sse -msse")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG ${RELEASE_WARNING_FLAGS} ${WARNING_FLAGS} ${OTHER_FLAGS} -Wall -pipe -funroll-loops")
|
||||
if(CMAKE_SYSTEM_NAME MATCHES "(Darwin|FreeBSD)")
|
||||
if(CMAKE_SYSTEM_NAME MATCHES "(Darwin|BSD|DragonFly)")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Os")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -ffast-math -fomit-frame-pointer")
|
||||
endif(CMAKE_SYSTEM_NAME MATCHES "(Darwin|FreeBSD)")
|
||||
set(CMAKE_CXX_FLAGS_SEMIDEBUG "-g -O1 -Wall -Wabi ${WARNING_FLAGS} ${OTHER_FLAGS}")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "-g -O0 -Wall -Wabi ${WARNING_FLAGS} ${OTHER_FLAGS}")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -fomit-frame-pointer")
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux"
|
||||
AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang"
|
||||
AND CMAKE_CXX_COMPILER_VERSION MATCHES "^9\\.")
|
||||
# Clang 9 has broken -ffast-math on glibc
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${MATH_FLAGS}")
|
||||
endif()
|
||||
endif(CMAKE_SYSTEM_NAME MATCHES "(Darwin|BSD|DragonFly)")
|
||||
set(CMAKE_CXX_FLAGS_SEMIDEBUG "-g -O1 -Wall ${WARNING_FLAGS} ${OTHER_FLAGS}")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "-g -O0 -Wall ${WARNING_FLAGS} ${OTHER_FLAGS}")
|
||||
|
||||
if(USE_GPROF)
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg")
|
||||
|
Loading…
x
Reference in New Issue
Block a user