1
0

More CMake cleanup

This commit is contained in:
Tiger Wang 2020-05-21 23:52:19 +01:00
parent d0f38f52cb
commit 6317176d7e
15 changed files with 312 additions and 566 deletions

View File

@ -1,22 +1,28 @@
language: cpp
cache: ccache
cache:
ccache: true
directories:
# Store ctest cost data
- Testing
# Use Linux by default
os: linux
dist: bionic
# TODO: add ARM64, PPC, IBM builds when we find CMake for them
# TODO: add IBM builds when we find CMake for them
# add PowerPC builds when sqlite3 crashing is fixed
jobs:
include:
# OSX workers are slower to start up. Having these first in the build matrix makes travis faster overall.
- name: "AppleClang - Release"
os: osx
osx_image: xcode11.3
# ARM workers are the slowest. Having these first in the build matrix makes travis faster overall.
- name: "Clang 6.0 - Debug"
arch: arm64
compiler: clang
before_install:
- HOMEBREW_NO_AUTO_UPDATE=1 brew install ccache
env: &Release
- TRAVIS_CUBERITE_BUILD_TYPE=Release
- wget --output-document=${HOME}/CMake http://anaconda.org/conda-forge/cmake/3.17.0/download/linux-aarch64/cmake-3.17.0-h28c56e5_0.tar.bz2
- tar --extract --one-top-level=${HOME}/SeeMake --file ${HOME}/CMake
- export PATH=${HOME}/SeeMake/bin/:${PATH}
env: *Debug
- name: "AppleClang - Debug"
os: osx
@ -54,14 +60,14 @@ jobs:
before_install: *use-cmake
env: *Debug
before_script:
- export PATH=$(echo "$PATH" | sed -e 's/:\/usr\/lib\/ccache//')
# Run the build and tests
script: ./travisbuild.sh
notifications:
email:
on_success: change
on_failure: always
branches:
only:
- master

View File

@ -0,0 +1,81 @@
# Set options for SQLiteCpp, disable all their tests and lints:
set(SQLITECPP_RUN_CPPLINT OFF CACHE BOOL "Run cpplint.py tool for Google C++ StyleGuide.")
set(SQLITECPP_RUN_CPPCHECK OFF CACHE BOOL "Run cppcheck C++ static analysis tool.")
set(SQLITECPP_RUN_DOXYGEN OFF CACHE BOOL "Run Doxygen C++ documentation tool.")
set(SQLITECPP_BUILD_EXAMPLES OFF CACHE BOOL "Build examples.")
set(SQLITECPP_BUILD_TESTS OFF CACHE BOOL "Build and run tests.")
set(SQLITECPP_INTERNAL_SQLITE ON CACHE BOOL "Add the internal SQLite3 source to the project.")
set(SQLITE_ENABLE_COLUMN_METADATA OFF CACHE BOOL "Enable Column::getColumnOriginName(). Require support from sqlite3 library.")
# Set options for LibEvent, disable all their tests and benchmarks:
set(EVENT__DISABLE_OPENSSL YES CACHE BOOL "Disable OpenSSL in LibEvent")
set(EVENT__DISABLE_BENCHMARK YES CACHE BOOL "Disable LibEvent benchmarks")
set(EVENT__DISABLE_TESTS YES CACHE BOOL "Disable LibEvent tests")
set(EVENT__DISABLE_REGRESS YES CACHE BOOL "Disable LibEvent regression tests")
set(EVENT__DISABLE_SAMPLES YES CACHE BOOL "Disable LibEvent samples")
set(EVENT__LIBRARY_TYPE "STATIC" CACHE STRING "Use static LibEvent libraries")
# Set options for JsonCPP, disabling all of their tests:
set(JSONCPP_WITH_TESTS OFF CACHE BOOL "Compile and (for jsoncpp_check) run JsonCpp test executables")
set(JSONCPP_WITH_POST_BUILD_UNITTEST OFF CACHE BOOL "Automatically run unit-tests as a post build step")
set(JSONCPP_WITH_PKGCONFIG_SUPPORT OFF CACHE BOOL "Generate and install .pc files")
# Set options for mbedtls:
set(ENABLE_PROGRAMS OFF CACHE BOOL "Build mbed TLS programs.")
set(ENABLE_TESTING OFF CACHE BOOL "Build mbed TLS tests.")
# Enumerate all submodule libraries
# SQLiteCpp needs to be included before sqlite so the lsqlite target is available:
set(DEPENDENCIES expat fmt jsoncpp libevent lua luaexpat mbedtls SQLiteCpp sqlite tolua++ zlib)
foreach(DEPENDENCY ${DEPENDENCIES})
# Check that the libraries are present:
if (NOT EXISTS "${PROJECT_SOURCE_DIR}/lib/${DEPENDENCY}/CMakeLists.txt")
message(FATAL_ERROR "${DEPENDENCY} is missing in folder lib/${DEPENDENCY}. Have you initialized and updated the submodules / downloaded the extra libraries?")
endif()
# Include all the libraries
# We use EXCLUDE_FROM_ALL so that only the explicit dependencies are compiled
# (mbedTLS also has test and example programs in their CMakeLists.txt, we don't want those):
add_subdirectory("lib/${DEPENDENCY}" EXCLUDE_FROM_ALL)
endforeach()
# Add required includes:
target_include_directories(
${CMAKE_PROJECT_NAME} SYSTEM PRIVATE
lib/mbedtls/include
lib/TCLAP/include
lib # TODO fix files including zlib/x instead of x
)
# Link dependencies as private:
target_link_libraries(
${CMAKE_PROJECT_NAME} PRIVATE
event_core
event_extra
fmt::fmt
jsoncpp_lib
lsqlite
lua
luaexpat
mbedtls
SQLiteCpp
tolualib
zlib
)
# Link process information library:
if (WIN32)
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE Psapi.lib)
endif()
# Special case handling for libevent pthreads:
if(NOT WIN32)
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE event_pthreads)
endif()
# Prettify jsoncpp_lib name in VS solution explorer:
set_property(TARGET jsoncpp_lib PROPERTY PROJECT_LABEL "jsoncpp")
if (WIN32)
add_subdirectory(lib/luaproxy)
endif()

