project(hello
-
world)
cmake_minimum_required(VERSION
3.16
)
if
(NOT DEFINED ENV{LLVM_HOME})
message(FATAL_ERROR
"Environment variable $LLVM_HOME is not defined, user should define it before running cmake!"
)
endif()
message(STATUS
"LLVM_HOME = [$ENV{LLVM_HOME}]"
)
set
(ENV{LLVM_DIR}
"$ENV{LLVM_HOME}\\lib\\cmake\\llvm"
)
message(STATUS
"LLVM_DIR : ${LLVM_DIR}"
)
if
(NOT EXISTS $ENV{LLVM_DIR})
message(STATUS
"Path ($ENV{LLVM_DIR}) not found!"
)
set
(ENV{LLVM_DIR} $ENV{LLVM_HOME}
/
lib64
/
cmake
/
llvm)
if
(NOT EXISTS $ENV{LLVM_DIR})
message(FATAL_ERROR
"Path ($ENV{LLVM_DIR}) not found!"
)
else
()
message(STATUS
"LLVM_DIR ($ENV{LLVM_DIR}) found!"
)
endif()
else
()
message(STATUS
"LLVM_DIR ($ENV{LLVM_DIR}) found!"
)
endif()
find_package(LLVM REQUIRED CONFIG)
list
(APPEND CMAKE_MODULE_PATH
"${LLVM_CMAKE_DIR}"
)
include_directories(${LLVM_INCLUDE_DIRS})
link_directories(${LLVM_LIBRARY_DIRS})
add_definitions(${LLVM_DEFINITIONS})
message(STATUS
"CMAKE_MODULE_PATH : ${LLVM_CMAKE_DIR}"
)
message(STATUS
"LLVM_DEFINITIONS : ${LLVM_DEFINITIONS}"
)
message(STATUS
"LLVM_INCLUDE_DIRS : ${LLVM_INCLUDE_DIRS}"
)
message(STATUS
"LLVM_LIBRARY_DIRS : ${LLVM_LIBRARY_DIRS}"
)
add_library( hello
-
world SHARED
hello
-
world.cpp
)
target_compile_features(hello
-
world PRIVATE cxx_range_for cxx_auto_type)
include_directories(.
/
)
set_target_properties(hello
-
world PROPERTIES COMPILE_FLAGS
"-fno-rtti"
)
if
(APPLE)
set_target_properties(hello
-
world PROPERTIES LINK_FLAGS
"-undefined dynamic_lookup"
)
endif(APPLE)
set
(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
target_link_libraries(hello
-
world Threads::Threads)
target_link_libraries(hello
-
world
libLLVMCore.dll.a
libLLVMSupport.dll.a
libLLVMipo.dll.a
libLLVMPasses.dll.a
libLLVMTransformUtils.dll.a
libclang.dll.a
libclangAnalysis.dll.a
libclangAnalysisFlowSensitive.dll.a
libclangAnalysisFlowSensitiveModels.dll.a
libclangAPINotes.dll.a
libclangARCMigrate.dll.a
libclangAST.dll.a
libclangASTMatchers.dll.a
libclangBasic.dll.a
libclangCodeGen.dll.a
libclangCrossTU.dll.a
libclangDependencyScanning.dll.a
libclangDirectoryWatcher.dll.a
libclangDriver.dll.a
libclangDynamicASTMatchers.dll.a
libclangEdit.dll.a
libclangExtractAPI.dll.a
libclangFormat.dll.a
libclangFrontend.dll.a
libclangFrontendTool.dll.a
libclangHandleCXX.dll.a
libclangHandleLLVM.dll.a
libclangIndex.dll.a
libclangIndexSerialization.dll.a
libclangInterpreter.dll.a
)