mirror of
https://github.com/bkryza/clang-uml.git
synced 2025-05-28 01:40:30 +08:00
Added CMake option to build using specific llvm version
This commit is contained in:
parent
b11396cbf3
commit
47554060f4
@ -15,10 +15,23 @@ set(CLANG_UML_INSTALL_BIN_DIR ${PROJECT_SOURCE_DIR}/bin)
|
|||||||
|
|
||||||
set(UML_HEADERS_DIR ${PROJECT_SOURCE_DIR}/src/uml)
|
set(UML_HEADERS_DIR ${PROJECT_SOURCE_DIR}/src/uml)
|
||||||
|
|
||||||
|
option(LLVM_CONFIG_PATH "Path to custom llvm-config executable")
|
||||||
|
|
||||||
|
if(LLVM_CONFIG_PATH)
|
||||||
|
set(LIBCLANG_LLVM_CONFIG_EXECUTABLE ${LLVM_CONFIG_PATH})
|
||||||
|
endif(LLVM_CONFIG_PATH)
|
||||||
|
|
||||||
|
message(STATUS "Checking for fmt...")
|
||||||
|
find_package(fmt REQUIRED)
|
||||||
|
|
||||||
message(STATUS "Checking for spdlog...")
|
message(STATUS "Checking for spdlog...")
|
||||||
find_package(spdlog REQUIRED)
|
find_package(spdlog REQUIRED)
|
||||||
get_target_property(SPDLOG_INCLUDE_DIRS spdlog::spdlog_header_only INTERFACE_INCLUDE_DIRECTORIES)
|
if(APPLE)
|
||||||
|
get_target_property(SPDLOG_INCLUDE_DIRS spdlog::spdlog_header_only INTERFACE_INCLUDE_DIRECTORIES)
|
||||||
|
else(APPLE)
|
||||||
|
get_target_property(SPDLOG_INCLUDE_DIRS spdlog::spdlog INTERFACE_INCLUDE_DIRECTORIES)
|
||||||
|
endif(APPLE)
|
||||||
|
|
||||||
add_definitions(-DSPDLOG_FMT_EXTERNAL)
|
add_definitions(-DSPDLOG_FMT_EXTERNAL)
|
||||||
|
|
||||||
message(STATUS "Checking for yaml-cpp...")
|
message(STATUS "Checking for yaml-cpp...")
|
||||||
@ -26,7 +39,9 @@ find_package(yaml-cpp REQUIRED)
|
|||||||
|
|
||||||
message(STATUS "Checking for libclang...")
|
message(STATUS "Checking for libclang...")
|
||||||
set(LLVM_PREFERRED_VERSION 12.0.0)
|
set(LLVM_PREFERRED_VERSION 12.0.0)
|
||||||
set(LIBCLANG_LLVM_CONFIG_EXECUTABLE "/usr/local/opt/llvm@12/bin/llvm-config")
|
# Add
|
||||||
|
# -DLLVM_CONFIG_PATH=/path/to/llvm-config
|
||||||
|
# to use custom LLVM version
|
||||||
find_package(LibClang REQUIRED)
|
find_package(LibClang REQUIRED)
|
||||||
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 ${LIBCLANG_CXXFLAGS}")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 ${LIBCLANG_CXXFLAGS}")
|
||||||
@ -65,7 +80,13 @@ add_library(clang-umllib OBJECT ${SOURCES})
|
|||||||
|
|
||||||
add_executable(clang-uml ${MAIN_SOURCE_FILE})
|
add_executable(clang-uml ${MAIN_SOURCE_FILE})
|
||||||
install(TARGETS clang-uml DESTINATION ${CLANG_UML_INSTALL_BIN_DIR})
|
install(TARGETS clang-uml DESTINATION ${CLANG_UML_INSTALL_BIN_DIR})
|
||||||
target_link_libraries(clang-uml ${LIBCLANG_LIBRARIES} ${YAML_CPP_LIBRARIES} spdlog::spdlog_header_only cppast clang-umllib)
|
target_link_libraries(clang-uml ${LIBCLANG_LIBRARIES} ${YAML_CPP_LIBRARIES} fmt::fmt cppast clang-umllib)
|
||||||
|
if(APPLE)
|
||||||
|
target_link_libraries(clang-uml spdlog::spdlog_header_only)
|
||||||
|
else(APPLE)
|
||||||
|
target_link_libraries(clang-uml spdlog::spdlog)
|
||||||
|
endif(APPLE)
|
||||||
|
|
||||||
target_compile_features(clang-uml PRIVATE cxx_std_17)
|
target_compile_features(clang-uml PRIVATE cxx_std_17)
|
||||||
|
|
||||||
install(
|
install(
|
||||||
|
10
Makefile
10
Makefile
@ -22,6 +22,8 @@
|
|||||||
|
|
||||||
NUMPROC ?= $(shell nproc)
|
NUMPROC ?= $(shell nproc)
|
||||||
|
|
||||||
|
LLVM_CONFIG_PATH ?=
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
rm -rf debug release
|
rm -rf debug release
|
||||||
@ -29,16 +31,18 @@ clean:
|
|||||||
debug/CMakeLists.txt:
|
debug/CMakeLists.txt:
|
||||||
cmake -S . -B debug \
|
cmake -S . -B debug \
|
||||||
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
|
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
|
||||||
-DCMAKE_BUILD_TYPE=Debug
|
-DCMAKE_BUILD_TYPE=Debug \
|
||||||
|
-DLLVM_CONFIG_PATH=$(LLVM_CONFIG_PATH)
|
||||||
|
|
||||||
release/CMakeLists.txt:
|
release/CMakeLists.txt:
|
||||||
cmake -S . -B release \
|
cmake -S . -B release \
|
||||||
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
|
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
|
||||||
-DCMAKE_BUILD_TYPE=Release
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DLLVM_CONFIG_PATH=$(LLVM_CONFIG_PATH)
|
||||||
|
|
||||||
debug: debug/CMakeLists.txt
|
debug: debug/CMakeLists.txt
|
||||||
echo "Using ${NUMPROC} cores"
|
echo "Using ${NUMPROC} cores"
|
||||||
make -C debug -j$(NUMPROC) VERBOSE=1
|
make -C debug -j$(NUMPROC)
|
||||||
|
|
||||||
release: release/CMakeLists.txt
|
release: release/CMakeLists.txt
|
||||||
make -C release -j
|
make -C release -j
|
||||||
|
@ -42,6 +42,9 @@ make submodules
|
|||||||
make release
|
make release
|
||||||
release/clang-uml --help
|
release/clang-uml --help
|
||||||
|
|
||||||
|
# To build using a specific installed version of LLVM use:
|
||||||
|
LLVM_CONFIG_PATH=/usr/bin/llvm-config-13 make release
|
||||||
|
|
||||||
# Optionally
|
# Optionally
|
||||||
make install
|
make install
|
||||||
# or
|
# or
|
||||||
|
@ -57,13 +57,13 @@ if (NOT LIBCLANG_LLVM_CONFIG_EXECUTABLE)
|
|||||||
find_program(LIBCLANG_LLVM_CONFIG_EXECUTABLE NAMES llvm-config PATHS "${BREW_LLVM_PATH}/bin")
|
find_program(LIBCLANG_LLVM_CONFIG_EXECUTABLE NAMES llvm-config PATHS "${BREW_LLVM_PATH}/bin")
|
||||||
else ()
|
else ()
|
||||||
set(llvm_config_names llvm-config)
|
set(llvm_config_names llvm-config)
|
||||||
foreach(major RANGE 12 3)
|
foreach(major RANGE 13 3)
|
||||||
list(APPEND llvm_config_names "llvm-config${major}" "llvm-config-${major}")
|
list(APPEND llvm_config_names "llvm-config${major}" "llvm-config-${major}")
|
||||||
foreach(minor RANGE 9 0)
|
foreach(minor RANGE 9 0)
|
||||||
list(APPEND llvm_config_names "llvm-config${major}${minor}" "llvm-config-${major}.${minor}" "llvm-config-mp-${major}.${minor}")
|
list(APPEND llvm_config_names "llvm-config${major}${minor}" "llvm-config-${major}.${minor}" "llvm-config-mp-${major}.${minor}")
|
||||||
endforeach ()
|
endforeach ()
|
||||||
endforeach ()
|
endforeach ()
|
||||||
find_program(LIBCLANG_LLVM_CONFIG_EXECUTABLE NAMES ${llvm_config_names})
|
find_program(LIBCLANG_LLVM_CONFIG_EXECUTABLE NAMES ${llvm_config_names} PATHS /usr/bin)
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
if (LIBCLANG_LLVM_CONFIG_EXECUTABLE)
|
if (LIBCLANG_LLVM_CONFIG_EXECUTABLE)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user