| if(EMSCRIPTEN) |
| set(LLVM_COMPONENTS_TO_LINK |
| "" |
| ) |
| set(LLVM_LIBS_TO_LINK |
| "" |
| ) |
| set(CLANG_LIBS_TO_LINK |
| clangInterpreter |
| ) |
| else() |
| set(LLVM_COMPONENTS_TO_LINK |
| ${LLVM_TARGETS_TO_BUILD} |
| Core |
| MC |
| OrcJIT |
| Support |
| TargetParser |
| ) |
| set(LLVM_LIBS_TO_LINK |
| LLVMTestingSupport |
| ) |
| set(CLANG_LIBS_TO_LINK |
| clangAST |
| clangBasic |
| clangInterpreter |
| clangFrontend |
| clangSema |
| ) |
| endif() |
| |
| add_distinct_clang_unittest(ClangReplInterpreterTests |
| IncrementalCompilerBuilderTest.cpp |
| IncrementalProcessingTest.cpp |
| InterpreterTest.cpp |
| InterpreterExtensionsTest.cpp |
| CodeCompletionTest.cpp |
| |
| EXPORT_SYMBOLS |
| |
| CLANG_LIBS |
| ${CLANG_LIBS_TO_LINK} |
| |
| LINK_LIBS |
| ${LLVM_LIBS_TO_LINK} |
| |
| LLVM_COMPONENTS |
| ${LLVM_COMPONENTS_TO_LINK} |
| ) |
| |
| if(EMSCRIPTEN) |
| # Without the above you try to link to LLVMSupport twice, and end |
| # up with a duplicate symbol error when creating the main module |
| get_target_property(LINKED_LIBS ClangReplInterpreterTests LINK_LIBRARIES) |
| list(REMOVE_ITEM LINKED_LIBS LLVMSupport) |
| set_target_properties(ClangReplInterpreterTests PROPERTIES LINK_LIBRARIES "${LINKED_LIBS}") |
| target_link_options(ClangReplInterpreterTests |
| PUBLIC "SHELL: -s MAIN_MODULE=1" |
| PUBLIC "SHELL: -s ALLOW_MEMORY_GROWTH=1" |
| PUBLIC "SHELL: -s STACK_SIZE=32mb" |
| PUBLIC "SHELL: -s INITIAL_MEMORY=128mb" |
| PUBLIC "SHELL: --emrun" |
| PUBLIC "SHELL: -Wl,--export=__clang_Interpreter_SetValueWithAlloc" |
| PUBLIC "SHELL: -Wl,--export=__clang_Interpreter_SetValueNoAlloc" |
| PUBLIC "SHELL: -Wl,--export=_ZnwmPv26__clang_Interpreter_NewTag" |
| PUBLIC "SHELL: -Wl,--export=_Z9getGlobalv" |
| PUBLIC "SHELL: -Wl,--export=_Z9setGlobali" |
| ) |
| set_target_properties(ClangReplInterpreterTests PROPERTIES |
| SUFFIX ".html" |
| ) |
| endif() |
| |
| # Exceptions on Windows are not yet supported. |
| if(NOT WIN32) |
| add_subdirectory(ExceptionTests) |
| endif() |
| |
| if(MSVC) |
| set_target_properties(ClangReplInterpreterTests PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS 1) |
| |
| # RTTI/C++ symbols |
| set(ClangReplInterpreterTests_exports ${ClangReplInterpreterTests_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(ClangReplInterpreterTests_exports ${ClangReplInterpreterTests_exports} _Init_thread_abort _Init_thread_epoch |
| _Init_thread_footer _Init_thread_header _tls_index |
| ) |
| |
| if(CMAKE_SIZEOF_VOID_P EQUAL 8) |
| # new/delete variants needed when linking to static msvc runtime (esp. Debug) |
| set(ClangReplInterpreterTests_exports ${ClangReplInterpreterTests_exports} |
| ??2@YAPEAX_K@Z |
| ??3@YAXPEAX@Z |
| ??_U@YAPEAX_K@Z |
| ??_V@YAXPEAX@Z |
| ??3@YAXPEAX_K@Z |
| ) |
| else() |
| set(ClangReplInterpreterTests_exports ${ClangReplInterpreterTests_exports} |
| ??2@YAPAXI@Z |
| ??3@YAXPAX@Z |
| ??3@YAXPAXI@Z |
| ??_U@YAPAXI@Z |
| ??_V@YAXPAX@Z |
| ??_V@YAXPAXI@Z |
| ) |
| endif() |
| |
| # List to '/EXPORT:sym0 /EXPORT:sym1 /EXPORT:sym2 ...' |
| list(TRANSFORM ClangReplInterpreterTests_exports PREPEND "LINKER:/EXPORT:") |
| set_property(TARGET ClangReplInterpreterTests APPEND PROPERTY LINK_OPTIONS ${ClangReplInterpreterTests_exports}) |
| |
| endif(MSVC) |