diff options
author | Marcos Pividori <mpividori@google.com> | 2017-01-22 02:28:08 +0000 |
---|---|---|
committer | Marcos Pividori <mpividori@google.com> | 2017-01-22 02:28:08 +0000 |
commit | 0a4aeceb90650a24f4d426a20ec20749d232cf4b (patch) | |
tree | 2741361d0765cbc3b60635d7f655af7c944bf864 /llvm/lib | |
parent | 4e12600c90d9f0edc8e575769bbdeffb608664ec (diff) | |
download | bcm5719-llvm-0a4aeceb90650a24f4d426a20ec20749d232cf4b.tar.gz bcm5719-llvm-0a4aeceb90650a24f4d426a20ec20749d232cf4b.zip |
[libFuzzer] Fix test with shared libraries on Windows.
We need to set BINARY_DIR to: ${CMAKE_BINARY_DIR}/lib/Fuzzer/test , so the dll
is placed in the same directory than the test LLVMFuzzer-DSOTest, and is found
when executing that test.
As we are using CMAKE_CXX_CREATE_SHARED_LIBRARY to link the dll, we can't modify
the output directory for the import library. It will be created in the same
directory than the dll (in BINARY_DIR), no matter which value we set to
LIBRARY_DIR. So, if we set LIBRARY_DIR to a different directory than BINARY_DIR,
when linking LLVMFuzzer-DSOTest, cmake will look for the import library
LLVMFuzzer-DSO1.lib in LIBRARY_DIR, and won't find it, since it was created in
BINARY_DIR. So, for Windows, we need that LIBRARY_DIR and BINARY_DIR are the
same directory.
Differential Revision: https://reviews.llvm.org/D27870
llvm-svn: 292748
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Fuzzer/test/CMakeLists.txt | 18 | ||||
-rw-r--r-- | llvm/lib/Fuzzer/test/DSO1.cpp | 4 | ||||
-rw-r--r-- | llvm/lib/Fuzzer/test/DSO2.cpp | 4 |
3 files changed, 20 insertions, 6 deletions
diff --git a/llvm/lib/Fuzzer/test/CMakeLists.txt b/llvm/lib/Fuzzer/test/CMakeLists.txt index 2d1f1786293..f2dfcf21482 100644 --- a/llvm/lib/Fuzzer/test/CMakeLists.txt +++ b/llvm/lib/Fuzzer/test/CMakeLists.txt @@ -195,10 +195,20 @@ target_link_libraries(LLVMFuzzer-DSOTest set_target_properties(LLVMFuzzer-DSOTest PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/Fuzzer/test") -set_target_properties(LLVMFuzzer-DSO1 PROPERTIES LIBRARY_OUTPUT_DIRECTORY - "${CMAKE_BINARY_DIR}/lib/Fuzzer/lib") -set_target_properties(LLVMFuzzer-DSO2 PROPERTIES LIBRARY_OUTPUT_DIRECTORY - "${CMAKE_BINARY_DIR}/lib/Fuzzer/lib") + +if(MSVC) + set_output_directory(LLVMFuzzer-DSO1 + BINARY_DIR "${CMAKE_BINARY_DIR}/lib/Fuzzer/test" + LIBRARY_DIR "${CMAKE_BINARY_DIR}/lib/Fuzzer/test") + set_output_directory(LLVMFuzzer-DSO2 + BINARY_DIR "${CMAKE_BINARY_DIR}/lib/Fuzzer/test" + LIBRARY_DIR "${CMAKE_BINARY_DIR}/lib/Fuzzer/test") +else(MSVC) + set_output_directory(LLVMFuzzer-DSO1 + LIBRARY_DIR "${CMAKE_BINARY_DIR}/lib/Fuzzer/lib") + set_output_directory(LLVMFuzzer-DSO2 + LIBRARY_DIR "${CMAKE_BINARY_DIR}/lib/Fuzzer/lib") +endif() set(TestBinaries ${TestBinaries} LLVMFuzzer-DSOTest) diff --git a/llvm/lib/Fuzzer/test/DSO1.cpp b/llvm/lib/Fuzzer/test/DSO1.cpp index 4a293890f4b..72a5ec4a0cd 100644 --- a/llvm/lib/Fuzzer/test/DSO1.cpp +++ b/llvm/lib/Fuzzer/test/DSO1.cpp @@ -2,7 +2,9 @@ // License. See LICENSE.TXT for details. // Source code for a simple DSO. - +#ifdef _WIN32 +__declspec( dllexport ) +#endif int DSO1(int a) { if (a < 123456) return 0; diff --git a/llvm/lib/Fuzzer/test/DSO2.cpp b/llvm/lib/Fuzzer/test/DSO2.cpp index 04b308d193a..2967055dc22 100644 --- a/llvm/lib/Fuzzer/test/DSO2.cpp +++ b/llvm/lib/Fuzzer/test/DSO2.cpp @@ -2,7 +2,9 @@ // License. See LICENSE.TXT for details. // Source code for a simple DSO. - +#ifdef _WIN32 +__declspec( dllexport ) +#endif int DSO2(int a) { if (a < 3598235) return 0; |