60
CMake/StampBuild.cmake Normal file
View File

@ -0,0 +1,60 @@
# These env variables are used for configuring Travis CI builds.
if(DEFINED ENV{TRAVIS_CUBERITE_FORCE32})
set(FORCE32 $ENV{TRAVIS_CUBERITE_FORCE32})
endif()
if(DEFINED ENV{TRAVIS_BUILD_WITH_COVERAGE})
set(BUILD_WITH_COVERAGE $ENV{TRAVIS_BUILD_WITH_COVERAGE})
endif()
if(DEFINED ENV{CUBERITE_BUILD_ID})
# The build info is defined by the build system (Travis / Jenkins)
set(BUILD_ID $ENV{CUBERITE_BUILD_ID})
set(BUILD_SERIES_NAME $ENV{CUBERITE_BUILD_SERIES_NAME})
set(BUILD_DATETIME $ENV{CUBERITE_BUILD_DATETIME})
if(DEFINED ENV{CUBERITE_BUILD_COMMIT_ID})
set(BUILD_COMMIT_ID $ENV{CUBERITE_BUILD_COMMIT_ID})
else()
message("Commit id not set, attempting to determine id from git")
execute_process(
COMMAND git rev-parse HEAD
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
RESULT_VARIABLE GIT_EXECUTED
OUTPUT_VARIABLE BUILD_COMMIT_ID
)
string(STRIP ${BUILD_COMMIT_ID} BUILD_COMMIT_ID)
if (NOT (GIT_EXECUTED EQUAL 0))
message(FATAL_ERROR "Could not identifiy git commit id")
endif()
endif()
else()
# This is a local build, stuff in some basic info:
set(BUILD_ID "Unknown")
set(BUILD_SERIES_NAME "local build")
execute_process(
COMMAND git rev-parse HEAD
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
RESULT_VARIABLE GIT_EXECUTED
OUTPUT_VARIABLE BUILD_COMMIT_ID
)
if (NOT(GIT_EXECUTED EQUAL 0))
set(BUILD_COMMIT_ID "Unknown")
endif()
string(STRIP ${BUILD_COMMIT_ID} BUILD_COMMIT_ID)
execute_process(
COMMAND git log -1 --date=iso --pretty=format:%ai
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
RESULT_VARIABLE GIT_EXECUTED
OUTPUT_VARIABLE BUILD_DATETIME
)
if (NOT(GIT_EXECUTED EQUAL 0))
set(BUILD_DATETIME "Unknown")
endif()
string(STRIP ${BUILD_DATETIME} BUILD_DATETIME)
# The BUILD_COMMIT_ID and BUILD_DATETIME aren't updated on each repo pull
# They are only updated when cmake re-configures the project
# Therefore mark them as "approx: "
set(BUILD_COMMIT_ID "approx: ${BUILD_COMMIT_ID}")
set(BUILD_DATETIME "approx: ${BUILD_DATETIME}")
endif()

View File

