Skip to content

Commit f9e1e8c

Browse files
committed
Congratulations to Tea Deliverers
1 parent 3672981 commit f9e1e8c

3 files changed

Lines changed: 21 additions & 34 deletions

File tree

CMakeLists.txt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ option(SYSTEM_CLANG "Use system installation of Clang instead of \
1212
downloading Clang" OFF)
1313
option(ASAN "Compile with address sanitizers" OFF)
1414
option(CLANG_USE_BUNDLED_LIBC++ "Let Clang use bundled libc++" OFF)
15+
option(USE_SHARED_LLVM "Link against libLLVM.so instead separate LLVM{Option,Support,...}" OFF)
1516

1617
# Sources for the executable are specified at end of CMakeLists.txt
1718
add_executable(ccls "")
@@ -105,11 +106,7 @@ endif()
105106

106107
# See cmake/FindClang.cmake
107108
find_package(Clang ${CLANG_VERSION} REQUIRED)
108-
find_package(Curses REQUIRED)
109109
target_link_libraries(ccls PRIVATE Clang::Clang)
110-
if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL Windows)
111-
target_link_libraries(ccls PRIVATE Clang::Clang ${CURSES_LIBRARIES})
112-
endif()
113110

114111
# Enable threading support
115112
set(THREADS_PREFER_PTHREAD_FLAG ON)

cmake/FindClang.cmake

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,13 @@ set(_Clang_REQUIRED_VARS Clang_LIBRARY Clang_INCLUDE_DIR Clang_EXECUTABLE
7171
_Clang_find_library(Clang_LIBRARY clang)
7272
_Clang_find_add_library(clangDriver)
7373
_Clang_find_add_library(clangBasic)
74-
_Clang_find_add_library(LLVMOption)
75-
_Clang_find_add_library(LLVMSupport)
76-
_Clang_find_add_library(LLVMDemangle)
74+
if(USE_SHARED_LLVM)
75+
_Clang_find_add_library(LLVM)
76+
else()
77+
_Clang_find_add_library(LLVMOption)
78+
_Clang_find_add_library(LLVMSupport)
79+
_Clang_find_add_library(LLVMDemangle)
80+
endif()
7781
_Clang_find_path(Clang_INCLUDE_DIR clang-c/Index.h)
7882
_Clang_find_path(Clang_BUILD_INCLUDE_DIR clang/Driver/Options.inc)
7983
_Clang_find_path(LLVM_INCLUDE_DIR llvm/PassInfo.h)
@@ -113,5 +117,6 @@ if(Clang_FOUND AND NOT TARGET Clang::Clang)
113117
IMPORTED_LOCATION ${Clang_LIBRARY}
114118
INTERFACE_INCLUDE_DIRECTORIES "${Clang_INCLUDE_DIR};${Clang_BUILD_INCLUDE_DIR};${LLVM_INCLUDE_DIR};${LLVM_BUILD_INCLUDE_DIR}")
115119

116-
set_property(TARGET Clang::Clang PROPERTY INTERFACE_LINK_LIBRARIES ${_Clang_LIBRARIES})
120+
find_package(Curses REQUIRED)
121+
set_property(TARGET Clang::Clang PROPERTY IMPORTED_LINK_INTERFACE_LIBRARIES "${_Clang_LIBRARIES};${CURSES_LIBRARIES}")
117122
endif()

src/filesystem.cc

Lines changed: 11 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,45 +5,30 @@ using namespace llvm;
55

66
#include <utility>
77

8-
static void GetFilesInFolderHelper(
9-
std::string folder,
10-
bool recursive,
11-
std::string output_prefix,
12-
const std::function<void(const std::string&)>& handler) {
8+
void GetFilesInFolder(std::string folder,
9+
bool recursive,
10+
bool dir_prefix,
11+
const std::function<void(const std::string&)>& handler) {
12+
EnsureEndsInSlash(folder);
1313
std::error_code ec;
1414
if (recursive)
1515
for (sys::fs::recursive_directory_iterator I(folder, ec), E; I != E && !ec;
1616
I.increment(ec)) {
1717
std::string path = I->path(), filename = sys::path::filename(path);
1818
if (filename[0] != '.' || filename == ".ccls") {
19-
SmallString<256> Path;
20-
if (output_prefix.size()) {
21-
sys::path::append(Path, output_prefix, path);
22-
handler(Path.str());
23-
} else
24-
handler(path);
19+
if (!dir_prefix)
20+
path = path.substr(folder.size());
21+
handler(path);
2522
}
2623
}
2724
else
2825
for (sys::fs::directory_iterator I(folder, ec), E; I != E && !ec;
2926
I.increment(ec)) {
3027
std::string path = I->path(), filename = sys::path::filename(path);
3128
if (filename[0] != '.' || filename == ".ccls") {
32-
SmallString<256> Path;
33-
if (output_prefix.size()) {
34-
sys::path::append(Path, output_prefix, path);
35-
handler(Path.str());
36-
} else
37-
handler(path);
29+
if (!dir_prefix)
30+
path = path.substr(folder.size());
31+
handler(path);
3832
}
3933
}
4034
}
41-
42-
void GetFilesInFolder(std::string folder,
43-
bool recursive,
44-
bool add_folder_to_path,
45-
const std::function<void(const std::string&)>& handler) {
46-
EnsureEndsInSlash(folder);
47-
GetFilesInFolderHelper(folder, recursive, add_folder_to_path ? folder : "",
48-
handler);
49-
}

0 commit comments

Comments
 (0)