cling/tools/driver/CMakeLists.txt

109 lines
3.5 KiB
CMake
Raw Normal View History

2014-01-07 14:57:25 +04:00
#------------------------------------------------------------------------------
# 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.
#------------------------------------------------------------------------------
2014-03-08 16:42:17 +04:00
# Keep symbols for JIT resolution
set(LLVM_NO_DEAD_STRIP 1)
if(BUILD_SHARED_LIBS)
set(LIBS
LLVMSupport
2018-10-05 03:51:38 +03:00
clangFrontendTool
2018-10-05 03:51:38 +03:00
clingInterpreter
clingMetaProcessor
clingUserInterface
clingUtils
)
add_cling_executable(cling
cling.cpp
)
else()
set(LIBS
LLVMSupport
2018-10-05 03:51:38 +03:00
clangASTMatchers
clangFrontendTool
2018-10-05 03:51:38 +03:00
clingUserInterface
)
add_cling_executable(cling
cling.cpp
$<TARGET_OBJECTS:obj.clingInterpreter>
$<TARGET_OBJECTS:obj.clingMetaProcessor>
$<TARGET_OBJECTS:obj.clingUtils>
)
endif(BUILD_SHARED_LIBS)
set_target_properties(cling
PROPERTIES ENABLE_EXPORTS 1)
if(MSVC)
set_target_properties(cling PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS 1)
# RTTI/C++ symbols
set(cling_exports ${cling_exports} ??_7type_info@@6B@
?__type_info_root_node@@3U__type_info_node@@A
?nothrow@std@@3Unothrow_t@1@B
)
# Compiler added symbols for static variables. NOT for VStudio < 2015
set(cling_exports ${cling_exports} _Init_thread_abort _Init_thread_epoch
_Init_thread_footer _Init_thread_header _tls_index
)
if("${CMAKE_GENERATOR_PLATFORM}" MATCHES "x64")
# new/delete variants needed when linking to static msvc runtime (esp. Debug)
set(cling_exports ${cling_exports}
??2@YAPEAX_K@Z
??3@YAXPEAX@Z
??_U@YAPEAX_K@Z
??_V@YAXPEAX@Z
??3@YAXPEAX_K@Z
??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@H@Z
??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@M@Z
??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@N@Z
??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEBX@Z
??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z
??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z
??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBD@Z
?_Facet_Register@std@@YAXPEAV_Facet_base@1@@Z
)
else()
set(cling_exports ${cling_exports}
??2@YAPAXI@Z
??3@YAXPAX@Z
??3@YAXPAXI@Z
??_U@YAPAXI@Z
??_V@YAXPAX@Z
??_V@YAXPAXI@Z
??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z
??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@M@Z
??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@N@Z
??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@PBX@Z
??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z
??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@D@Z
??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z
?_Facet_Register@std@@YAXPAV_Facet_base@1@@Z
)
endif()
# List to '/EXPORT:sym0 /EXPORT:sym1 /EXPORT:sym2 ...'
foreach(sym ${cling_exports})
set(cling_link_str "${cling_link_str} /EXPORT:${sym}")
endforeach(sym ${cling_exports})
set_property(TARGET cling APPEND_STRING PROPERTY LINK_FLAGS ${cling_link_str})
endif(MSVC)
target_link_libraries(cling PUBLIC ${LIBS})
install(TARGETS cling
RUNTIME DESTINATION bin)