From 3b09398ae27f0e4b5975920ac2787427ffc6ccc4 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 21 Jul 2015 14:27:00 -0400 Subject: Tests: Teach RunCMake.export to enable languages only when needed --- Tests/RunCMake/export/AppendExport-stderr.txt | 2 +- Tests/RunCMake/export/AppendExport.cmake | 1 + Tests/RunCMake/export/CMakeLists.txt | 2 +- Tests/RunCMake/export/OldIface-stderr.txt | 2 +- Tests/RunCMake/export/OldIface.cmake | 1 + 5 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Tests/RunCMake/export/AppendExport-stderr.txt b/Tests/RunCMake/export/AppendExport-stderr.txt index 6e385d4..d71620e 100644 --- a/Tests/RunCMake/export/AppendExport-stderr.txt +++ b/Tests/RunCMake/export/AppendExport-stderr.txt @@ -1,4 +1,4 @@ -CMake Error at AppendExport.cmake:8 \(export\): +CMake Error at AppendExport.cmake:[0-9]+ \(export\): export EXPORT signature does not recognise the APPEND option. Call Stack \(most recent call first\): CMakeLists.txt:3 \(include\) diff --git a/Tests/RunCMake/export/AppendExport.cmake b/Tests/RunCMake/export/AppendExport.cmake index f36010b..2a99dfc 100644 --- a/Tests/RunCMake/export/AppendExport.cmake +++ b/Tests/RunCMake/export/AppendExport.cmake @@ -1,3 +1,4 @@ +enable_language(CXX) add_library(foo empty.cpp) export(TARGETS foo FILE "${CMAKE_CURRENT_BINARY_DIR}/foo.cmake") install(TARGETS foo EXPORT fooExport diff --git a/Tests/RunCMake/export/CMakeLists.txt b/Tests/RunCMake/export/CMakeLists.txt index be9d403..12cd3c7 100644 --- a/Tests/RunCMake/export/CMakeLists.txt +++ b/Tests/RunCMake/export/CMakeLists.txt @@ -1,3 +1,3 @@ cmake_minimum_required(VERSION 2.8.4) -project(${RunCMake_TEST}) +project(${RunCMake_TEST} NONE) include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/export/OldIface-stderr.txt b/Tests/RunCMake/export/OldIface-stderr.txt index afb4ae3..818c2cb 100644 --- a/Tests/RunCMake/export/OldIface-stderr.txt +++ b/Tests/RunCMake/export/OldIface-stderr.txt @@ -1,4 +1,4 @@ -CMake Error at OldIface.cmake:8 \(export\): +CMake Error at OldIface.cmake:[0-9]+ \(export\): export EXPORT signature does not recognise the EXPORT_LINK_INTERFACE_LIBRARIES option. Call Stack \(most recent call first\): diff --git a/Tests/RunCMake/export/OldIface.cmake b/Tests/RunCMake/export/OldIface.cmake index 5fb8e25..833b023 100644 --- a/Tests/RunCMake/export/OldIface.cmake +++ b/Tests/RunCMake/export/OldIface.cmake @@ -1,3 +1,4 @@ +enable_language(CXX) add_library(foo empty.cpp) export(TARGETS foo FILE "${CMAKE_CURRENT_BINARY_DIR}/foo.cmake") install(TARGETS foo EXPORT fooExport -- cgit v0.12 From 7e9f908ef54a3c2fe42ae8f9376c77e5bc988a9a Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 21 Jul 2015 14:37:20 -0400 Subject: export: Reject custom target exports earlier (#15657) Diagnose and reject custom targets given to the export() command immediately. Previously we would generate an internal error later. --- Source/cmExportCommand.cxx | 6 ++++++ Tests/RunCMake/export/CustomTarget-result.txt | 1 + Tests/RunCMake/export/CustomTarget-stderr.txt | 4 ++++ Tests/RunCMake/export/CustomTarget.cmake | 2 ++ Tests/RunCMake/export/RunCMakeTest.cmake | 1 + 5 files changed, 14 insertions(+) create mode 100644 Tests/RunCMake/export/CustomTarget-result.txt create mode 100644 Tests/RunCMake/export/CustomTarget-stderr.txt create mode 100644 Tests/RunCMake/export/CustomTarget.cmake diff --git a/Source/cmExportCommand.cxx b/Source/cmExportCommand.cxx index 43d26f9..96ea77b 100644 --- a/Source/cmExportCommand.cxx +++ b/Source/cmExportCommand.cxx @@ -177,6 +177,12 @@ bool cmExportCommand this->SetError(e.str()); return false; } + if (target->GetType() == cmTarget::UTILITY) + { + this->SetError("given custom target \"" + *currentTarget + + "\" which may not be exported."); + return false; + } } else { diff --git a/Tests/RunCMake/export/CustomTarget-result.txt b/Tests/RunCMake/export/CustomTarget-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/export/CustomTarget-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/export/CustomTarget-stderr.txt b/Tests/RunCMake/export/CustomTarget-stderr.txt new file mode 100644 index 0000000..57a9af3 --- /dev/null +++ b/Tests/RunCMake/export/CustomTarget-stderr.txt @@ -0,0 +1,4 @@ +^CMake Error at CustomTarget.cmake:[0-9]+ \(export\): + export given custom target "CustomTarget" which may not be exported. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\)$ diff --git a/Tests/RunCMake/export/CustomTarget.cmake b/Tests/RunCMake/export/CustomTarget.cmake new file mode 100644 index 0000000..4d2bf18 --- /dev/null +++ b/Tests/RunCMake/export/CustomTarget.cmake @@ -0,0 +1,2 @@ +add_custom_target(CustomTarget) +export(TARGETS CustomTarget FILE somefile.cmake) diff --git a/Tests/RunCMake/export/RunCMakeTest.cmake b/Tests/RunCMake/export/RunCMakeTest.cmake index 4b04f18..6d0b7ca 100644 --- a/Tests/RunCMake/export/RunCMakeTest.cmake +++ b/Tests/RunCMake/export/RunCMakeTest.cmake @@ -1,5 +1,6 @@ include(RunCMake) +run_cmake(CustomTarget) run_cmake(TargetNotFound) run_cmake(AppendExport) run_cmake(OldIface) -- cgit v0.12