[CMake] Fix AMDGPUTests -DBUILD_SHARED_LIBS=on builds and trim dependencies of AMDGPU...
authorFangrui Song <maskray@google.com>
Mon, 23 Mar 2020 18:12:10 +0000 (11:12 -0700)
committerFangrui Song <maskray@google.com>
Mon, 23 Mar 2020 18:26:42 +0000 (11:26 -0700)
FAILED: unittests/Target/AMDGPU/AMDGPUTests
...
ld.lld: error: undefined symbol: llvm::MCRegisterInfo::getLLVMRegNum(unsigned int, bool) const
>>> referenced by DwarfRegMappings.cpp:60 (/usr/local/google/home/maskray/llvm/llvm/unittests/Target/AMDGPU/DwarfRegMappings.cpp:60)
>>>               unittests/Target/AMDGPU/CMakeFiles/AMDGPUTests.dir/DwarfRegMappings.cpp.o:(AMDGPUDwarfRegMappingTests_TestWave64DwarfRegMapping_Test::TestBody())
>>> referenced by DwarfRegMappings.cpp:82 (/usr/local/google/home/maskray/llvm/llvm/unittests/Target/AMDGPU/DwarfRegMappings.cpp:82)
>>>               unittests/Target/AMDGPU/CMakeFiles/AMDGPUTests.dir/DwarfRegMappings.cpp.o:(AMDGPUDwarfRegMappingTests_TestWave32DwarfRegMapping_Test::TestBody())

A -DBUILD_SHARED_LIBS=off build is good because AMDGPUCodeGen pulls in MC.
A -DBUILD_SHARED_LIBS=on build requires all direct dependencies (MC) to be listed becuase llvm/cmake/modules/HandleLLVMOptions.cmake uses -Wl,-z,defs

llvm/unittests/MC/AMDGPU/CMakeLists.txt
llvm/unittests/Target/AMDGPU/CMakeLists.txt

index b358194..9a77415 100644 (file)
@@ -1,5 +1,7 @@
 set(LLVM_LINK_COMPONENTS
-  ${LLVM_TARGETS_TO_BUILD}
+  AMDGPUCodeGen
+  AMDGPUDesc
+  AMDGPUInfo
   MC
   Support
   )
index 3e81347..ba6b92f 100644 (file)
@@ -4,9 +4,11 @@ include_directories(
   )
 
 set(LLVM_LINK_COMPONENTS
-  ${LLVM_TARGETS_TO_BUILD}
+  AMDGPUCodeGen
+  AMDGPUDesc
+  AMDGPUInfo
+  MC
   Support
-  Target
   )
 
 add_llvm_target_unittest(AMDGPUTests