New upstream version 3.31.2
This commit is contained in:
parent
63888ed0f6
commit
8813f25f55
@ -1,5 +1,6 @@
|
||||
#include "mysqrt.h"
|
||||
|
||||
// TODO 4: include cmath
|
||||
#include <iostream>
|
||||
|
||||
namespace mathfunctions {
|
||||
|
@ -16,5 +16,7 @@ the :prop_tgt:`SOVERSION` target property, if set, and otherwise from
|
||||
the :prop_tgt:`VERSION` target property, if set.
|
||||
|
||||
This property defaults to :variable:`CMAKE_AIX_SHARED_LIBRARY_ARCHIVE`
|
||||
if that variable is set when a ``SHARED`` library target is created
|
||||
by :command:`add_library`.
|
||||
if that variable is set when a non-imported ``SHARED`` library target
|
||||
is created by :command:`add_library`. Imported targets must explicitly
|
||||
enable :prop_tgt:`!AIX_SHARED_LIBRARY_ARCHIVE` if they import an AIX
|
||||
shared library archive.
|
||||
|
@ -263,9 +263,9 @@ Updates
|
||||
|
||||
Changes made since CMake 3.31.0 include the following.
|
||||
|
||||
3.31.1
|
||||
------
|
||||
3.31.1, 3.31.2
|
||||
--------------
|
||||
|
||||
* This version made no changes to documented features or interfaces.
|
||||
* These versions made no changes to documented features or interfaces.
|
||||
Some implementation updates were made to support ecosystem changes
|
||||
and/or fix regressions.
|
||||
|
@ -6,5 +6,5 @@ CMAKE_AIX_SHARED_LIBRARY_ARCHIVE
|
||||
On AIX, enable creation of shared library archives.
|
||||
|
||||
This variable initializes the :prop_tgt:`AIX_SHARED_LIBRARY_ARCHIVE`
|
||||
target property on ``SHARED`` library targets as they are created
|
||||
by :command:`add_library`. See that target property for details.
|
||||
target property on non-imported ``SHARED`` library targets as they are
|
||||
created by :command:`add_library`. See that target property for details.
|
||||
|
@ -30,6 +30,9 @@ else()
|
||||
string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -O3")
|
||||
string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -O2 -g")
|
||||
|
||||
# Compiler + IPO does not recognize --dependency-file link option
|
||||
set(CMAKE_${lang}_LINKER_DEPFILE_SUPPORTED FALSE)
|
||||
|
||||
if("${lang}" STREQUAL "CXX")
|
||||
set(CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "${CMAKE_${lang}_COMPILER}")
|
||||
if(CMAKE_${lang}_COMPILER_ARG1)
|
||||
|
@ -3464,14 +3464,15 @@ if (("Development.Module" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
|
||||
endif()
|
||||
|
||||
# finalize library version information
|
||||
_python_get_version (SABI_LIBRARY PREFIX _${_PYTHON_PREFIX}_)
|
||||
# ABI library does not have the full version information
|
||||
if (${_PYTHON_PREFIX}_Interpreter_FOUND OR _${_PYTHON_PREFIX}_LIBRARY_RELEASE)
|
||||
# update from interpreter or library
|
||||
if (${_PYTHON_PREFIX}_Interpreter_FOUND AND NOT _${_PYTHON_PREFIX}_LIBRARY_RELEASE)
|
||||
# update from interpreter
|
||||
set (_${_PYTHON_PREFIX}_VERSION ${${_PYTHON_PREFIX}_VERSION})
|
||||
set (_${_PYTHON_PREFIX}_VERSION_MAJOR ${${_PYTHON_PREFIX}_VERSION_MAJOR})
|
||||
set (_${_PYTHON_PREFIX}_VERSION_MINOR ${${_PYTHON_PREFIX}_VERSION_MINOR})
|
||||
set (_${_PYTHON_PREFIX}_VERSION_PATCH ${${_PYTHON_PREFIX}_VERSION_PATCH})
|
||||
elseif(NOT _${_PYTHON_PREFIX}_LIBRARY_RELEASE)
|
||||
_python_get_version (SABI_LIBRARY PREFIX _${_PYTHON_PREFIX}_)
|
||||
endif()
|
||||
|
||||
set (${_PYTHON_PREFIX}_SABI_LIBRARY_RELEASE "${_${_PYTHON_PREFIX}_SABI_LIBRARY_RELEASE}")
|
||||
|
@ -5,22 +5,17 @@
|
||||
FindRuby
|
||||
--------
|
||||
|
||||
Find Ruby
|
||||
|
||||
This module finds if Ruby is installed and determines where the
|
||||
include files and libraries are. Ruby 1.8 through 3.3 are
|
||||
supported.
|
||||
This module determines if Ruby is installed and finds the locations of its
|
||||
include files and libraries. Ruby 1.8 through 3.4 are supported.
|
||||
|
||||
The minimum required version of Ruby can be specified using the
|
||||
standard syntax, e.g.
|
||||
|
||||
.. code-block:: cmake
|
||||
|
||||
find_package(Ruby 2.5.1 EXACT REQUIRED)
|
||||
find_package(Ruby 3.2.6 EXACT REQUIRED)
|
||||
# OR
|
||||
find_package(Ruby 2.4)
|
||||
|
||||
It also determines what the name of the library is.
|
||||
find_package(Ruby 3.2)
|
||||
|
||||
Virtual environments such as RVM are handled as well, by passing
|
||||
the argument ``Ruby_FIND_VIRTUALENV``
|
||||
@ -40,7 +35,7 @@ This module will set the following variables in your project:
|
||||
.. versionadded:: 3.18
|
||||
libraries needed to use ruby from C.
|
||||
``Ruby_VERSION``
|
||||
the version of ruby which was found, e.g. "1.8.7"
|
||||
the version of ruby which was found, e.g. "3.2.6"
|
||||
``Ruby_VERSION_MAJOR``
|
||||
Ruby major version.
|
||||
``Ruby_VERSION_MINOR``
|
||||
@ -136,13 +131,13 @@ set(Ruby_FIND_VERSION_SHORT_NODOT "${Ruby_FIND_VERSION_MAJOR}${Ruby_FIND_VERSION
|
||||
|
||||
# Set name of possible executables, ignoring the minor
|
||||
# Eg:
|
||||
# 2.1.1 => from ruby33 to ruby21 included
|
||||
# 2.1 => from ruby33 to ruby21 included
|
||||
# 2 => from ruby33 to ruby20 included
|
||||
# empty => from ruby33 to ruby18 included
|
||||
# 3.2.6 => from ruby34 to ruby32 included
|
||||
# 3.2 => from ruby34 to ruby32 included
|
||||
# 3 => from ruby34 to ruby30 included
|
||||
# empty => from ruby34 to ruby18 included
|
||||
if(NOT Ruby_FIND_VERSION_EXACT)
|
||||
|
||||
foreach(_ruby_version RANGE 33 18 -1)
|
||||
foreach(_ruby_version RANGE 34 18 -1)
|
||||
string(SUBSTRING "${_ruby_version}" 0 1 _ruby_major_version)
|
||||
string(SUBSTRING "${_ruby_version}" 1 1 _ruby_minor_version)
|
||||
|
||||
|
@ -11,7 +11,7 @@ cmake_policy(SET CMP0140 NEW)
|
||||
|
||||
function(__linker_gnu lang)
|
||||
# define flags for linker depfile generation
|
||||
set(CMAKE_${lang}_LINKER_DEPFILE_FLAGS "LINKER:--dependency-file,<DEP_FILE>")
|
||||
set(CMAKE_${lang}_LINKER_DEPFILE_FLAGS "LINKER:--dependency-file=<DEP_FILE>")
|
||||
set(CMAKE_${lang}_LINKER_DEPFILE_FORMAT gcc)
|
||||
|
||||
if(NOT CMAKE_EXECUTABLE_FORMAT STREQUAL "ELF")
|
||||
|
@ -1,7 +1,7 @@
|
||||
# CMake version number components.
|
||||
set(CMake_VERSION_MAJOR 3)
|
||||
set(CMake_VERSION_MINOR 31)
|
||||
set(CMake_VERSION_PATCH 1)
|
||||
set(CMake_VERSION_PATCH 2)
|
||||
#set(CMake_VERSION_RC 0)
|
||||
set(CMake_VERSION_IS_DIRTY 0)
|
||||
|
||||
@ -21,7 +21,7 @@ endif()
|
||||
|
||||
if(NOT CMake_VERSION_NO_GIT)
|
||||
# If this source was exported by 'git archive', use its commit info.
|
||||
set(git_info [==[eb281d3454 CMake 3.31.1]==])
|
||||
set(git_info [==[793c5f11f6 CMake 3.31.2]==])
|
||||
|
||||
# Otherwise, try to identify the current development source version.
|
||||
if(NOT git_info MATCHES "^([0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]?[0-9a-f]?)[0-9a-f]* "
|
||||
|
@ -334,6 +334,12 @@ void cmExportCMakeConfigGenerator::GenerateImportTargetCode(
|
||||
os << "set_property(TARGET " << targetName << " PROPERTY BUNDLE 1)\n";
|
||||
}
|
||||
|
||||
// Mark the imported library if it is an AIX shared library archive.
|
||||
if (target->IsArchivedAIXSharedLibrary()) {
|
||||
os << "set_property(TARGET " << targetName
|
||||
<< " PROPERTY AIX_SHARED_LIBRARY_ARCHIVE 1)\n";
|
||||
}
|
||||
|
||||
// generate DEPRECATION
|
||||
if (target->IsDeprecated()) {
|
||||
os << "set_property(TARGET " << targetName << " PROPERTY DEPRECATION "
|
||||
|
@ -3592,6 +3592,12 @@ struct TargetFilesystemArtifactResultCreator<ArtifactSonameTag>
|
||||
"SHARED libraries.");
|
||||
return std::string();
|
||||
}
|
||||
if (target->IsArchivedAIXSharedLibrary()) {
|
||||
::reportError(context, content->GetOriginalExpression(),
|
||||
"TARGET_SONAME_FILE is not allowed for "
|
||||
"AIX_SHARED_LIBRARY_ARCHIVE libraries.");
|
||||
return std::string();
|
||||
}
|
||||
std::string result = cmStrCat(target->GetDirectory(context->Config), '/',
|
||||
target->GetSOName(context->Config));
|
||||
return result;
|
||||
@ -3618,6 +3624,12 @@ struct TargetFilesystemArtifactResultCreator<ArtifactSonameImportTag>
|
||||
"SHARED libraries.");
|
||||
return std::string();
|
||||
}
|
||||
if (target->IsArchivedAIXSharedLibrary()) {
|
||||
::reportError(context, content->GetOriginalExpression(),
|
||||
"TARGET_SONAME_IMPORT_FILE is not allowed for "
|
||||
"AIX_SHARED_LIBRARY_ARCHIVE libraries.");
|
||||
return std::string();
|
||||
}
|
||||
|
||||
if (target->HasImportLibrary(context->Config)) {
|
||||
return cmStrCat(target->GetDirectory(
|
||||
|
@ -551,8 +551,9 @@ std::vector<BT<std::string>>& cmGeneratorTarget::ResolveLinkerWrapper(
|
||||
const std::string SHELL{ "SHELL:" };
|
||||
const std::string LINKER_SHELL = LINKER + SHELL;
|
||||
|
||||
for (auto entry = result.begin(); entry != result.end(); ++entry) {
|
||||
for (auto entry = result.begin(); entry != result.end();) {
|
||||
if (entry->Value.compare(0, LINKER.length(), LINKER) != 0) {
|
||||
++entry;
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -594,10 +595,10 @@ std::vector<BT<std::string>>& cmGeneratorTarget::ResolveLinkerWrapper(
|
||||
if (joinItems) {
|
||||
result.insert(
|
||||
entry, cmJoin(cmMakeRange(options.begin(), options.end()), " "_s));
|
||||
entry = std::next(result.begin(), index);
|
||||
entry = std::next(result.begin(), index + 1);
|
||||
} else {
|
||||
result.insert(entry, options.begin(), options.end());
|
||||
entry = std::next(result.begin(), index + options.size() - 1);
|
||||
entry = std::next(result.begin(), index + options.size());
|
||||
}
|
||||
}
|
||||
return result;
|
||||
|
@ -107,11 +107,13 @@ void cmInstallImportedRuntimeArtifactsGenerator::GenerateScriptForConfig(
|
||||
}
|
||||
} else {
|
||||
std::vector<std::string> files{ location };
|
||||
auto soName = this->Target->GetSOName(config);
|
||||
auto soNameFile =
|
||||
cmStrCat(this->Target->GetDirectory(config), '/', soName);
|
||||
if (!soName.empty() && soNameFile != location) {
|
||||
files.push_back(soNameFile);
|
||||
if (!this->Target->IsArchivedAIXSharedLibrary()) {
|
||||
auto soName = this->Target->GetSOName(config);
|
||||
auto soNameFile =
|
||||
cmStrCat(this->Target->GetDirectory(config), '/', soName);
|
||||
if (!soName.empty() && soNameFile != location) {
|
||||
files.push_back(soNameFile);
|
||||
}
|
||||
}
|
||||
this->AddInstallRule(os, this->GetDestination(config),
|
||||
cmInstallType_SHARED_LIBRARY, files,
|
||||
|
@ -1626,8 +1626,6 @@ void cmLocalGenerator::GetTargetFlags(
|
||||
this->AppendPositionIndependentLinkerFlags(extraLinkFlags, target, config,
|
||||
linkLanguage);
|
||||
this->AppendIPOLinkerFlags(extraLinkFlags, target, config, linkLanguage);
|
||||
this->AppendDependencyInfoLinkerFlags(extraLinkFlags, target, config,
|
||||
linkLanguage);
|
||||
this->AppendModuleDefinitionFlag(extraLinkFlags, target, linkLineComputer,
|
||||
config);
|
||||
|
||||
|
@ -1277,6 +1277,9 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement(
|
||||
vars["LINK_LIBRARIES"], vars["FLAGS"],
|
||||
vars["LINK_FLAGS"], frameworkPath, linkPath, gt);
|
||||
|
||||
localGen.AppendDependencyInfoLinkerFlags(vars["LINK_FLAGS"], gt, config,
|
||||
this->TargetLinkLanguage(config));
|
||||
|
||||
// Add OS X version flags, if any.
|
||||
if (this->GeneratorTarget->GetType() == cmStateEnums::SHARED_LIBRARY ||
|
||||
this->GeneratorTarget->GetType() == cmStateEnums::MODULE_LIBRARY) {
|
||||
|
@ -1340,12 +1340,9 @@ bool cmQtAutoGenInitializer::InitAutogenTarget()
|
||||
}
|
||||
|
||||
if (this->Uic.Enabled) {
|
||||
// Make all ui_*.h files byproducts of the ${target}_autogen/timestamp
|
||||
// custom command if the generation of depfile is enabled.
|
||||
auto& byProducts = useDepfile ? timestampByproducts : autogenByproducts;
|
||||
for (auto const& file : this->Uic.UiHeaders) {
|
||||
this->AddGeneratedSource(file.first, this->Uic);
|
||||
byProducts.push_back(file.second);
|
||||
autogenByproducts.push_back(file.second);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1483,16 +1480,6 @@ bool cmQtAutoGenInitializer::InitAutogenTarget()
|
||||
}
|
||||
}
|
||||
|
||||
// For the Ninja, Makefile and Qt >= 5.15, add custom commands that create
|
||||
// XXX_autogen/timestamp files. Those custom commands have a depfile
|
||||
// assigned that is generated from the depfiles that were created by moc.
|
||||
//
|
||||
// The XXX_autogen targets merely wrap the XXX_autogen/timestamp custom
|
||||
// commands.
|
||||
// The dependency tree would then look like
|
||||
// the original dependencies of '_autogen' target <-'/timestamp' file
|
||||
// <- '_autogen' target
|
||||
|
||||
cmTarget* timestampTarget = nullptr;
|
||||
std::vector<std::string> dependencies(
|
||||
this->AutogenTarget.DependFiles.begin(),
|
||||
@ -1500,6 +1487,40 @@ bool cmQtAutoGenInitializer::InitAutogenTarget()
|
||||
if (useDepfile) {
|
||||
// Create a custom command that generates a timestamp file and
|
||||
// has a depfile assigned. The depfile is created by JobDepFilesMergeT.
|
||||
//
|
||||
// Also create an additional '_autogen_timestamp_deps' that the custom
|
||||
// command will depend on. It will have no sources or commands to
|
||||
// execute, but it will have dependencies that would originally be
|
||||
// assigned to the pre-Qt 5.15 'autogen' target. These dependencies will
|
||||
// serve as a list of order-only dependencies for the custom command,
|
||||
// without forcing the custom command to re-execute.
|
||||
//
|
||||
// The dependency tree would then look like
|
||||
// '_autogen_timestamp_deps (order-only)' <- '/timestamp' file <-
|
||||
// '_autogen' target.
|
||||
const auto timestampTargetName =
|
||||
cmStrCat(this->GenTarget->GetName(), "_autogen_timestamp_deps");
|
||||
|
||||
auto cc = cm::make_unique<cmCustomCommand>();
|
||||
cc->SetWorkingDirectory(this->Dir.Work.c_str());
|
||||
cc->SetDepends(dependencies);
|
||||
cc->SetEscapeOldStyle(false);
|
||||
timestampTarget = this->LocalGen->AddUtilityCommand(timestampTargetName,
|
||||
true, std::move(cc));
|
||||
|
||||
this->LocalGen->AddGeneratorTarget(
|
||||
cm::make_unique<cmGeneratorTarget>(timestampTarget, this->LocalGen));
|
||||
|
||||
// Set FOLDER property on the timestamp target, so it appears in the
|
||||
// appropriate folder in an IDE or in the file api.
|
||||
if (!this->TargetsFolder.empty()) {
|
||||
timestampTarget->SetProperty("FOLDER", this->TargetsFolder);
|
||||
}
|
||||
|
||||
// Make '/timestamp' file depend on '_autogen_timestamp_deps' and on the
|
||||
// moc and uic executables (whichever are enabled).
|
||||
dependencies.clear();
|
||||
dependencies.push_back(timestampTargetName);
|
||||
|
||||
AddAutogenExecutableToDependencies(this->Moc, dependencies);
|
||||
AddAutogenExecutableToDependencies(this->Uic, dependencies);
|
||||
@ -1544,7 +1565,7 @@ bool cmQtAutoGenInitializer::InitAutogenTarget()
|
||||
{ cmSystemTools::GetCMakeCommand(), "-E", "touch", outputFile }));
|
||||
this->AddGeneratedSource(outputFile, this->Moc);
|
||||
}
|
||||
auto cc = cm::make_unique<cmCustomCommand>();
|
||||
cc = cm::make_unique<cmCustomCommand>();
|
||||
cc->SetOutputs(outputFile);
|
||||
cc->SetByproducts(timestampByproducts);
|
||||
cc->SetDepends(dependencies);
|
||||
|
@ -1087,6 +1087,11 @@ cmTarget::cmTarget(std::string const& name, cmStateEnums::TargetType type,
|
||||
}
|
||||
}
|
||||
|
||||
// Imported targets must set AIX_SHARED_LIBRARY_ARCHIVE explicitly.
|
||||
if (this->IsImported() && property == "AIX_SHARED_LIBRARY_ARCHIVE"_s) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Replace everything after "CMAKE_"
|
||||
defKey.replace(defKey.begin() + 6, defKey.end(), property);
|
||||
if (cmValue value = mf->GetDefinition(defKey)) {
|
||||
|
@ -5,6 +5,8 @@ if(POLICY CMP0129)
|
||||
endif()
|
||||
project(Export C CXX)
|
||||
|
||||
set(CMAKE_AIX_SHARED_LIBRARY_ARCHIVE 1)
|
||||
|
||||
find_package(Foo REQUIRED CONFIG NO_DEFAULT_PATH)
|
||||
|
||||
# Pretend that RelWithDebInfo should link to debug libraries to test
|
||||
@ -482,8 +484,8 @@ add_library(testMod1 MODULE empty.cpp)
|
||||
add_library(testMod2 MODULE empty.cpp)
|
||||
set_property(TARGET testMod2 PROPERTY BUNDLE 1)
|
||||
|
||||
add_library(testSharedLibArchiveAIX SHARED testSharedLibArchiveAIX.c)
|
||||
set_property(TARGET testSharedLibArchiveAIX PROPERTY AIX_SHARED_LIBRARY_ARCHIVE 1)
|
||||
add_library(testSharedObjectAIX SHARED testSharedObjectAIX.c)
|
||||
set_property(TARGET testSharedObjectAIX PROPERTY AIX_SHARED_LIBRARY_ARCHIVE 0)
|
||||
|
||||
install(TARGETS testLibRequired
|
||||
EXPORT RequiredExp DESTINATION lib
|
||||
@ -625,7 +627,7 @@ install(
|
||||
systemlib
|
||||
testInterfaceIncludeUser
|
||||
testInterfaceIncludeUser2
|
||||
testSharedLibArchiveAIX
|
||||
testSharedObjectAIX
|
||||
EXPORT exp
|
||||
RUNTIME DESTINATION $<1:bin>$<0:/wrong>
|
||||
LIBRARY DESTINATION $<1:lib>$<0:/wrong> NAMELINK_SKIP
|
||||
@ -703,7 +705,7 @@ export(TARGETS testExe2 testLib4 testLib5 testLib6 testLib7 testExe3 testExe4 te
|
||||
testExeWithPluginHelper testExePluginHelperObj
|
||||
testMod1 testMod2
|
||||
testLibPerConfigDest
|
||||
testSharedLibArchiveAIX
|
||||
testSharedObjectAIX
|
||||
NAMESPACE bld_
|
||||
APPEND FILE ExportBuildTree.cmake
|
||||
)
|
||||
|
@ -4,7 +4,7 @@
|
||||
# define EXPORT
|
||||
#endif
|
||||
|
||||
EXPORT int testSharedLibArchiveAIX(void)
|
||||
EXPORT int testSharedObjectAIX(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
@ -68,7 +68,7 @@ target_link_libraries(imp_testExe1
|
||||
exp_testLib7
|
||||
exp_testLibCycleA
|
||||
exp_testLibPerConfigDest
|
||||
exp_testSharedLibArchiveAIX
|
||||
exp_testSharedObjectAIX
|
||||
exp_testStaticLibWithPlugin
|
||||
)
|
||||
|
||||
@ -124,7 +124,7 @@ target_link_libraries(imp_testExe1b
|
||||
bld_testLib7
|
||||
bld_testLibCycleA
|
||||
bld_testLibPerConfigDest
|
||||
bld_testSharedLibArchiveAIX
|
||||
bld_testSharedObjectAIX
|
||||
bld_testStaticLibWithPlugin
|
||||
)
|
||||
|
||||
|
@ -11,7 +11,7 @@ extern int testLib7(void);
|
||||
extern int testLibCycleA1(void);
|
||||
extern int testLibPerConfigDest(void);
|
||||
extern int testStaticLibPlugin(void);
|
||||
extern int testSharedLibArchiveAIX(void);
|
||||
extern int testSharedObjectAIX(void);
|
||||
|
||||
/* Switch a symbol between debug and optimized builds to make sure the
|
||||
proper library is found from the testLib4 link interface. */
|
||||
@ -27,6 +27,6 @@ int main(void)
|
||||
return (testLib2() + generated_by_testExe1() + testLib3() + testLib4() +
|
||||
testLib5() + testLib6() + testLib7() + testLibCycleA1() +
|
||||
testLibPerConfigDest() + testStaticLibPlugin() +
|
||||
testSharedLibArchiveAIX() + generated_by_testExe3() +
|
||||
testSharedObjectAIX() + generated_by_testExe3() +
|
||||
generated_by_testExe4() + testLib4lib() + testLib4libcfg());
|
||||
}
|
||||
|
@ -16,6 +16,55 @@ else()
|
||||
set(USER_INCLUDE_DIR "/path/to/invalid/dir")
|
||||
endif()
|
||||
|
||||
# check some combinations for modules search without interpreter
|
||||
block(SCOPE_FOR VARIABLES)
|
||||
find_package(Python3 REQUIRED COMPONENTS Development.SABIModule)
|
||||
if (NOT Python3_FOUND)
|
||||
message (FATAL_ERROR "Failed to find Python 3")
|
||||
endif()
|
||||
if (Python3_Development_FOUND)
|
||||
message (FATAL_ERROR "Python 3, COMPONENT 'Development' unexpectedly found")
|
||||
endif()
|
||||
if (Python3_Interpreter_FOUND)
|
||||
message (FATAL_ERROR "Python 3, COMPONENT 'Interpreter' unexpectedly found")
|
||||
endif()
|
||||
if (Python3_Development.Embed_FOUND)
|
||||
message (FATAL_ERROR "Python 3, COMPONENT 'Development.Embed' unexpectedly found")
|
||||
endif()
|
||||
if (Python3_Development.Module_FOUND)
|
||||
message (FATAL_ERROR "Python 3, COMPONENT 'Development.Module' unexpectedly found")
|
||||
endif()
|
||||
if (NOT Python3_Development.SABIModule_FOUND)
|
||||
message (FATAL_ERROR "Python 3, COMPONENT 'Development.SABIModule' not found")
|
||||
endif()
|
||||
unset(_Python3_SABI_LIBRARY_RELEASE CACHE)
|
||||
endblock()
|
||||
|
||||
block(SCOPE_FOR VARIABLES)
|
||||
find_package(Python3 REQUIRED COMPONENTS Development.Module Development.SABIModule)
|
||||
if (NOT Python3_FOUND)
|
||||
message (FATAL_ERROR "Failed to find Python 3")
|
||||
endif()
|
||||
if (Python3_Development_FOUND)
|
||||
message (FATAL_ERROR "Python 3, COMPONENT 'Development' unexpectedly found")
|
||||
endif()
|
||||
if (Python3_Interpreter_FOUND)
|
||||
message (FATAL_ERROR "Python 3, COMPONENT 'Interpreter' unexpectedly found")
|
||||
endif()
|
||||
if (Python3_Development.Embed_FOUND)
|
||||
message (FATAL_ERROR "Python 3, COMPONENT 'Development.Embed' unexpectedly found")
|
||||
endif()
|
||||
if (NOT Python3_Development.Module_FOUND)
|
||||
message (FATAL_ERROR "Python 3, COMPONENT 'Development.Module' not found")
|
||||
endif()
|
||||
if (NOT Python3_Development.SABIModule_FOUND)
|
||||
message (FATAL_ERROR "Python 3, COMPONENT 'Development.SABIModule' not found")
|
||||
endif()
|
||||
unset(_Python3_LIBRARY_RELEASE CACHE)
|
||||
unset(_Python3_SABI_LIBRARY_RELEASE CACHE)
|
||||
endblock()
|
||||
|
||||
|
||||
set(components Interpreter Development)
|
||||
if (CMake_TEST_FindPython3_SABIModule AND WIN32)
|
||||
list (APPEND components Development.SABIModule)
|
||||
|
@ -1,3 +1,4 @@
|
||||
|
||||
include(RunCMake)
|
||||
include(Autogen_common/utils)
|
||||
|
||||
@ -10,18 +11,18 @@ if (DEFINED with_qt_version)
|
||||
if (QtCore_VERSION VERSION_GREATER_EQUAL 5.15.0)
|
||||
macro(set_test_variables_for_unwanted_builds)
|
||||
if (RunCMake_GENERATOR MATCHES "Ninja")
|
||||
set(RunCMake_TEST_NOT_EXPECT_stdout "widget2.cpp.o.d|mainwindow.cpp.o.d")
|
||||
set(RunCMake_TEST_EXPECT_stdout "ninja: no work to do.")
|
||||
elseif (RunCMake_GENERATOR MATCHES "Make")
|
||||
set(RunCMake_TEST_NOT_EXPECT_stdout "Building CXX object multi_ui_files/CMakeFiles/example.dir/src/widget2.cpp.o|\
|
||||
Building CXX object multi_ui_files/CMakeFiles/example.dir/src/mainwindow.cpp.o")
|
||||
set(RunCMake_TEST_NOT_EXPECT_stdout "Building CXX object multi_ui_files/CMakeFiles/example.dir/src/main.cpp.o|\
|
||||
Building CXX object multi_ui_files/CMakeFiles/example.dir/src/widget.cpp.o")
|
||||
elseif (RunCMake_GENERATOR MATCHES "Visual Studio")
|
||||
set(RunCMake_TEST_NOT_EXPECT_stdout "widget2.cpp|mainwindow.cpp")
|
||||
set(RunCMake_TEST_NOT_EXPECT_stdout "widget.cpp")
|
||||
elseif (RunCMake_GENERATOR MATCHES "Xcode")
|
||||
set(RunCMake_TEST_NOT_EXPECT_stdout "widget2.cpp|mainwindow.cpp")
|
||||
set(RunCMake_TEST_NOT_EXPECT_stdout "widget.cpp")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
function(uic_build_test test_name binary_dir source_dir file_to_touch test_config)
|
||||
function(uic_incremental_build_test test_name binary_dir source_dir test_config)
|
||||
set(RunCMake_TEST_BINARY_DIR ${binary_dir})
|
||||
set(RunCMake_TEST_SOURCE_DIR ${source_dir})
|
||||
|
||||
@ -38,13 +39,14 @@ if (DEFINED with_qt_version)
|
||||
endif()
|
||||
run_cmake_with_options(${test_name} ${RunCMake_TEST_OPTIONS} ${config_arg})
|
||||
set(RunCMake_TEST_NO_CLEAN 1)
|
||||
set(RunCMake_TEST_VARIANT_DESCRIPTION "${RunCMake_TEST_VARIANT_DESCRIPTION}-First build")
|
||||
run_cmake_command("${test_name}-build" ${CMAKE_COMMAND} --build . ${test_verbose_arg} ${multiconfig_config_arg})
|
||||
set(RunCMake_TEST_VARIANT_DESCRIPTION "${config_desc}-Second build")
|
||||
run_cmake_command("${test_name}-build" ${CMAKE_COMMAND} --build . ${test_verbose_arg} ${multiconfig_config_arg})
|
||||
|
||||
file(TOUCH ${file_to_touch})
|
||||
set(RunCMake_TEST_VARIANT_DESCRIPTION "${config_desc}-first_build_after_touching")
|
||||
set(RunCMake_TEST_VARIANT_DESCRIPTION "${config_desc}-No files were built on the third build")
|
||||
set_test_variables_for_unwanted_builds()
|
||||
run_cmake_command("${test_name}-build" ${CMAKE_COMMAND} --build . ${test_verbose_arg} ${multiconfig_config_arg})
|
||||
message(STATUS "${test_name}-build${config_desc}-Only build files that were touched were built - PASSED")
|
||||
endfunction()
|
||||
|
||||
if(RunCMake_GENERATOR MATCHES "Make|Ninja|Visual Studio|Xcode")
|
||||
@ -59,11 +61,9 @@ if (DEFINED with_qt_version)
|
||||
set(config_desc "-${config}")
|
||||
endif()
|
||||
|
||||
uic_build_test(multi_ui_files_touch_ui ${RunCMake_BINARY_DIR}/multi_ui_files_touch_ui${config_desc}-build
|
||||
${RunCMake_SOURCE_DIR}/multi_ui_files ${RunCMake_SOURCE_DIR}/multi_ui_files/src/widget1.ui ${config})
|
||||
uic_incremental_build_test(incremental_build_test ${RunCMake_BINARY_DIR}/incremental_build${config_desc}-build
|
||||
${RunCMake_SOURCE_DIR}/incremental_build ${config})
|
||||
|
||||
uic_build_test(multi_ui_files_touch_cpp ${RunCMake_BINARY_DIR}/multi_ui_files_touch_cpp${config_desc}-build
|
||||
${RunCMake_SOURCE_DIR}/multi_ui_files ${RunCMake_SOURCE_DIR}/multi_ui_files/src/widget1.cpp ${config})
|
||||
endforeach()
|
||||
endif()
|
||||
endif()
|
||||
|
@ -8,16 +8,10 @@ set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTOUIC ON)
|
||||
|
||||
add_executable(example
|
||||
src/mainwindow.ui
|
||||
src/widget1.ui
|
||||
src/widget2.ui
|
||||
src/mainwindow.h
|
||||
src/widget1.h
|
||||
src/widget2.h
|
||||
src/main.cpp
|
||||
src/mainwindow.cpp
|
||||
src/widget1.cpp
|
||||
src/widget2.cpp
|
||||
main.cpp
|
||||
ui/widget.cpp
|
||||
ui/widget.h
|
||||
ui/widget.ui
|
||||
)
|
||||
|
||||
target_link_libraries(example PRIVATE Qt${with_qt_version}::Widgets
|
@ -1,11 +1,11 @@
|
||||
#include <QApplication>
|
||||
|
||||
#include "mainwindow.h"
|
||||
#include "ui/widget.h"
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
QApplication a(argc, argv);
|
||||
MainWindow w;
|
||||
Widget w;
|
||||
w.show();
|
||||
return a.exec();
|
||||
}
|
15
Tests/RunCMake/Autogen_6/incremental_build/ui/widget.cpp
Normal file
15
Tests/RunCMake/Autogen_6/incremental_build/ui/widget.cpp
Normal file
@ -0,0 +1,15 @@
|
||||
#include "widget.h"
|
||||
|
||||
#include "./ui_widget.h"
|
||||
|
||||
Widget::Widget(QWidget* parent)
|
||||
: QWidget(parent)
|
||||
, ui(new Ui::Widget)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
}
|
||||
|
||||
Widget::~Widget()
|
||||
{
|
||||
delete ui;
|
||||
}
|
23
Tests/RunCMake/Autogen_6/incremental_build/ui/widget.h
Normal file
23
Tests/RunCMake/Autogen_6/incremental_build/ui/widget.h
Normal file
@ -0,0 +1,23 @@
|
||||
#ifndef WIDGET_H
|
||||
#define WIDGET_H
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
namespace Ui {
|
||||
class Widget;
|
||||
}
|
||||
QT_END_NAMESPACE
|
||||
|
||||
class Widget : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
Widget(QWidget* parent = nullptr);
|
||||
~Widget();
|
||||
|
||||
private:
|
||||
Ui::Widget* ui;
|
||||
};
|
||||
#endif // WIDGET_H
|
19
Tests/RunCMake/Autogen_6/incremental_build/ui/widget.ui
Normal file
19
Tests/RunCMake/Autogen_6/incremental_build/ui/widget.ui
Normal file
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>Widget</class>
|
||||
<widget class="QWidget" name="Widget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>800</width>
|
||||
<height>600</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Widget</string>
|
||||
</property>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
@ -1,25 +0,0 @@
|
||||
#include "mainwindow.h"
|
||||
|
||||
#include <QVBoxLayout>
|
||||
|
||||
#include "src/ui_mainwindow.h"
|
||||
#include "widget1.h"
|
||||
|
||||
MainWindow::MainWindow(QWidget* parent)
|
||||
: QMainWindow(parent)
|
||||
, ui(new Ui::MainWindow)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
auto layout = new QVBoxLayout;
|
||||
layout->addWidget(new Widget1);
|
||||
|
||||
QWidget* w = new QWidget(this);
|
||||
w->setLayout(layout);
|
||||
|
||||
setCentralWidget(w);
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
{
|
||||
delete ui;
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
#ifndef MAINWINDOW_H
|
||||
#define MAINWINDOW_H
|
||||
|
||||
#include <QMainWindow>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
namespace Ui {
|
||||
class MainWindow;
|
||||
}
|
||||
QT_END_NAMESPACE
|
||||
|
||||
class MainWindow : public QMainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
MainWindow(QWidget* parent = nullptr);
|
||||
~MainWindow();
|
||||
|
||||
private:
|
||||
Ui::MainWindow* ui;
|
||||
};
|
||||
#endif // MAINWINDOW_H
|
@ -1,33 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>MainWindow</class>
|
||||
<widget class="QMainWindow" name="MainWindow">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>800</width>
|
||||
<height>600</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>MainWindow</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralwidget">
|
||||
<layout class="QGridLayout" name="gridLayout"/>
|
||||
</widget>
|
||||
<widget class="QMenuBar" name="menubar">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>800</width>
|
||||
<height>22</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QStatusBar" name="statusbar"/>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
@ -1,22 +0,0 @@
|
||||
#include "widget1.h"
|
||||
|
||||
#include "src/ui_widget1.h"
|
||||
|
||||
Widget1::Widget1(QWidget* parent)
|
||||
: QWidget(parent)
|
||||
, ui(new Ui::Widget1)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
connect(ui->lineEdit, SIGNAL(textChanged(const QString&)), this,
|
||||
SLOT(onTextChanged(const QString&)));
|
||||
}
|
||||
|
||||
Widget1::~Widget1()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void Widget1::onTextChanged(const QString& text)
|
||||
{
|
||||
ui->OnTextChanged->setText(text);
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
#ifndef WIDGET1_H
|
||||
#define WIDGET1_H
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
namespace Ui {
|
||||
class Widget1;
|
||||
}
|
||||
|
||||
class Widget1 : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit Widget1(QWidget* parent = nullptr);
|
||||
~Widget1();
|
||||
public slots:
|
||||
void onTextChanged(const QString& text);
|
||||
|
||||
private:
|
||||
Ui::Widget1* ui;
|
||||
};
|
||||
|
||||
#endif // WIDGET1_H
|
@ -1,52 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>Widget1</class>
|
||||
<widget class="QWidget" name="Widget1">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<height>300</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>Input:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="lineEdit"/>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>OnTextChanged:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLabel" name="OnTextChanged">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>TextLabel</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
@ -1,22 +0,0 @@
|
||||
#include "widget2.h"
|
||||
|
||||
#include "src/ui_widget2.h"
|
||||
|
||||
Widget2::Widget2(QWidget* parent)
|
||||
: QWidget(parent)
|
||||
, ui(new Ui::Widget2)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
connect(ui->lineEdit, SIGNAL(textChanged(const QString&)), this,
|
||||
SLOT(onTextChanged(const QString&)));
|
||||
}
|
||||
|
||||
Widget2::~Widget2()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void Widget2::onTextChanged(const QString& text)
|
||||
{
|
||||
ui->OnTextChanged->setText(text);
|
||||
}
|
@ -1,24 +0,0 @@
|
||||
#ifndef WIDGET2_H
|
||||
#define WIDGET2_H
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
namespace Ui {
|
||||
class Widget2;
|
||||
}
|
||||
|
||||
class Widget2 : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit Widget2(QWidget* parent = nullptr);
|
||||
~Widget2();
|
||||
public slots:
|
||||
void onTextChanged(const QString& text);
|
||||
|
||||
private:
|
||||
Ui::Widget2* ui;
|
||||
};
|
||||
|
||||
#endif // WIDGET2_H
|
@ -1,45 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>Widget2</class>
|
||||
<widget class="QWidget" name="Widget2">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<height>300</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>Input:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="lineEdit"/>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>OnTextChanged:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLabel" name="OnTextChanged">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
@ -19,6 +19,10 @@ run_cmake_with_options(TARGET_FILE_BASE_NAME -DCMAKE_BUILD_TYPE:STRING=Debug)
|
||||
run_cmake_with_options(TARGET_FILE_BASE_NAME-imported-target -DCMAKE_BUILD_TYPE:STRING=Debug)
|
||||
run_cmake(TARGET_FILE_BASE_NAME-non-valid-target)
|
||||
run_cmake(TARGET_LINKER_FILE_BASE_NAME-non-valid-target)
|
||||
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "AIX")
|
||||
run_cmake(TARGET_SONAME_FILE-AIX)
|
||||
run_cmake(TARGET_SONAME_IMPORT_FILE-AIX)
|
||||
endif()
|
||||
run_cmake(NonValidTarget-TARGET_BUNDLE_DIR)
|
||||
run_cmake(NonValidTarget-TARGET_BUNDLE_DIR_NAME)
|
||||
run_cmake(NonValidTarget-TARGET_BUNDLE_CONTENT_DIR)
|
||||
|
@ -0,0 +1 @@
|
||||
1
|
@ -0,0 +1,8 @@
|
||||
^CMake Error at TARGET_SONAME_FILE-AIX\.cmake:[0-9]+ \(add_custom_target\):
|
||||
Error evaluating generator expression:
|
||||
|
||||
\$<TARGET_SONAME_FILE:sla>
|
||||
|
||||
TARGET_SONAME_FILE is not allowed for AIX_SHARED_LIBRARY_ARCHIVE libraries\.
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists\.txt:[0-9]+ \(include\)
|
@ -0,0 +1,4 @@
|
||||
enable_language (C)
|
||||
set(CMAKE_AIX_SHARED_LIBRARY_ARCHIVE 1)
|
||||
add_library(sla SHARED empty.c)
|
||||
add_custom_target(custom COMMAND ${CMAKE_COMMAND} -E echo "$<TARGET_SONAME_FILE:sla>")
|
@ -0,0 +1 @@
|
||||
1
|
@ -0,0 +1,9 @@
|
||||
^CMake Error at TARGET_SONAME_IMPORT_FILE-AIX\.cmake:[0-9]+ \(add_custom_target\):
|
||||
Error evaluating generator expression:
|
||||
|
||||
\$<TARGET_SONAME_IMPORT_FILE:sla>
|
||||
|
||||
TARGET_SONAME_IMPORT_FILE is not allowed for AIX_SHARED_LIBRARY_ARCHIVE
|
||||
libraries\.
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists\.txt:[0-9]+ \(include\)
|
@ -0,0 +1,4 @@
|
||||
enable_language (C)
|
||||
set(CMAKE_AIX_SHARED_LIBRARY_ARCHIVE 1)
|
||||
add_library(sla SHARED empty.c)
|
||||
add_custom_target(custom COMMAND ${CMAKE_COMMAND} -E echo "$<TARGET_SONAME_IMPORT_FILE:sla>")
|
@ -1 +1 @@
|
||||
(error while loading shared libraries: libStub\.so\.1|Library not loaded: '?@rpath/libStub\.1\.dylib'?|(Cannot|Could not) load module libStub\.so|fatal: libStub\.so\.1: open failed|Shared object "libStub\.so\.1" not found)
|
||||
(error while loading shared libraries: libStub\.so\.1|Library not loaded: '?@rpath/libStub\.1\.dylib'?|(Cannot|Could not) load module libStub\.a\(libStub\.so\.1\)|fatal: libStub\.so\.1: open failed|Shared object "libStub\.so\.1" not found)
|
||||
|
@ -1,5 +1,15 @@
|
||||
enable_language(C)
|
||||
|
||||
set(CMAKE_AIX_SHARED_LIBRARY_ARCHIVE 1)
|
||||
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "AIX")
|
||||
set(suffix "${CMAKE_SHARED_LIBRARY_ARCHIVE_SUFFIX}")
|
||||
set(genex "TARGET_LINKER_FILE")
|
||||
else()
|
||||
set(suffix "${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
||||
set(genex "TARGET_SONAME_FILE")
|
||||
endif()
|
||||
|
||||
add_library(Stub SHARED Stub.c)
|
||||
set_target_properties(Stub PROPERTIES
|
||||
SOVERSION 1
|
||||
@ -7,10 +17,10 @@ set_target_properties(Stub PROPERTIES
|
||||
)
|
||||
|
||||
set(StubDir ${CMAKE_CURRENT_BINARY_DIR}/lib/stubs)
|
||||
set(Stub "${StubDir}/${CMAKE_SHARED_LIBRARY_PREFIX}Stub${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
||||
set(Stub "${StubDir}/${CMAKE_SHARED_LIBRARY_PREFIX}Stub${suffix}")
|
||||
add_custom_target(StubCopy
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory "${StubDir}"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "$<TARGET_SONAME_FILE:Stub>" "${Stub}"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "$<${genex}:Stub>" "${Stub}"
|
||||
BYPRODUCTS ${Stub}
|
||||
)
|
||||
add_dependencies(StubCopy Stub)
|
||||
|
@ -26,6 +26,7 @@ endfunction()
|
||||
# Use LINKER alone
|
||||
add_test_library(linker)
|
||||
target_link_options(linker PRIVATE "LINKER:-foo,bar")
|
||||
target_link_options(linker PRIVATE "LINKER:") # empty
|
||||
|
||||
# Use LINKER with SHELL
|
||||
add_test_library(linker_shell)
|
||||
|
@ -36,3 +36,9 @@ if(aix_sla_versioned)
|
||||
message(FATAL_ERROR "AIX_SHARED_LIBRARY_ARCHIVE initialized on EXECUTABLE")
|
||||
endif()
|
||||
target_link_libraries(UseSLA_versioned PRIVATE sla_versioned)
|
||||
|
||||
add_library(imported SHARED IMPORTED)
|
||||
get_property(aix_sla TARGET imported PROPERTY AIX_SHARED_LIBRARY_ARCHIVE)
|
||||
if(aix_sla)
|
||||
message(FATAL_ERROR "AIX_SHARED_LIBRARY_ARCHIVE initialized on imported target")
|
||||
endif()
|
||||
|
Loading…
x
Reference in New Issue
Block a user