@ -14,6 +14,7 @@
cmake_minimum_required (VERSION 3.13)
cmake_policy(VERSION 3.13...3.17.2)
project(
Cuberite
DESCRIPTION "A lightweight, fast and extensible game server for Minecraft"
@ -22,76 +23,11 @@ project(
)
option(BUILD_TOOLS "Sets up additional executables to be built along with the server" OFF)
option(WHOLE_PROGRAM_OPTIMISATION "Enables link time optimisation for Release" ON)
option(PRECOMPILE_HEADERS "Enable precompiled headers for faster builds" ON)
option(SELF_TEST "Enables testing code to be built" OFF)
option(UNITY_BUILDS "Enables source aggregation for faster builds" ON)
# These env variables are used for configuring Travis CI builds.
if(DEFINED ENV{TRAVIS_CUBERITE_BUILD_TYPE})
message("Setting build type to $ENV{TRAVIS_CUBERITE_BUILD_TYPE}")
set(CMAKE_BUILD_TYPE $ENV{TRAVIS_CUBERITE_BUILD_TYPE})
endif()
if(DEFINED ENV{TRAVIS_CUBERITE_FORCE32})
set(FORCE32 $ENV{TRAVIS_CUBERITE_FORCE32})
endif()
if(DEFINED ENV{TRAVIS_BUILD_WITH_COVERAGE})
set(BUILD_WITH_COVERAGE $ENV{TRAVIS_BUILD_WITH_COVERAGE})
endif()
if(DEFINED ENV{CUBERITE_BUILD_ID})
# The build info is defined by the build system (Travis / Jenkins)
set(BUILD_ID $ENV{CUBERITE_BUILD_ID})
set(BUILD_SERIES_NAME $ENV{CUBERITE_BUILD_SERIES_NAME})
set(BUILD_DATETIME $ENV{CUBERITE_BUILD_DATETIME})
if(DEFINED ENV{CUBERITE_BUILD_COMMIT_ID})
set(BUILD_COMMIT_ID $ENV{CUBERITE_BUILD_COMMIT_ID})
else()
message("Commit id not set, attempting to determine id from git")
execute_process(
COMMAND git rev-parse HEAD
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
RESULT_VARIABLE GIT_EXECUTED
OUTPUT_VARIABLE BUILD_COMMIT_ID
)
string(STRIP ${BUILD_COMMIT_ID} BUILD_COMMIT_ID)
if (NOT (GIT_EXECUTED EQUAL 0))
message(FATAL_ERROR "Could not identifiy git commit id")
endif()
endif()
else()
# This is a local build, stuff in some basic info:
set(BUILD_ID "Unknown")
set(BUILD_SERIES_NAME "local build")
execute_process(
COMMAND git rev-parse HEAD
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
RESULT_VARIABLE GIT_EXECUTED
OUTPUT_VARIABLE BUILD_COMMIT_ID
)
if (NOT(GIT_EXECUTED EQUAL 0))
set(BUILD_COMMIT_ID "Unknown")
endif()
string(STRIP ${BUILD_COMMIT_ID} BUILD_COMMIT_ID)
execute_process(
COMMAND git log -1 --date=iso --pretty=format:%ai
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
RESULT_VARIABLE GIT_EXECUTED
OUTPUT_VARIABLE BUILD_DATETIME
)
if (NOT(GIT_EXECUTED EQUAL 0))
set(BUILD_DATETIME "Unknown")
endif()
string(STRIP ${BUILD_DATETIME} BUILD_DATETIME)
# The BUILD_COMMIT_ID and BUILD_DATETIME aren't updated on each repo pull
# They are only updated when cmake re-configures the project
# Therefore mark them as "approx: "
set(BUILD_COMMIT_ID "approx: ${BUILD_COMMIT_ID}")
set(BUILD_DATETIME "approx: ${BUILD_DATETIME}")
endif()
# We need C++17 features
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
@ -107,108 +43,9 @@ endif()
# Static CRT
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
# This has to be done before any flags have been set up.
if(${BUILD_TOOLS})
message("Building tools")
add_subdirectory(Tools/GrownBiomeGenVisualiser/)
add_subdirectory(Tools/MCADefrag/)
add_subdirectory(Tools/NoiseSpeedTest/)
add_subdirectory(Tools/ProtoProxy/)
endif()
# Add build timestamp and details:
include("CMake/StampBuild.cmake")
if(${BUILD_UNSTABLE_TOOLS})
message("Building unstable tools")
add_subdirectory(Tools/GeneratorPerformanceTest/)
endif()
include(SetFlags.cmake)
set_flags()
set_lib_flags()
enable_profile()
# Set options for SQLiteCpp, disable all their tests and lints:
set(SQLITECPP_RUN_CPPLINT OFF CACHE BOOL "Run cpplint.py tool for Google C++ StyleGuide." FORCE)
set(SQLITECPP_RUN_CPPCHECK OFF CACHE BOOL "Run cppcheck C++ static analysis tool." FORCE)
set(SQLITECPP_RUN_DOXYGEN OFF CACHE BOOL "Run Doxygen C++ documentation tool." FORCE)
set(SQLITECPP_BUILD_EXAMPLES OFF CACHE BOOL "Build examples." FORCE)
set(SQLITECPP_BUILD_TESTS OFF CACHE BOOL "Build and run tests." FORCE)
set(SQLITECPP_INTERNAL_SQLITE ON CACHE BOOL "Add the internal SQLite3 source to the project." FORCE)
set(SQLITE_ENABLE_COLUMN_METADATA OFF CACHE BOOL "" FORCE)
# Set options for LibEvent, disable all their tests and benchmarks:
set(EVENT__DISABLE_OPENSSL YES CACHE BOOL "Disable OpenSSL in LibEvent" FORCE)
set(EVENT__DISABLE_BENCHMARK YES CACHE BOOL "Disable LibEvent benchmarks" FORCE)
set(EVENT__DISABLE_TESTS YES CACHE BOOL "Disable LibEvent tests" FORCE)
set(EVENT__DISABLE_REGRESS YES CACHE BOOL "Disable LibEvent regression tests" FORCE)
set(EVENT__DISABLE_SAMPLES YES CACHE BOOL "Disable LibEvent samples" FORCE)
set(EVENT__LIBRARY_TYPE "STATIC" CACHE STRING "Use static LibEvent libraries" FORCE)
# Set options for JsonCPP, disabling all of their tests:
set(JSONCPP_WITH_TESTS OFF CACHE BOOL "Compile and (for jsoncpp_check) run JsonCpp test executables")
set(JSONCPP_WITH_POST_BUILD_UNITTEST OFF CACHE BOOL "Automatically run unit-tests as a post build step")
set(JSONCPP_WITH_PKGCONFIG_SUPPORT OFF CACHE BOOL "Generate and install .pc files")
# Set options for mbedtls:
set(ENABLE_PROGRAMS OFF CACHE BOOL "Build mbed TLS programs.")
set(ENABLE_TESTING OFF CACHE BOOL "Build mbed TLS tests.")
# Check that the libraries are present:
if (NOT EXISTS ${PROJECT_SOURCE_DIR}/lib/SQLiteCpp/CMakeLists.txt)
message(FATAL_ERROR "SQLiteCpp is missing in folder lib/SQLiteCpp. Have you initialized the submodules / downloaded the extra libraries?")
endif()
if (NOT EXISTS ${PROJECT_SOURCE_DIR}/lib/mbedtls/CMakeLists.txt)
message(FATAL_ERROR "mbedTLS is missing in folder lib/mbedtls. Have you initialized the submodules / downloaded the extra libraries?")
endif()
if (NOT EXISTS ${PROJECT_SOURCE_DIR}/lib/libevent/CMakeLists.txt)
message(FATAL_ERROR "LibEvent is missing in folder lib/libevent. Have you initialized and updated the submodules / downloaded the extra libraries?")
endif()
if (NOT EXISTS ${PROJECT_SOURCE_DIR}/lib/jsoncpp/CMakeLists.txt)
message(FATAL_ERROR "JsonCPP is missing in folder lib/jsoncpp. Have you initialized and updated the submodules / downloaded the extra libraries?")
endif()
if (NOT EXISTS ${PROJECT_SOURCE_DIR}/lib/cmake-coverage/CodeCoverage.cmake)
message(FATAL_ERROR "cmake-coverage is missing in folder lib/cmake-coverage. Have you initialized and updated the submodules / downloaded the extra libraries?")
endif()
if (NOT EXISTS ${PROJECT_SOURCE_DIR}/lib/expat/CMakeLists.txt)
message(FATAL_ERROR "expat is missing in folder lib/expat. Have you initialized and updated the submodules / downloaded the extra libraries?")
endif()
if (NOT EXISTS ${PROJECT_SOURCE_DIR}/lib/fmt/CMakeLists.txt)
message(FATAL_ERROR "fmt is missing in folder lib/fmt. Have you initialized and updated the submodules / downloaded the extra libraries?")
endif()
if (NOT EXISTS ${PROJECT_SOURCE_DIR}/lib/lua/CMakeLists.txt)
message(FATAL_ERROR "lua is missing in folder lib/lua. Have you initialized and updated the submodules / downloaded the extra libraries?")
endif()
if (NOT EXISTS ${PROJECT_SOURCE_DIR}/lib/luaexpat/CMakeLists.txt)
message(FATAL_ERROR "luaexpat is missing in folder lib/luaexpat. Have you initialized and updated the submodules / downloaded the extra libraries?")
endif()
if (NOT EXISTS ${PROJECT_SOURCE_DIR}/lib/luaproxy/CMakeLists.txt)
message(FATAL_ERROR "luaproxy is missing in folder lib/luaproxy. Have you initialized and updated the submodules / downloaded the extra libraries?")
endif()
if (NOT EXISTS ${PROJECT_SOURCE_DIR}/lib/sqlite/CMakeLists.txt)
message(FATAL_ERROR "sqlite is missing in folder lib/sqlite. Have you initialized and updated the submodules / downloaded the extra libraries?")
endif()
if (NOT EXISTS ${PROJECT_SOURCE_DIR}/lib/tolua++/CMakeLists.txt)
message(FATAL_ERROR "tolua++ is missing in folder lib/tolua++. Have you initialized and updated the submodules / downloaded the extra libraries?")
endif()
if (NOT EXISTS ${PROJECT_SOURCE_DIR}/lib/zlib/CMakeLists.txt)
message(FATAL_ERROR "zlib is missing in folder lib/zlib. Have you initialized and updated the submodules / downloaded the extra libraries?")
endif()
# Include all the libraries
# We use EXCLUDE_FROM_ALL so that only the explicit dependencies are compiled
# (mbedTLS also has test and example programs in their CMakeLists.txt, we don't want those):
add_subdirectory(lib/expat)
add_subdirectory(lib/fmt)
add_subdirectory(lib/jsoncpp EXCLUDE_FROM_ALL)
add_subdirectory(lib/libevent EXCLUDE_FROM_ALL)
add_subdirectory(lib/lua)
add_subdirectory(lib/luaexpat)
add_subdirectory(lib/mbedtls)
add_subdirectory(lib/SQLiteCpp) # SQLiteCpp needs to be included before sqlite so the lsqlite target is available
add_subdirectory(lib/sqlite)
add_subdirectory(lib/tolua++ EXCLUDE_FROM_ALL)
add_subdirectory(lib/zlib)
set_exe_flags()
add_executable(${CMAKE_PROJECT_NAME})
add_subdirectory(src)
@ -222,54 +59,11 @@ if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.16")
target_precompile_headers(${CMAKE_PROJECT_NAME} PRIVATE src/Globals.h)
endif()
if (UNITY_BUILDS)
set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES UNITY_BUILD ON)
endif()
set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES UNITY_BUILD ${UNITY_BUILDS})
else()
message(WARNING "Precompiled headers for FASTER BUILDS not enabled, upgrade to CMake 1.16 or newer!")
endif()
# Add required includes:
target_include_directories(
${CMAKE_PROJECT_NAME} SYSTEM PRIVATE
lib/mbedtls/include
lib/TCLAP/include
lib # TODO fix files including zlib/x instead of x
)
# Link dependencies as private:
target_link_libraries(
${CMAKE_PROJECT_NAME} PRIVATE
event_core
event_extra
fmt::fmt
jsoncpp_lib
lsqlite
lua
luaexpat
mbedtls
SQLiteCpp
tolualib
zlib
)
# Link process information library:
if (WIN32)
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE Psapi.lib)
endif()
# Special case handling for libevent pthreads:
if(NOT WIN32)
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE event_pthreads_static)
endif()
# Prettify jsoncpp_lib name in VS solution explorer:
set_property(TARGET jsoncpp_lib PROPERTY PROJECT_LABEL "jsoncpp")
if (WIN32)
add_subdirectory(lib/luaproxy)
endif()
# Selectively disable warnings in the level where the target is created:
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
# Generated file has old-style casts, missing prototypes, and deprecated declarations
@ -279,6 +73,19 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set_source_files_properties("${CMAKE_SOURCE_DIR}/src/IniFile.cpp" PROPERTIES COMPILE_OPTIONS -Wno-header-hygiene)
endif()
if(${BUILD_TOOLS})
message("Building tools")
add_subdirectory(Tools/GrownBiomeGenVisualiser/)
add_subdirectory(Tools/MCADefrag/)
add_subdirectory(Tools/NoiseSpeedTest/)
add_subdirectory(Tools/ProtoProxy/)
endif()
if(${BUILD_UNSTABLE_TOOLS})
message("Building unstable tools")
add_subdirectory(Tools/GeneratorPerformanceTest/)
endif()
# Self Test Mode enables extra checks at startup
if(${SELF_TEST})
message("Tests enabled")
@ -286,7 +93,8 @@ if(${SELF_TEST})
add_subdirectory(tests)
endif()
include("CMake/AddDependencies.cmake")
include("CMake/Fixups.cmake")
include("CMake/GenerateBindings.cmake")
include("CMake/GroupSources.cmake")
# TODO: include("CMake/SetCompilerFlags.cmake")
include("SetFlags.cmake")

