fix msvc15 compile issues

This commit is contained in:
Tomicyo 2018-11-11 10:24:16 +08:00
parent 2e187db360
commit 3ba92f5c4b
8 changed files with 37 additions and 8 deletions

22
.appveyor.yml Normal file
View File

@ -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

View File

@ -60,6 +60,7 @@ if(MSVC)
/wd4068 # Disable unknown pragma warning /wd4068 # Disable unknown pragma warning
$<$<CONFIG:Debug>:/FS> $<$<CONFIG:Debug>:/FS>
) )
target_link_libraries(ccls PRIVATE Mincore.lib)
else() else()
# Common GCC/Clang(Linux) options # Common GCC/Clang(Linux) options
target_compile_options(ccls PRIVATE target_compile_options(ccls PRIVATE

View File

@ -2,6 +2,7 @@
[![Telegram](https://img.shields.io/badge/telegram-@cclsp-blue.svg)](https://telegram.me/cclsp) [![Telegram](https://img.shields.io/badge/telegram-@cclsp-blue.svg)](https://telegram.me/cclsp)
[![Gitter](https://img.shields.io/badge/gitter-ccls--project-blue.svg?logo=gitter-white)](https://gitter.im/ccls-project/ccls) [![Gitter](https://img.shields.io/badge/gitter-ccls--project-blue.svg?logo=gitter-white)](https://gitter.im/ccls-project/ccls)
[![Build status](https://ci.appveyor.com/api/projects/status/kx26jsnijv3326ja?svg=true)](https://ci.appveyor.com/project/DsoTsin/ccls)
ccls, which originates from [cquery](https://github.com/cquery-project/cquery), is a C/C++/Objective-C language server. ccls, which originates from [cquery](https://github.com/cquery-project/cquery), is a C/C++/Objective-C language server.

View File

@ -143,9 +143,10 @@ if(Clang_FOUND AND NOT TARGET Clang::Clang)
set_target_properties(Clang::Clang PROPERTIES set_target_properties(Clang::Clang PROPERTIES
IMPORTED_LOCATION ${Clang_LIBRARY} IMPORTED_LOCATION ${Clang_LIBRARY}
INTERFACE_INCLUDE_DIRECTORIES "${Clang_INCLUDE_DIR};${Clang_BUILD_INCLUDE_DIR};${LLVM_INCLUDE_DIR};${LLVM_BUILD_INCLUDE_DIR}") INTERFACE_INCLUDE_DIRECTORIES "${Clang_INCLUDE_DIR};${Clang_BUILD_INCLUDE_DIR};${LLVM_INCLUDE_DIR};${LLVM_BUILD_INCLUDE_DIR}")
if(NOT WIN32)
find_package(Curses REQUIRED) find_package(Curses REQUIRED)
find_package(ZLIB REQUIRED) find_package(ZLIB REQUIRED)
endif()
set_property(TARGET Clang::Clang PROPERTY IMPORTED_LINK_INTERFACE_LIBRARIES "${_Clang_LIBRARIES};${CURSES_LIBRARIES};${ZLIB_LIBRARIES}") set_property(TARGET Clang::Clang PROPERTY IMPORTED_LINK_INTERFACE_LIBRARIES "${_Clang_LIBRARIES};${CURSES_LIBRARIES};${ZLIB_LIBRARIES}")
if(MINGW) if(MINGW)
set_property(TARGET Clang::Clang APPEND_STRING PROPERTY IMPORTED_LINK_INTERFACE_LIBRARIES ";version") set_property(TARGET Clang::Clang APPEND_STRING PROPERTY IMPORTED_LINK_INTERFACE_LIBRARIES ";version")

View File

@ -45,7 +45,8 @@ static Pos Decomposed2LineAndCol(const SourceManager &SM,
std::pair<FileID, unsigned> I) { std::pair<FileID, unsigned> I) {
int l = SM.getLineNumber(I.first, I.second) - 1, int l = SM.getLineNumber(I.first, I.second) - 1,
c = SM.getColumnNumber(I.first, I.second) - 1; c = SM.getColumnNumber(I.first, I.second) - 1;
return {(int16_t)std::min(l, INT16_MAX), (int16_t)std::min(c, INT16_MAX)}; return {(int16_t)std::min<int16_t>(l, INT16_MAX),
(int16_t)std::min<int16_t>(c, INT16_MAX)};
} }
Range FromCharSourceRange(const SourceManager &SM, const LangOptions &LangOpts, Range FromCharSourceRange(const SourceManager &SM, const LangOptions &LangOpts,

View File

@ -19,6 +19,7 @@ limitations under the License.
#include "serializers/json.hh" #include "serializers/json.hh"
#include <stdio.h> #include <stdio.h>
#include <algorithm>
namespace ccls { namespace ccls {
void Reflect(Reader &visitor, RequestId &value) { void Reflect(Reader &visitor, RequestId &value) {

View File

@ -20,6 +20,7 @@ limitations under the License.
#include <limits.h> #include <limits.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <algorithm>
namespace ccls { namespace ccls {
Pos Pos::FromString(const std::string &encoded) { Pos Pos::FromString(const std::string &encoded) {
@ -57,7 +58,7 @@ Range Range::FromString(const std::string &encoded) {
bool Range::Contains(int line, int column) const { bool Range::Contains(int line, int column) const {
if (line > INT16_MAX) if (line > INT16_MAX)
return false; return false;
Pos p{int16_t(line), int16_t(std::min(column, INT16_MAX))}; Pos p{int16_t(line), int16_t(std::min<int16_t>(column, INT16_MAX))};
return !(p < start) && p < end; return !(p < start) && p < end;
} }

View File

@ -76,13 +76,14 @@ void Reflect(Writer &visitor, Range &value);
namespace std { namespace std {
template <> struct hash<ccls::Range> { template <> struct hash<ccls::Range> {
std::size_t operator()(ccls::Range x) const { std::size_t operator()(ccls::Range x) const {
union U { /*union U {
ccls::Range range = {}; ccls::Range range = {};
uint64_t u64; uint64_t u64;
} u; } u;
static_assert(sizeof(ccls::Range) == 8); static_assert(sizeof(ccls::Range) == 8);
u.range = x; u.range = x;*/
return hash<uint64_t>()(u.u64); std::string data((const char*)&x, sizeof(x));
return hash<std::string>()(data);
} }
}; };
} // namespace std } // namespace std