diff --git a/.appveyor.yml b/.appveyor.yml new file mode 100644 index 00000000..3ef7b19a --- /dev/null +++ b/.appveyor.yml @@ -0,0 +1,22 @@ +version: "{build}" + +os: Visual Studio 2017 + +platform: + - x64 + +build: + parallel: true # enable MSBuild parallel builds + verbosity: minimal + +install: + - if not exist llvm.tar.xz appveyor DownloadFile "https://ziglang.org/deps/llvm+clang-7.0.0-win64-msvc-release.tar.xz" -FileName llvm.tar.xz + - 7z e -txz llvm.tar.xz + - 7z x llvm.tar + - git submodule update --init --recursive +build_script: + - cmake -G"Visual Studio 15 2017 Win64" -H. -Bbuild -DCMAKE_BUILD_TYPE=Release -DSYSTEM_CLANG=ON -DCLANG_ROOT=C:\projects\ccls\llvm+clang-7.0.0-win64-msvc-release + - cmake --build build --target ccls --config Release + +artifacts: + - path: build\Release diff --git a/CMakeLists.txt b/CMakeLists.txt index abe0e04b..35a7195e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -58,8 +58,11 @@ if(MSVC) # roughly -Wno-sign-compare /wd4800 /wd4068 # Disable unknown pragma warning + /std:c++17 $<$:/FS> ) + # relink system libs + target_link_libraries(ccls PRIVATE Mincore.lib) else() # Common GCC/Clang(Linux) options target_compile_options(ccls PRIVATE diff --git a/cmake/FindClang.cmake b/cmake/FindClang.cmake index e56e25dd..5748f71f 100644 --- a/cmake/FindClang.cmake +++ b/cmake/FindClang.cmake @@ -143,9 +143,10 @@ if(Clang_FOUND AND NOT TARGET Clang::Clang) set_target_properties(Clang::Clang PROPERTIES IMPORTED_LOCATION ${Clang_LIBRARY} INTERFACE_INCLUDE_DIRECTORIES "${Clang_INCLUDE_DIR};${Clang_BUILD_INCLUDE_DIR};${LLVM_INCLUDE_DIR};${LLVM_BUILD_INCLUDE_DIR}") - - find_package(Curses REQUIRED) - find_package(ZLIB REQUIRED) + if(NOT WIN32) + find_package(Curses REQUIRED) + find_package(ZLIB REQUIRED) + endif() set_property(TARGET Clang::Clang PROPERTY IMPORTED_LINK_INTERFACE_LIBRARIES "${_Clang_LIBRARIES};${CURSES_LIBRARIES};${ZLIB_LIBRARIES}") if(MINGW) set_property(TARGET Clang::Clang APPEND_STRING PROPERTY IMPORTED_LINK_INTERFACE_LIBRARIES ";version") diff --git a/src/position.hh b/src/position.hh index 9b4da0f6..27667f75 100644 --- a/src/position.hh +++ b/src/position.hh @@ -76,6 +76,7 @@ namespace std { template <> struct hash { std::size_t operator()(ccls::Range x) const { union U { + U() {} // On VS2017, still need constructor here ccls::Range range = {}; uint64_t u64; } u;