Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b6039251bc | ||
|
|
95fa252267 | ||
|
|
d120bd50ad | ||
|
|
8be3a22b98 | ||
|
|
3b10885155 | ||
|
|
c0f5d5f64a | ||
|
|
2c23627154 |
6
.github/workflows/build.yml
vendored
6
.github/workflows/build.yml
vendored
@@ -1,4 +1,4 @@
|
||||
name: build
|
||||
name: Linux
|
||||
|
||||
on:
|
||||
push:
|
||||
@@ -8,6 +8,8 @@ on:
|
||||
- 'util/**'
|
||||
- 'uml/**'
|
||||
- '**.md'
|
||||
- '**.svg'
|
||||
- '**.png'
|
||||
branches-ignore:
|
||||
- 'noactions/*'
|
||||
pull_request:
|
||||
@@ -30,6 +32,8 @@ jobs:
|
||||
uses: actions/checkout@v4
|
||||
- name: Update package database
|
||||
run: sudo apt -y update
|
||||
- name: ccache
|
||||
uses: hendrikmuhs/ccache-action@v1.2
|
||||
- name: Install deps
|
||||
run: sudo apt -y install git make pkg-config gcc-11 g++-11 ccache cmake libyaml-cpp-dev llvm-15 clang-15 libclang-15-dev libclang-cpp15-dev clang-format-15 lcov zlib1g-dev libunwind-dev libdw-dev
|
||||
- name: Select g++ version
|
||||
|
||||
49
.github/workflows/macos.yml
vendored
Normal file
49
.github/workflows/macos.yml
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
name: macOS
|
||||
|
||||
on:
|
||||
push:
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- 'packaging/**'
|
||||
- 'util/**'
|
||||
- 'uml/**'
|
||||
- '**.md'
|
||||
- '**.svg'
|
||||
- '**.png'
|
||||
branches-ignore:
|
||||
- 'noactions/*'
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- 'packaging/**'
|
||||
- 'util/**'
|
||||
- 'uml/**'
|
||||
- '**.md'
|
||||
- '**.svg'
|
||||
- '**.png'
|
||||
branches-ignore:
|
||||
- 'noactions/*'
|
||||
|
||||
jobs:
|
||||
build-macos:
|
||||
name: Build and test on macos
|
||||
runs-on: macos-14
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: ccache
|
||||
uses: hendrikmuhs/ccache-action@v1.2
|
||||
|
||||
- name: Install dependencies using homebrew
|
||||
run: brew install llvm@18 ninja yaml-cpp cmake ccache
|
||||
|
||||
- name: Build and test
|
||||
run: CC=/opt/homebrew/opt/llvm/bin/clang CXX=/opt/homebrew/opt/llvm/bin/clang++ CMAKE_PREFIX=/opt/homebrew/opt/llvm/lib/cmake/llvm/ CMAKE_GENERATOR=Ninja CMAKE_EXE_LINKER_FLAGS="-L/opt/homebrew/opt/llvm/lib/c++ -Wl,-rpath,/opt/homebrew/opt/llvm/lib/c++" make test
|
||||
|
||||
- name: Print build version
|
||||
run: debug/src/clang-uml --version
|
||||
|
||||
- name: Print help
|
||||
run: debug/src/clang-uml --help
|
||||
1
.sanitize-blacklist
Normal file
1
.sanitize-blacklist
Normal file
@@ -0,0 +1 @@
|
||||
fun:*SmallVector*
|
||||
@@ -70,6 +70,23 @@ if(CODE_COVERAGE)
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lgcov --coverage")
|
||||
endif(CODE_COVERAGE)
|
||||
|
||||
#
|
||||
# Setup Address Sanitizer
|
||||
#
|
||||
option(ADDRESS_SANITIZER "" OFF)
|
||||
if(ADDRESS_SANITIZER)
|
||||
set(CMAKE_CXX_FLAGS
|
||||
"${CMAKE_CXX_FLAGS} \
|
||||
-fno-omit-frame-pointer \
|
||||
-fsanitize=address \
|
||||
-fsanitize-blacklist=${CMAKE_CURRENT_SOURCE_DIR}/.sanitize-blacklist")
|
||||
set(CMAKE_EXE_LINKER_FLAGS
|
||||
"${CMAKE_EXE_LINKER_FLAGS} \
|
||||
-fno-omit-frame-pointer \
|
||||
-fsanitize=address \
|
||||
-fsanitize-blacklist=${CMAKE_CURRENT_SOURCE_DIR}/.sanitize-blacklist")
|
||||
endif(ADDRESS_SANITIZER)
|
||||
|
||||
#
|
||||
# Setup LLVM
|
||||
#
|
||||
@@ -133,14 +150,25 @@ endif()
|
||||
link_directories(${LLVM_LIBRARY_DIR} ${YAML_CPP_LIBRARY_DIR})
|
||||
|
||||
#
|
||||
# Setup libdw and libunwind
|
||||
# Setup backward-cpp, libdw and libunwind
|
||||
#
|
||||
if(LINUX AND (CMAKE_BUILD_TYPE MATCHES Debug))
|
||||
if(CMAKE_BUILD_TYPE MATCHES Debug)
|
||||
set(CLANG_UML_ENABLE_BACKTRACE_DEFAULT ON)
|
||||
else()
|
||||
set(CLANG_UML_ENABLE_BACKTRACE_DEFAULT OFF)
|
||||
endif()
|
||||
option(CLANG_UML_ENABLE_BACKTRACE "Enable backtrace on segfault"
|
||||
${CLANG_UML_ENABLE_BACKTRACE_DEFAULT})
|
||||
|
||||
if(LINUX AND CLANG_UML_ENABLE_BACKTRACE)
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(DW REQUIRED IMPORTED_TARGET libdw)
|
||||
pkg_check_modules(UNWIND REQUIRED IMPORTED_TARGET libunwind)
|
||||
set(BACKWARD_CPP_LIBRARIES PkgConfig::DW PkgConfig::UNWIND)
|
||||
set(ENABLE_BACKWARD_CPP -DENABLE_BACKWARD_CPP)
|
||||
message(STATUS "Enabling backward-cpp")
|
||||
else()
|
||||
message(STATUS "Disabling backward-cpp")
|
||||
endif()
|
||||
|
||||
#
|
||||
|
||||
11
Makefile
11
Makefile
@@ -38,6 +38,7 @@ CMAKE_CXX_FLAGS ?=
|
||||
CMAKE_EXE_LINKER_FLAGS ?=
|
||||
CMAKE_GENERATOR ?= Unix Makefiles
|
||||
CODE_COVERAGE ?= OFF
|
||||
ADDRESS_SANITIZER ?= OFF
|
||||
|
||||
ENABLE_CXX_MODULES_TEST_CASES ?= OFF
|
||||
ENABLE_CUDA_TEST_CASES ?= OFF
|
||||
@@ -54,6 +55,7 @@ clean:
|
||||
rm -rf debug release debug_tidy coverage.info coverage-src.info
|
||||
|
||||
debug/CMakeLists.txt:
|
||||
$(eval CLANG_UML_ENABLE_BACKTRACE ?= ON)
|
||||
cmake -S . -B debug \
|
||||
-G"$(CMAKE_GENERATOR)" \
|
||||
-DGIT_VERSION=$(GIT_VERSION) \
|
||||
@@ -67,9 +69,12 @@ debug/CMakeLists.txt:
|
||||
-DCMAKE_PREFIX=${CMAKE_PREFIX} \
|
||||
-DENABLE_CUDA_TEST_CASES=$(ENABLE_CUDA_TEST_CASES) \
|
||||
-DENABLE_CXX_MODULES_TEST_CASES=$(ENABLE_CXX_MODULES_TEST_CASES) \
|
||||
-DCODE_COVERAGE=$(CODE_COVERAGE)
|
||||
-DCODE_COVERAGE=$(CODE_COVERAGE) \
|
||||
-DADDRESS_SANITIZER=$(ADDRESS_SANITIZER) \
|
||||
-DCLANG_UML_ENABLE_BACKTRACE=$(CLANG_UML_ENABLE_BACKTRACE)
|
||||
|
||||
release/CMakeLists.txt:
|
||||
$(eval CLANG_UML_ENABLE_BACKTRACE ?= OFF)
|
||||
cmake -S . -B release \
|
||||
-G"$(CMAKE_GENERATOR)" \
|
||||
-DGIT_VERSION=$(GIT_VERSION) \
|
||||
@@ -81,8 +86,10 @@ release/CMakeLists.txt:
|
||||
-DLLVM_CONFIG_PATH=${LLVM_CONFIG_PATH} \
|
||||
-DLINK_LLVM_SHARED=${LLVM_SHARED} \
|
||||
-DCMAKE_PREFIX=${CMAKE_PREFIX} \
|
||||
-DADDRESS_SANITIZER=$(ADDRESS_SANITIZER) \
|
||||
-DENABLE_CUDA_TEST_CASES=$(ENABLE_CUDA_TEST_CASES) \
|
||||
-DENABLE_CXX_MODULES_TEST_CASES=$(ENABLE_CXX_MODULES_TEST_CASES)
|
||||
-DENABLE_CXX_MODULES_TEST_CASES=$(ENABLE_CXX_MODULES_TEST_CASES) \
|
||||
-DCLANG_UML_ENABLE_BACKTRACE=$(CLANG_UML_ENABLE_BACKTRACE)
|
||||
|
||||
debug_tidy/CMakeLists.txt:
|
||||
cmake -S . -B debug_tidy \
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
|
||||
# C++ UML diagram generator based on Clang
|
||||
|
||||
[](https://github.com/bkryza/clang-uml/actions)
|
||||
[](https://github.com/bkryza/clang-uml/actions)
|
||||
[](https://github.com/bkryza/clang-uml/actions)
|
||||
[](https://codecov.io/gh/bkryza/clang-uml)
|
||||
[](https://github.com/bkryza/clang-uml/releases)
|
||||
[](https://github.com/bkryza/clang-uml/releases)
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
* [Conda](#conda)
|
||||
* [Nix](#nix)
|
||||
* [Windows](#windows)
|
||||
* [macOS](#macos)
|
||||
* [Building from source](#building-from-source)
|
||||
* [Linux](#linux)
|
||||
* [macos](#macos)
|
||||
@@ -85,6 +86,14 @@ nix run github:bkryza/clang-uml
|
||||
Download and run the latest Windows installer from
|
||||
[Releases page](https://github.com/bkryza/clang-uml/releases).
|
||||
|
||||
#### macOS
|
||||
|
||||
Use Homebrew:
|
||||
|
||||
```console
|
||||
brew install clang-uml
|
||||
```
|
||||
|
||||
### Building from source
|
||||
|
||||
#### Linux
|
||||
@@ -122,8 +131,9 @@ make install DESTDIR=/opt/clang-uml
|
||||
export PATH=$PATH:$PWD/release
|
||||
```
|
||||
|
||||
#### macos
|
||||
#### macOS
|
||||
|
||||
On Intel-based macOS:
|
||||
```bash
|
||||
brew install ccache cmake llvm yaml-cpp
|
||||
|
||||
@@ -134,6 +144,17 @@ LLVM_VERSION=16 make release
|
||||
CMAKE_PREFIX=/usr/local/opt/llvm/lib/cmake/llvm make release
|
||||
```
|
||||
|
||||
On Arm-based macOS (since Ventura):
|
||||
```bash
|
||||
brew install ccache cmake llvm yaml-cpp
|
||||
|
||||
export CC=/opt/homebrew/opt/llvm/bin/clang
|
||||
export CXX=/opt/homebrew/opt/llvm/bin/clang++
|
||||
CMAKE_PREFIX=/opt/homebrew/opt/llvm/lib/cmake/llvm CMAKE_EXE_LINKER_FLAGS="-L/opt/homebrew/opt/llvm/lib/c++ -Wl,-rpath,/opt/homebrew/opt/llvm/lib/c++" make release
|
||||
```
|
||||
> These paths will use the latest LLVM version installed by `brew`.
|
||||
> If you want to use a specific version, you will need to adjust the paths.
|
||||
|
||||
#### Windows
|
||||
|
||||
##### Visual Studio native build
|
||||
|
||||
Reference in New Issue
Block a user