100 lines
3.1 KiB
CMake
100 lines
3.1 KiB
CMake
#------------------------------------------------------------------------------
|
|
# CLING - the C++ LLVM-based InterpreterG :)
|
|
#
|
|
# This file is dual-licensed: you can choose to license it under the University
|
|
# of Illinois Open Source License or the GNU Lesser General Public License. See
|
|
# LICENSE.TXT for details.
|
|
#------------------------------------------------------------------------------
|
|
|
|
set( LLVM_LINK_COMPONENTS
|
|
bitwriter
|
|
jit
|
|
native
|
|
option
|
|
ipo
|
|
instrumentation
|
|
objcarcopts
|
|
)
|
|
|
|
add_cling_library(clingInterpreter
|
|
AutoSynthesizer.cpp
|
|
BackendPass.cpp
|
|
CheckEmptyTransactionTransformer.cpp
|
|
CIFactory.cpp
|
|
ClangInternalState.cpp
|
|
DeclCollector.cpp
|
|
DeclExtractor.cpp
|
|
DynamicLibraryManager.cpp
|
|
DynamicLookup.cpp
|
|
DynamicExprInfo.cpp
|
|
IncrementalExecutor.cpp
|
|
IncrementalParser.cpp
|
|
Interpreter.cpp
|
|
InterpreterCallbacks.cpp
|
|
InvocationOptions.cpp
|
|
LookupHelper.cpp
|
|
NullDerefProtectionTransformer.cpp
|
|
RequiredSymbols.cpp
|
|
ValueExtractionSynthesizer.cpp
|
|
RuntimeException.cpp
|
|
Transaction.cpp
|
|
TransactionTransformer.cpp
|
|
TransactionUnloader.cpp
|
|
Value.cpp
|
|
ValuePrinter.cpp
|
|
ValuePrinterSynthesizer.cpp
|
|
|
|
LINK_LIBS
|
|
clangBasic
|
|
)
|
|
|
|
if(NOT WIN32)
|
|
set_source_files_properties(RuntimeException.cpp COMPILE_FLAGS -fexceptions)
|
|
endif()
|
|
|
|
set_source_files_properties(Interpreter.cpp COMPILE_FLAGS -DCLING_VERSION=\\\"${CLING_VERSION}\\\")
|
|
|
|
#set_source_files_properties(RuntimeException.cpp COMPILE_FLAGS " /EHsc ")
|
|
# the line above doesn't work, and it gives the following warnings:
|
|
# cl : Command line warning D9025: overriding '/EHs' with '/EHs-'
|
|
# cl : Command line warning D9025: overriding '/EHc' with '/EHc-'
|
|
# so let's change the target compiler flags instead:
|
|
if(MSVC)
|
|
get_target_property(CI_COMPILE_FLAGS clingInterpreter COMPILE_FLAGS)
|
|
if(${CI_COMPILE_FLAGS})
|
|
string(REPLACE "/EHs-c-" "" CI_COMPILE_FLAGS ${CI_COMPILE_FLAGS})
|
|
# add /EHsc exception handling flag
|
|
set(CI_COMPILE_FLAGS "${CI_COMPILE_FLAGS} /EHsc")
|
|
else()
|
|
set(CI_COMPILE_FLAGS "/EHsc")
|
|
endif()
|
|
set_target_properties(clingInterpreter PROPERTIES
|
|
COMPILE_FLAGS ${CI_COMPILE_FLAGS})
|
|
endif()
|
|
|
|
#add_dependencies(clangDriver ClangAttrList ClangDiagnosticDriver
|
|
# ClangDriverOptions ClangCC1Options ClangCC1AsOptions)
|
|
|
|
add_file_dependencies(${CMAKE_CURRENT_SOURCE_DIR}/CIFactory.cpp
|
|
${CMAKE_CURRENT_BINARY_DIR}/cling-compiledata.h)
|
|
add_file_dependencies(${CMAKE_CURRENT_SOURCE_DIR}/Interpreter.cpp
|
|
${CMAKE_CURRENT_BINARY_DIR}/cling-compiledata.h)
|
|
|
|
# Remove all -I from CMAKE_CXX_FLAGS
|
|
string(REPLACE ";" " " __flags "${CMAKE_CXX_FLAGS}")
|
|
string(REGEX REPLACE "-I[^ ]+" "" CMAKE_CXX_FLAGS_NO_I "${__flags}")
|
|
|
|
# Remove absolute path from CMAKE_CXX_COMPILER
|
|
get_filename_component(_path ${CMAKE_CXX_COMPILER} PATH)
|
|
get_filename_component(_name ${CMAKE_CXX_COMPILER} NAME)
|
|
if("$ENV{PATH}" MATCHES ${_path})
|
|
set(CMAKE_CXX_COMPILER_RELATIVE ${_name})
|
|
else()
|
|
set(CMAKE_CXX_COMPILER_RELATIVE ${CMAKE_CXX_COMPILER})
|
|
endif()
|
|
|
|
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/cling-compiledata.h
|
|
"#define LLVM_CXX \"${CMAKE_CXX_COMPILER_RELATIVE} ${CMAKE_CXX_FLAGS_NO_I} ${CMAKE_CXX_FLAGS_${uppercase_CMAKE_BUILD_TYPE}}\"
|
|
"
|
|
)
|