|  | # Needed by LLVM's CMake checks because this file defines multiple targets. | 
|  | set(LLVM_OPTIONAL_SOURCES ExportedFuncs.cpp PipSqueak.cpp) | 
|  |  | 
|  | set(LLVM_LINK_COMPONENTS Support) | 
|  |  | 
|  | add_library(DynamicLibraryLib STATIC | 
|  | ExportedFuncs.cpp | 
|  | ) | 
|  | set_target_properties(DynamicLibraryLib PROPERTIES FOLDER "Tests") | 
|  |  | 
|  | # extract_symbols.py relies on all its library arguments being in the same | 
|  | # directory, so we must set the output directory in the same way as if | 
|  | # add_llvm_library was used. | 
|  | set_output_directory(DynamicLibraryLib | 
|  | LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR} | 
|  | ) | 
|  |  | 
|  | add_llvm_unittest(DynamicLibraryTests | 
|  | DynamicLibraryTest.cpp | 
|  | ) | 
|  | target_link_libraries(DynamicLibraryTests PRIVATE DynamicLibraryLib) | 
|  | export_executable_symbols(DynamicLibraryTests) | 
|  |  | 
|  | function(dynlib_add_module NAME) | 
|  | add_library(${NAME} MODULE | 
|  | PipSqueak.cpp | 
|  | ) | 
|  | set_target_properties(${NAME} PROPERTIES FOLDER "Tests") | 
|  |  | 
|  | set_output_directory(${NAME} | 
|  | BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR} | 
|  | LIBRARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR} | 
|  | ) | 
|  |  | 
|  | set_target_properties(${NAME} | 
|  | PROPERTIES PREFIX "" | 
|  | SUFFIX ${LLVM_PLUGIN_EXT} | 
|  | ) | 
|  |  | 
|  | add_dependencies(DynamicLibraryTests ${NAME}) | 
|  |  | 
|  | if(LLVM_INTEGRATED_CRT_ALLOC) | 
|  | # We need to link in the Support lib for the Memory allocator override, | 
|  | # otherwise the DynamicLibrary.Shutdown test will fail, because it would | 
|  | # allocate memory with the CRT allocator, and release it with our custom | 
|  | # allocator (see llvm/lib/Support/Windows/Memory.inc). | 
|  | # /INCLUDE:malloc is there to force searching into LLVMSupport before libucrt | 
|  | llvm_map_components_to_libnames(llvm_libs Support) | 
|  | target_link_libraries(${NAME} ${llvm_libs} "-INCLUDE:malloc") | 
|  | endif() | 
|  |  | 
|  | endfunction(dynlib_add_module) | 
|  |  | 
|  | # Revert -Wl,-z,nodelete on this test since it relies on the file | 
|  | # being unloaded. | 
|  | if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") | 
|  | string(REPLACE "-Wl,-z,nodelete" "" CMAKE_MODULE_LINKER_FLAGS | 
|  | ${CMAKE_MODULE_LINKER_FLAGS}) | 
|  | endif() | 
|  |  | 
|  | dynlib_add_module(PipSqueak) | 
|  | dynlib_add_module(SecondLib) |