Skip to content

Commit bba0fcf

Browse files
committed
Merge branch '1-llvm-update-h5cpp-compiler-for-recent-llvm-architecture' into release
2 parents eb2906b + c37e861 commit bba0fcf

2 files changed

Lines changed: 37 additions & 31 deletions

File tree

CMakeLists.txt

Lines changed: 31 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,46 @@
11
# _____________________________________________________________________________
2-
# Copyright (c) 2018-2020 Steven Varga, Toronto,ON Canada
2+
# Copyright (c) 2018-2025 Steven Varga, Toronto,ON Canada
33
# Author: Varga, Steven <steven@vargaconsulting.ca>
44
# _____________________________________________________________________________
55

6-
cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
6+
cmake_minimum_required(VERSION 3.14)
77
project(h5cpp-compiler-dev VERSION 1.10.4.6 LANGUAGES CXX C)
8+
89
set(CMAKE_CXX_STANDARD 17)
910
set(CMAKE_CXX_STANDARD_REQUIRED ON)
1011
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -s")
11-
find_package(LLVM 6.0.0 REQUIRED CONFIG)
12-
message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
1312

14-
include(GNUInstallDirs)
13+
# Use modern LLVM/Clang
14+
find_package(LLVM REQUIRED CONFIG)
15+
find_package(Clang REQUIRED CONFIG)
16+
17+
message(STATUS "Using LLVM ${LLVM_PACKAGE_VERSION}")
18+
message(STATUS "LLVM_DIR: ${LLVM_DIR}")
19+
message(STATUS "CLANG_DIR: ${Clang_DIR}")
1520

16-
include_directories(${LLVM_INCLUDE_DIRS})
17-
add_definitions(${LLVM_DEFINITIONS})
18-
link_directories(${LLVM_LIBRARY_DIRS})
21+
# Enable RTTI if needed (Clang requires it)
22+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti")
23+
24+
# Explicit executable target
1925
add_executable(h5cpp src/h5cpp.cpp)
2026

21-
target_link_libraries(h5cpp
22-
LLVM
23-
clangFrontend
24-
clangSerialization
25-
clangDriver
26-
clangParse
27-
clangSema
28-
clangAnalysis
29-
clangRewrite
30-
clangRewriteFrontend
31-
clangASTMatchers
32-
clangAST
33-
clangBasic
34-
clangEdit
35-
clangLex
36-
clangTooling
27+
# Modern include + defs
28+
target_include_directories(h5cpp PRIVATE
29+
${LLVM_INCLUDE_DIRS}
30+
${CLANG_INCLUDE_DIRS}
3731
)
38-
set(INSTALL_DIR_BIN "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}")
39-
set(INSTALL_DIR_MAN "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_MANDIR}/man1")
4032

41-
message(${INSTALL_DIR_MAN})
42-
install(TARGETS h5cpp DESTINATION ${INSTALL_DIR_BIN})
43-
install(FILES h5cpp.1 DESTINATION ${INSTALL_DIR_MAN})
33+
target_compile_definitions(h5cpp PRIVATE
34+
${LLVM_DEFINITIONS}
35+
)
4436

37+
# Link against modern LLVM/Clang targets
38+
target_link_libraries(h5cpp
39+
PRIVATE
40+
clangTooling
41+
)
42+
43+
# Install directives
44+
include(GNUInstallDirs)
45+
install(TARGETS h5cpp DESTINATION ${CMAKE_INSTALL_BINDIR})
46+
install(FILES h5cpp.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)

src/h5cpp.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,12 @@ int main(int argc, const char **argv) {
8080
"H5CPP: Copyright (c) 2018-2020, VargaConsulting, Toronto,ON Canada\n"
8181
"LLVM : Copyright (c) 2003-2010, University of Illinois at Urbana-Champaign.\n"
8282
;
83-
84-
CommonOptionsParser OptionsParser(argc, argv, MyToolCategory);
83+
auto ExpectedParser = CommonOptionsParser::create(argc, argv, MyToolCategory);
84+
if (!ExpectedParser) {
85+
llvm::errs() << ExpectedParser.takeError();
86+
return 1;
87+
}
88+
CommonOptionsParser &OptionsParser = ExpectedParser.get();
8589
ClangTool Tool(OptionsParser.getCompilations(),
8690
OptionsParser.getSourcePathList());
8791
H5TemplateCallback<H5Producer> callback( path );

0 commit comments

Comments
 (0)