소스 검색

Test OBJECT library language propagation

Teach the RunCMake.ObjectLibrary test to verify that languages used in
an OBJECT library are propagated to targets that use it so that the
languages can be included in link analysis.
Brad King 13 년 전
부모
커밋
db7ef82402
3개의 변경된 파일17개의 추가작업 그리고 0개의 파일을 삭제
  1. 15 0
      Tests/RunCMake/ObjectLibrary/ExportLanguages.cmake
  2. 1 0
      Tests/RunCMake/ObjectLibrary/RunCMakeTest.cmake
  3. 1 0
      Tests/RunCMake/ObjectLibrary/a.cxx

+ 15 - 0
Tests/RunCMake/ObjectLibrary/ExportLanguages.cmake

@@ -0,0 +1,15 @@
+enable_language(CXX)
+add_library(A OBJECT a.cxx)
+add_library(B STATIC a.c $<TARGET_OBJECTS:A>)
+
+# Verify that object library languages are propagated.
+export(TARGETS B NAMESPACE Exp FILE BExport.cmake)
+include(${CMAKE_CURRENT_BINARY_DIR}/BExport.cmake)
+get_property(configs TARGET ExpB PROPERTY IMPORTED_CONFIGURATIONS)
+foreach(c ${configs})
+  get_property(langs TARGET ExpB PROPERTY IMPORTED_LINK_INTERFACE_LANGUAGES_${c})
+  list(FIND langs CXX pos)
+  if(${pos} LESS 0)
+    message(FATAL_ERROR "Target export does not list object library languages.")
+  endif()
+endforeach()

+ 1 - 0
Tests/RunCMake/ObjectLibrary/RunCMakeTest.cmake

@@ -6,6 +6,7 @@ run_cmake(BadSourceExpression3)
 run_cmake(BadObjSource1)
 run_cmake(BadObjSource2)
 run_cmake(Export)
+run_cmake(ExportLanguages)
 run_cmake(Import)
 run_cmake(Install)
 run_cmake(LinkObjLHS)

+ 1 - 0
Tests/RunCMake/ObjectLibrary/a.cxx

@@ -0,0 +1 @@
+extern "C" int acxx(void) { return 0; }