On 10/31/2013 02:43 PM, Brad King wrote: > I think what we need to do is when only the plain tll signature > is used, cmTarget and cmExportFileGenerator logic should behave > as if INTERFACE_LINK_LIBRARIES were always set to the link > implementation and LINK_INTERFACE_LIBRARIES is set to the link > implementation when CMP0022 is not NEW.
I think your current change edits the wrong place. This block: http://cmake.org/gitweb?p=cmake.git;a=blob;f=Source/cmTarget.cxx;hb=v2.8.12#l6591 is the culprit for this regression. It will be reached exactly when only the plain tll signature is used because all other signatures set the link interface explicitly: if(explicitLibraries) { ... } else if (this->GetPolicyStatusCMP0022() == cmPolicies::WARN || this->GetPolicyStatusCMP0022() == cmPolicies::OLD) // The implementation shouldn't be the interface if CMP0022 is NEW. That // way, the LINK_LIBRARIES property can be set directly without having to // empty the INTERFACE_LINK_LIBRARIES { // The link implementation is the default link interface. LinkImplementation const* impl = this->GetLinkImplementation(config, headTarget); iface.ImplementationIsInterface = true; iface.Libraries = impl->Libraries; iface.WrongConfigLibraries = impl->WrongConfigLibraries; if(this->LinkLanguagePropagatesToDependents()) { // Targets using this archive need its language runtime libraries. iface.Languages = impl->Languages; } } Can you explain what the comment about LINK_LIBRARIES means? It is the logic here that needs to trigger regardless of the CMP0022 setting, and then the export logic must deal with the case that the implementation is the interface both for populating the new and old interface properties. -Brad -- Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers