cling/lib/Interpreter/CMakeLists.txt
Manasij Mukherjee f474d63079 Generation of forward declarations of top level decls in an input file.
Consists of:
  ForwardDeclPrinter, adapted from clang::DeclPrinter
  Interpterer::GenerateAutoloadingMap for invoking the functionality
  It has hardcoded checks to prevent ForwardDeclPrinter from visiting decls from
standard library files. This restriction will be lifted after the
issues specifyed in the tests are fixed.
  Test cases for code which FowrardDeclPrinter can not deal with properly
2014-06-23 14:37:03 +02:00

104 lines
3.2 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
AutoloadingTransform.cpp
AutoloadCallback.cpp
BackendPass.cpp
CheckEmptyTransactionTransformer.cpp
CIFactory.cpp
ClangInternalState.cpp
DeclCollector.cpp
DeclExtractor.cpp
DynamicLibraryManager.cpp
DynamicLookup.cpp
DynamicExprInfo.cpp
ForwardDeclPrinter.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
clangAST
)
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}}\"
"
)