View File

@ -3,13 +3,20 @@
:: It is expected to be run with the Server folder as the current working dir
@echo on
del Cuberite.zip
del PDBs.zip
del ManualAPI.zip
del AutoAPI.zip
rd /q /s Plugins\ManualApiDump
:: Only test that the server runs for pull requests
:: Don't upload any artifacts until it's merged into master
if defined APPVEYOR_PULL_REQUEST_NUMBER (
echo stop 1>>cmds.txt
Cuberite --port 32767 0<cmds.txt
exit /b
)
:: Main executables
echo Cuberite %APPVEYOR_JOB_NAME%-#%APPVEYOR_BUILD_NUMBER% 1>buildinfo.txt
7z a -tzip -y Cuberite.zip -scsWIN -i@Install\WindowsExecutables.list -xr!*.git*
7z a -tzip -y PDBs.zip -scsWIN -i@Install/WindowsPDBs.list -xr!*.git*
:: Generate API documentation
git clone https://github.com/madmaxoft/ManualApiDump Plugins/ManualApiDump
echo load ManualApiDump 1>cmds.txt
echo manualapi 1>>cmds.txt
@ -17,5 +24,14 @@ echo load APIDump 1>>cmds.txt
echo api 1>>cmds.txt
echo stop 1>>cmds.txt
Cuberite --port 32767 0<cmds.txt
:: API documentation
7z a -tzip -y ManualAPI.zip -scsWIN "ManualAPI.lua"
7z a -tzip -y AutoAPI.zip -scsWIN ".\BindingsDocs\*.lua" -x!_raw.lua
:: Upload artifacts
appveyor PushArtifact Cuberite.zip
appveyor PushArtifact PDBs.zip
appveyor PushArtifact AutoAPI.zip
appveyor PushArtifact ManualAPI.zip
appveyor PushArtifact .luacheckrc

