diff --git a/CMakeLists.txt b/CMakeLists.txt index 9a3b3c49..c7274d4a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -53,8 +53,11 @@ set(CXX_FEATURES # # # General project flags if (MSVC) add_definitions(/DUNICODE /D_UNICODE /D_SILENCE_CXX17_UNCAUGHT_EXCEPTION_DEPRECATION_WARNING /D_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING /D_CRT_SECURE_NO_WARNINGS /D_CRT_SECURE_NO_DEPRECATE) - # Warning level, exceptions, compile-multiple-files - add_compile_options(/W4 /EHsc /MP) + # Warning level, exceptions + add_compile_options(/W4 /EHsc) + if (NOT CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + add_compile_options(/MP) + endif() else() add_compile_options(-Wno-unknown-warning -Wno-unknown-warning-option -Wall -Wextra -Wpedantic -pedantic -pedantic-errors) endif() diff --git a/appveyor.yml b/appveyor.yml index 40d70aac..8a415d1b 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -45,8 +45,8 @@ platform: environment: matrix: # apparently, I can't quite make LLVM work right now... - #- LUA_VERSION: 5.3.4 - # LLVM_VERSION: 4.0.0 + - LUA_VERSION: 5.3.4 + LLVM_VERSION: 4.0.0 - LUA_VERSION: 5.3.4 MINGW_VERSION: 6.3.0 - LUA_VERSION: 5.3.4 @@ -57,8 +57,6 @@ environment: matrix: allow_failures: - # oldest compiler is allowed to fail here due to esoteric bugs - - MINGW_VERSION: 5.3.0 # 32-bit builds are temperamental with exceptions - platform: x86 exclude: @@ -67,16 +65,14 @@ matrix: MINGW_VERSION: 6.3.0 - image: Visual Studio 2017 MINGW_VERSION: 5.3.0 - # LLVM exists in all images, so we only need Visual Studio 2017 - - image: Visual Studio 2015 + # LLVM exists in all images, and we only want the x64 versions + - platform: x86 LLVM_VERSION: 4.0.0 # Get rid of x86 builds - platform: x86 LUA_VERSION: 5.2.4 - platform: x86 LUA_VERSION: 5.1.5 - - platform: x86 - MINGW_VERSION: 5.3.0 # Get rid of redundant Visual Studio 2015 builds - image: Visual Studio 2015 LUA_VERSION: 5.1.5 @@ -100,8 +96,8 @@ init: - set python_path=C:\Python36 - set mingw_path= - set llvm_path= -- if "%MINGW_VERSION%"=="5.3.0" (set mingw_path=C:\mingw-w64\i686-5.3.0-posix-dwarf-rt_v4-rev0\mingw64\bin) -- if "%MINGW_VERSION%"=="6.3.0" (if "%PLATFORM%"=="x64" (set mingw_path=C:\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64\bin) else ( set mingw_path=C:\mingw-w64\i686-6.3.0-posix-dwarf-rt_v5-rev1\mingw64\bin)) +- if "%MINGW_VERSION%"=="5.3.0" (set mingw_path=C:\mingw-w64\i686-5.3.0-posix-dwarf-rt_v4-rev0\mingw32\bin) +- if "%MINGW_VERSION%"=="6.3.0" (if "%PLATFORM%"=="x64" (set mingw_path=C:\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64\bin) else ( set mingw_path=C:\mingw-w64\i686-6.3.0-posix-dwarf-rt_v5-rev1\mingw32\bin)) - if "%LLVM_VERSION%"=="4.0.0" (set llvm_path=C:\Program Files\LLVM\bin) - if "%PLATFORM%"=="x64" (set python_path=C:\Python36-x64) - set PATH=%python_path%;%PATH% @@ -137,6 +133,7 @@ init: # toolsets for Ninja or Makefiles as far as cmake is concerned, so # the --config / -C switches on builds do nothing...! before_build: +- if DEFINED LLVM_VERSION (call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat" && cd C:\projects\sol2) - md build-sol2 - cd build-sol2 - cmake .. -G "%CMAKE_GENERATOR%" %build_type% %build_compiler% -DLUA_VERSION="%LUA_VERSION%" -DBUILD_LUA=ON -DBUILD_LUA_AS_DLL=OFF -DTESTS=ON -DEXAMPLES=ON -DSINGLE=ON -DTESTS_EXAMPLES=ON -DTESTS_SINGLE=ON diff --git a/examples/optional_with_iteration.cpp b/examples/optional_with_iteration.cpp index 5f9c6162..2ead0d1f 100644 --- a/examples/optional_with_iteration.cpp +++ b/examples/optional_with_iteration.cpp @@ -49,7 +49,7 @@ int main(int, char**) { // Our recursive function // We use some lambda techniques and pass the function itself itself so we can recurse, // but a regular function would work too! - auto fx = [&lua, &things](auto& f, auto& tbl) -> void { + auto fx = [&things](auto& f, auto& tbl) -> void { // You can iterate through a table: it has // begin() and end() // like standard containers diff --git a/examples/usertype_var.cpp b/examples/usertype_var.cpp index 9462c73e..f0302d14 100644 --- a/examples/usertype_var.cpp +++ b/examples/usertype_var.cpp @@ -21,7 +21,6 @@ int main() { int direct_value = lua["test"]["direct"]; c_assert(direct_value == 2); - // direct_value == 2 int number = lua["test"]["number"]; c_assert(number == 25); @@ -30,18 +29,20 @@ int main() { test::number = 542; - c_assert(lua["test"]["number"] == 25); // number is its own memory: was passed by value // So does not change + int number_again = lua["test"]["number"]; + c_assert(number_again == 25); - c_assert(lua["test"]["ref_number"] == 542); // ref_number is just test::number // passed through std::ref // so, it holds a reference // which can be updated + int ref_number_again = lua["test"]["number"]; + c_assert(ref_number_again == 542); // be careful about referencing local variables, // if they go out of scope but are still reference // you'll suffer dangling reference bugs! return 0; -} \ No newline at end of file +}