View File

@ -1,5 +1,3 @@
macro (add_flags_lnk FLAGS)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${FLAGS}")
@ -20,156 +18,6 @@ macro(add_flags_cxx FLAGS)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FLAGS}")
endmacro()
#this is a hack because we can't use cmake 2.8.10 because of travis
macro(get_clang_version)
execute_process(
COMMAND "${CMAKE_CXX_COMPILER}" "--version"
OUTPUT_VARIABLE CLANG_VERSION_OUTPUT)
string(REGEX MATCH "version ([0-9]+\\.[0-9]+)" x ${CLANG_VERSION_OUTPUT})
set(CLANG_VERSION ${CMAKE_MATCH_1})
endmacro()
macro(set_flags)
# Add coverage processing, if requested:
if (NOT MSVC)
if (CMAKE_BUILD_TYPE STREQUAL "COVERAGE")
message("Including CodeCoverage")
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/lib/cmake-coverage/")
include(CodeCoverage)
endif()
endif()
# Add the preprocessor macros used for distinguishing between debug and release builds (CMake does this automatically for MSVC):
if (NOT MSVC)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG")
set(CMAKE_CXX_FLAGS_COVERAGE "${CMAKE_CXX_FLAGS_COVERAGE} -D_DEBUG")
set(CMAKE_C_FLAGS_COVERAGE "${CMAKE_C_FLAGS_COVERAGE} -D_DEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNDEBUG")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DNDEBUG")
endif()
if(MSVC)
# Make build use multiple threads under MSVC:
add_flags_cxx("/MP")
# Make release builds use link-time code generation:
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GL")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /GL")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG")
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /LTCG")
set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} /LTCG")
# Make MSVC generate the PDB files even for the release build
# (TODO: have AppVeyor build RelWithDebInfo and remove):
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Zi")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG")
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG")
set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} /DEBUG")
# Make build use Unicode:
add_definitions(-DUNICODE -D_UNICODE)
elseif(APPLE)
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
execute_process(
COMMAND ${CMAKE_C_COMPILER} -dumpversion
OUTPUT_VARIABLE GCC_VERSION
)
endif()
#on os x clang adds pthread for us but we need to add it for gcc
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
add_flags_cxx("-stdlib=libc++")
add_flags_lnk("-stdlib=libc++")
else()
add_flags_cxx("-pthread")
endif()
elseif (ANDROID)
add_flags_cxx("-fsigned-char")
else()
# Let gcc / clang know that we're compiling a multi-threaded app:
if (${UNIX})
add_flags_cxx("-pthread")
add_flags_lnk("-pthread")
endif()
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
execute_process(
COMMAND ${CMAKE_C_COMPILER} -dumpversion
OUTPUT_VARIABLE GCC_VERSION
)
endif()
# We use a signed char (fixes #640 on RasPi)
add_flags_cxx("-fsigned-char")
endif()
# Allow for a forced 32-bit build under 64-bit OS:
if (FORCE_32)
add_flags_cxx("-m32")
add_flags_lnk("-m32")
endif()
# Have the compiler generate code specifically targeted at the current machine on Linux
if(LINUX AND NOT NO_NATIVE_OPTIMIZATION)
add_flags_cxx("-march=native")
endif()
if(CROSSCOMPILE)
message(FATAL_ERROR "The CROSSCOMPILE flag has been renamed to NO_NATIVE_OPTIMIZATION. Please update your build scripts to compile Cuberite.")
endif()
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
get_clang_version()
endif()
# Use static CRT in MSVC builds:
if (MSVC)
string(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
string(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
string(REPLACE "/MDd" "/MTd" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
string(REPLACE "/MDd" "/MTd" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
endif()
endmacro()
macro(set_lib_flags)
# Set lower warnings-level for the libraries:
if (MSVC)
# Remove /W3 from command line -- cannot just cancel it later with /w like in unix, MSVC produces a D9025 warning (option1 overriden by option2)
string(REPLACE "/W3" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
string(REPLACE "/W3" "" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
string(REPLACE "/W3" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
string(REPLACE "/W3" "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
else()
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -w")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -w")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -w")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -w")
set(CMAKE_CXX_FLAGS_COVERAGE "${CMAKE_CXX_FLAGS_COVERAGE} -w")
set(CMAKE_C_FLAGS_COVERAGE "${CMAKE_C_FLAGS_COVERAGE} -w")
endif()
# On Unix we use two dynamic loading libraries dl and ltdl.
# Preference is for dl on unknown systems as it is specified in POSIX
# the dynamic loader is used by lua and sqllite.
if (UNIX)
if(${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
set(DYNAMIC_LOADER ltdl)
else()
set(DYNAMIC_LOADER dl)
endif()
endif()
endmacro()
macro(enable_profile)
# Declare the flags used for profiling builds:
if (MSVC)
@ -233,87 +81,81 @@ macro(enable_profile)
endif()
endmacro()
macro(set_exe_flags)
# Remove disabling the maximum warning level:
# clang does not like a command line that reads -Wall -Wextra -w -Wall -Wextra and does not output any warnings
# We do not do that for MSVC since MSVC produces an awful lot of warnings for its own STL headers;
# the important warnings are turned on using #pragma in Globals.h
# Add coverage processing, if requested:
if (NOT MSVC)
string(REPLACE "-w" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
string(REPLACE "-w" "" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
string(REPLACE "-w" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
string(REPLACE "-w" "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
string(REPLACE "-w" "" CMAKE_CXX_FLAGS_COVERAGE "${CMAKE_CXX_FLAGS_COVERAGE}")
string(REPLACE "-w" "" CMAKE_C_FLAGS_COVERAGE "${CMAKE_C_FLAGS_COVERAGE}")
add_flags_cxx("-Wall -Wextra -Wno-unused-parameter -Wno-missing-noreturn")
# we support non-IEEE 754 fpus so can make no guarentees about error
add_flags_cxx("-ffast-math")
if(${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
# backtrace() and friends are in libexecinfo
add_flags_lnk("-lexecinfo")
endif()
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
if ("${CLANG_VERSION}" VERSION_LESS 3.0)
message(FATAL_ERROR "Cuberite requires clang version 3.0 or higher, your version is ${CLANG_VERSION}")
endif()
# clang does not provide the __extern_always_inline macro and a part of libm depends on this when using fast-math
add_flags_cxx("-D__extern_always_inline=inline")
add_flags_cxx("-Weverything -Werror -Wno-c++98-compat-pedantic -Wno-string-conversion")
add_flags_cxx("-Wno-exit-time-destructors -Wno-padded -Wno-weak-vtables")
add_flags_cxx("-Wno-switch-enum") # This is a pretty useless warning, we've already got -Wswitch which is what we need
if ("${CLANG_VERSION}" VERSION_GREATER 3.0)
# flags that are not present in 3.0
add_flags_cxx("-Wno-implicit-fallthrough")
endif()
if ("${CLANG_VERSION}" VERSION_GREATER 3.1)
# flags introduced in 3.2
add_flags_cxx("-Wno-documentation")
endif()
if ("${CLANG_VERSION}" VERSION_GREATER 3.4)
add_flags_cxx("-Wno-error=disabled-macro-expansion")
endif()
if ("${CLANG_VERSION}" VERSION_GREATER 3.5)
include(CheckCXXCompilerFlag)
check_cxx_compiler_flag(-Wno-reserved-id-macro HAS_NO_RESERVED_ID_MACRO)
check_cxx_compiler_flag(-Wno-documentation-unknown-command HAS_NO_DOCUMENTATION_UNKNOWN)
if (HAS_NO_RESERVED_ID_MACRO)
# Use this flag to ignore error for a reserved macro problem in sqlite 3
add_flags_cxx("-Wno-reserved-id-macro")
endif()
if (HAS_NO_DOCUMENTATION_UNKNOWN)
# Ignore another problem in sqlite
add_flags_cxx("-Wno-documentation-unknown-command")
endif()
endif()
if ("${CLANG_VERSION}" VERSION_GREATER 3.7)
check_cxx_compiler_flag(-Wno-double-promotion HAS_NO_DOUBLE_PROMOTION)
if (HAS_NO_DOUBLE_PROMOTION)
add_flags_cxx("-Wno-double-promotion")
endif()
endif()
add_flags_cxx("-Wno-error=unused-command-line-argument")
add_flags_cxx("-Wno-documentation-unknown-command")
if (CMAKE_BUILD_TYPE STREQUAL "COVERAGE")
message("Including CodeCoverage")
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/lib/cmake-coverage/")
include(CodeCoverage)
endif()
endif()
endmacro()
# TODO: is this needed? NDEBUG is standard. Also, why are we using _DEBUG?
# Add the preprocessor macros used for distinguishing between debug and release builds (CMake does this automatically for MSVC):
if (NOT MSVC)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG")
set(CMAKE_CXX_FLAGS_COVERAGE "${CMAKE_CXX_FLAGS_COVERAGE} -D_DEBUG")
set(CMAKE_C_FLAGS_COVERAGE "${CMAKE_C_FLAGS_COVERAGE} -D_DEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNDEBUG")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DNDEBUG")
endif()
# if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
# foreach(FILENAME ${ARGN})
# message("downgrade_warnings for ${FILENAME}")
# set_source_files_properties(${FILENAME} PROPERTIES COMPILE_FLAGS "-Wno-error=sign-conversion -Wno-error=conversion")
# set_source_files_properties(${FILENAME} PROPERTIES COMPILE_FLAGS "-Wno-error=missing-prototypes -Wno-error=deprecated")
# set_source_files_properties(${FILENAME} PROPERTIES COMPILE_FLAGS "-Wno-error=shadow -Wno-error=old-style-cast -Wno-error=switch-enum -Wno-error=switch")
# set_source_files_properties(${FILENAME} PROPERTIES COMPILE_FLAGS "-Wno-error=float-equal -Wno-error=global-constructors")
if(MSVC)
# Make build use multiple threads under MSVC:
add_compile_options(/MP)
# if ("${CLANG_VERSION}" VERSION_GREATER 3.0)
# # flags that are not present in 3.0
# set_source_files_properties(${FILENAME} PROPERTIES COMPILE_FLAGS "-Wno-error=covered-switch-default ")
# set_source_files_properties(${FILENAME} PROPERTIES COMPILE_FLAGS "-Wno-implicit-fallthrough -Wno-error=extra-semi")
# set_source_files_properties(${FILENAME} PROPERTIES COMPILE_FLAGS "-Wno-error=missing-variable-declarations")
# endif()
# endforeach()
# endif()
# Make build use Unicode:
add_compile_definitions(UNICODE _UNICODE)
# TODO: level 4, warnings as errors
else()
target_compile_options(
${CMAKE_PROJECT_NAME} PRIVATE
# We use a signed char (fixes #640 on RasPi)
# TODO: specify this in code, not a compile flag:
-fsigned-char
# We support non-IEEE 754 FPUs so can make no guarantees about error:
-ffast-math
# All warnings:
-Wall -Wextra
# TODO: actually fix the warnings instead of disabling them
# or at least disable on a file-level basis:
-Wno-unused-parameter -Wno-missing-noreturn -Wno-padded -Wno-implicit-fallthrough
-Wno-double-promotion
# This is a pretty useless warning, we've already got -Wswitch which is what we need:
-Wno-switch-enum
)
if(CMAKE_CXX_COMPILE_ID STREQUAL "Clang")
target_compile_options(
${CMAKE_PROJECT_NAME}Cuberite PRIVATE
# Warnings-as-errors only on Clang for now:
-Werror
# Weverything with Clang exceptions:
-Weverything -Wno-error=disabled-macro-expansion -Wno-weak-vtables
-Wno-exit-time-destructors -Wno-string-conversion -Wno-c++98-compat-pedantic
-Wno-documentation -Wno-documentation-unknown-command -Wno-reserved-id-macro
-Wno-error=unused-command-line-argument
)
endif()
endif()
# Allow for a forced 32-bit build under 64-bit OS:
if (FORCE_32)
add_flags_cxx("-m32")
add_flags_lnk("-m32")
endif()
# Have the compiler generate code specifically targeted at the current machine on Linux:
if(LINUX AND NOT NO_NATIVE_OPTIMIZATION)
add_flags_cxx("-march=native")
endif()

View File

@ -2,10 +2,6 @@ project (AnvilStats)
include(../../SetFlags.cmake)
set_flags()
set_lib_flags()
# Set include paths to the used libraries:
include_directories("../../lib")
include_directories("../../src")
@ -23,8 +19,6 @@ endfunction()
add_subdirectory(../../lib/zlib ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/lib/zlib)
set_exe_flags()
# Include the shared files:
set(SHARED_SRC
../../src/ByteBuffer.cpp

View File

@ -1,13 +1,7 @@
project (GrownBiomeGenVisualiser)
# Without this, the MSVC variable isn't defined for MSVC builds ( https://www.cmake.org/pipermail/cmake/2011-November/047130.html )
enable_language(CXX C)
find_package(Threads REQUIRED)
include(../../SetFlags.cmake)
set_flags()
set_lib_flags()
enable_profile()
# Set include paths to the used libraries:
include_directories(SYSTEM "../../lib")
@ -24,10 +18,6 @@ function(flatten_files arg1)
endfunction()
# Include the libraries:
set_exe_flags()
# Include the shared files:
set(SHARED_SRC
../../src/StringUtils.cpp
@ -89,6 +79,6 @@ add_executable(GrownBiomeGenVisualiser
${SHARED_OSS_HDR}
)
target_link_libraries(GrownBiomeGenVisualiser fmt::fmt)
target_link_libraries(GrownBiomeGenVisualiser fmt::fmt Threads::Threads)
set_target_properties(GrownBiomeGenVisualiser PROPERTIES FOLDER Tools)

View File

@ -1,13 +1,8 @@
cmake_minimum_required(VERSION 3.13)
project (MCADefrag)
# Without this, the MSVC variable isn't defined for MSVC builds ( https://www.cmake.org/pipermail/cmake/2011-November/047130.html )
enable_language(CXX C)
find_package(Threads REQUIRED)
include(../../SetFlags.cmake)
set_flags()
set_lib_flags()
enable_profile()
# Set include paths to the used libraries:
include_directories(SYSTEM "../../lib")
@ -28,8 +23,6 @@ endfunction()
add_subdirectory(../../lib/zlib ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/lib/zlib)
set_exe_flags()
# Include the shared files:
set(SHARED_SRC
../../src/StringCompression.cpp
@ -93,4 +86,4 @@ add_executable(MCADefrag
${SHARED_OSS_HDR}
)
target_link_libraries(MCADefrag zlib fmt::fmt)
target_link_libraries(MCADefrag zlib fmt::fmt Threads::Threads)

View File

@ -1,16 +1,11 @@
project (NoiseSpeedTest)
include(../../SetFlags.cmake)
set_flags()
set_lib_flags()
enable_profile()
# Set include paths to the used libraries:
include_directories(SYSTEM "../../lib")
include_directories("../../src")
set_exe_flags()
# Include the shared files:
set(SHARED_SRC
../../src/Logger.cpp

View File

@ -1,11 +1,8 @@
project (ProtoProxy)
find_package(Threads REQUIRED)
include(../../SetFlags.cmake)
set_flags()
set_lib_flags()
# Set include paths to the used libraries:
include_directories(SYSTEM "../../lib")
include_directories(SYSTEM "../../lib/mbedtls/include")
@ -22,8 +19,6 @@ endfunction()
add_subdirectory(../../lib/zlib ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/lib/zlib)
set_exe_flags()
# Include the shared files:
set(SHARED_SRC
../../src/ByteBuffer.cpp
@ -99,5 +94,5 @@ add_executable(ProtoProxy
${SHARED_OSS_HDR}
)
target_link_libraries(ProtoProxy zlib mbedtls fmt::fmt)
target_link_libraries(ProtoProxy zlib mbedtls fmt::fmt Threads::Threads)

View File

@ -5,6 +5,10 @@ image:
- Visual Studio 2019
- Visual Studio 2017
branches:
only:
- master
# Set up environment variables for build info
environment:
CUBERITE_BUILD_SERIES_NAME: AppVeyor
@ -12,17 +16,17 @@ environment:
CUBERITE_BUILD_DATETIME: "%APPVEYOR_REPO_COMMIT_TIMESTAMP%"
matrix:
- job_name: Windows-x64-debug
- job_name: Windows-x64-Debug
configuration: Debug
BUILD_DIR: Debug-x64
BUILD_DIR: Debug x64
- job_name: Windows-x86
configuration: Release
BUILD_DIR: Release-x86
BUILD_DIR: Release x86
- job_name: Windows-x64
configuration: Release
BUILD_DIR: Release-x64
BUILD_DIR: Release x64
matrix:
exclude:
@ -31,10 +35,18 @@ matrix:
- image: Visual Studio 2019
configuration: Debug
build:
project: '%BUILD_DIR%\Cuberite.sln'
parallel: true
verbosity: minimal
pull_requests:
do_not_increment_build_number: true
install:
- echo %TIME%
- git submodule update --init
- if not exist "%BUILD_DIR%" mkdir "%BUILD_DIR%"
- cd "%BUILD_DIR%"
for:
##############################
@ -43,21 +55,11 @@ for:
-
matrix:
only:
- job_name: Windows-x64-debug
- job_name: Windows-x64-Debug
before_build:
- if not exist %BUILD_DIR% mkdir %BUILD_DIR%
- cd %BUILD_DIR%
- echo %TIME%
# TODO: re-add -DSELF_TEST=YES -DBUILD_TOOLS=YES once PCH for tools enabled (too slow otherwise)
- cmake -G "Visual Studio 15 2017" -A "x64" -DSELF_TEST=NO -DBUILD_TOOLS=NO ..
- echo %TIME%
- cd ..
build:
project: Debug-x64\Cuberite.sln
parallel: true
verbosity: minimal
- cmake -G "Visual Studio 15 2017" -DSELF_TEST=No -DBUILD_TOOLS=No ..
################################
# Windows 32-bit release build #
@ -67,22 +69,8 @@ for:
only:
- job_name: Windows-x86
branches:
only:
- master
before_build:
- if not exist %BUILD_DIR% mkdir %BUILD_DIR%
- cd %BUILD_DIR%
- echo %TIME%
- cmake -G "Visual Studio 16 2019" ..
- echo %TIME%
- cd ..
build:
project: Release-x86\Cuberite.sln
parallel: true
verbosity: minimal
################################
# Windows 64-bit release build #
@ -92,41 +80,18 @@ for:
only:
- job_name: Windows-x64
branches:
only:
- master
before_build:
- if not exist %BUILD_DIR% mkdir %BUILD_DIR%
- cd %BUILD_DIR%
- echo %TIME%
- cmake -G "Visual Studio 16 2019" -A "x64" ..
- echo %TIME%
- cd ..
build:
project: Release-x64\Cuberite.sln
parallel: true
verbosity: minimal
###########################################
# Cache for speeding up subsequent builds #
###########################################
cache:
- Debug-x64\CMakeCache.txt
- Release-x86\CMakeCache.txt
- Release-x64\CMakeCache.txt
- '%BUILD_DIR%\CMakeCache.txt'
#####################
# Package artifacts #
#####################
after_build:
- cd %BUILD_DIR%\Server
- echo Cuberite %APPVEYOR_JOB_NAME%-#%APPVEYOR_BUILD_NUMBER% 1>buildinfo.txt
- cd Server
- Install\PackWindowsExecutables.cmd
- appveyor PushArtifact Cuberite.zip -FileName Cuberite.zip
- appveyor PushArtifact PDBs.zip -FileName PDBs.zip
- appveyor PushArtifact AutoAPI.zip -FileName AutoAPI.zip
- appveyor PushArtifact ManualAPI.zip -FileName ManualAPI.zip
- appveyor PushArtifact .luacheckrc -FileName .luacheckrc

View File

@ -12,7 +12,7 @@ cd tidy-build
# Disable precompiled headers since they aren't generated during linting which causes an error
# Disable unity builds since clang-tidy needs the full list of compiled files to check each one
cmake --target Cuberite -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DPRECOMPILE_HEADERS=OFF -DUNITY_BUILDS=OFF ..
cmake --target Cuberite -DCMAKE_EXPORT_COMPILE_COMMANDS=Yes -DPRECOMPILE_HEADERS=No -DUNITY_BUILDS=No ..
# Ensure LuaState_Typedefs.inc has been generated
(cd ../src/Bindings && lua BindingsProcessor.lua)

View File

@ -1,6 +1,8 @@
include_directories(${CMAKE_SOURCE_DIR}/src/)
include_directories(SYSTEM ${CMAKE_SOURCE_DIR}/lib/mbedtls/include)
find_package(Threads REQUIRED)
# Create a single Network library that contains all the networking code:
set (Network_SRCS
${CMAKE_SOURCE_DIR}/src/OSSupport/CriticalSection.cpp
@ -54,10 +56,8 @@ add_library(Network
)
target_link_libraries(Network event_core event_extra fmt::fmt mbedtls)
if (WIN32)
target_link_libraries(Network ws2_32.lib)
else()
target_link_libraries(Network event_pthreads_static)
if(NOT WIN32)
target_link_libraries(Network event_pthreads Threads::Threads)
endif()

View File

@ -16,16 +16,17 @@ if [ `which ccache` ]; then
CACHE_ARGS="-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache"
echo "Using ccache installed at $(which ccache)"
ccache --max-size=3G
ccache -z # Zero statistics
ccache --max-size=1G
ccache --zero-stats
fi
# Work around a Clang + ccache issue with failing builds by disabling
# precompiled headers. Turn off LTO for faster build speeds
cmake . -DBUILD_TOOLS=YES \
-DPRECOMPILE_HEADERS=NO \
-DUNITY_BUILDS=${TRAVIS_CUBERITE_UNITY_BUILDS-YES} \
-DSELF_TEST=YES \
cmake . -DCMAKE_BUILD_TYPE=${TRAVIS_CUBERITE_BUILD_TYPE} \
-DBUILD_TOOLS=Yes \
-DPRECOMPILE_HEADERS=No \
-DSELF_TEST=Yes \
-DUNITY_BUILDS=${TRAVIS_CUBERITE_UNITY_BUILDS-Yes} \
-DWHOLE_PROGRAM_OPTIMISATION=No \
${CACHE_ARGS};
@ -34,7 +35,7 @@ cmake --build . --parallel 2;
if [ `which ccache` ]; then
echo "Built with ccache, outputting cache stats..."
ccache -s
ccache --show-stats
fi
echo "Testing..."