Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
CMake
CMake
Commits
522bdac1
Commit
522bdac1
authored
Jan 12, 2013
by
Stephen Kelly
Committed by
Brad King
Jan 15, 2013
Browse files
Export the INTERFACE_PIC property.
parent
4ee872cb
Changes
7
Hide whitespace changes
Inline
Side-by-side
Source/cmExportBuildFileGenerator.cxx
View file @
522bdac1
...
...
@@ -72,6 +72,8 @@ bool cmExportBuildFileGenerator::GenerateMainFile(std::ostream& os)
this
->
PopulateInterfaceProperty
(
"INTERFACE_COMPILE_DEFINITIONS"
,
te
,
cmGeneratorExpression
::
BuildInterface
,
properties
,
missingTargets
);
this
->
PopulateInterfaceProperty
(
"INTERFACE_POSITION_INDEPENDENT_CODE"
,
te
,
properties
);
this
->
GenerateInterfaceProperties
(
te
,
os
,
properties
);
}
...
...
Source/cmExportFileGenerator.cxx
View file @
522bdac1
...
...
@@ -125,6 +125,18 @@ void cmExportFileGenerator::GenerateImportConfig(std::ostream& os,
this
->
GenerateImportTargetsConfig
(
os
,
config
,
suffix
,
missingTargets
);
}
//----------------------------------------------------------------------------
void
cmExportFileGenerator
::
PopulateInterfaceProperty
(
const
char
*
propName
,
cmTarget
*
target
,
ImportPropertyMap
&
properties
)
{
const
char
*
input
=
target
->
GetProperty
(
propName
);
if
(
input
)
{
properties
[
propName
]
=
input
;
}
}
//----------------------------------------------------------------------------
void
cmExportFileGenerator
::
PopulateInterfaceProperty
(
const
char
*
propName
,
const
char
*
outputName
,
...
...
Source/cmExportFileGenerator.h
View file @
522bdac1
...
...
@@ -101,6 +101,8 @@ protected:
cmGeneratorExpression
::
PreprocessContext
,
ImportPropertyMap
&
properties
,
std
::
vector
<
std
::
string
>
&
missingTargets
);
void
PopulateInterfaceProperty
(
const
char
*
propName
,
cmTarget
*
target
,
ImportPropertyMap
&
properties
);
void
GenerateInterfaceProperties
(
cmTarget
*
target
,
std
::
ostream
&
os
,
const
ImportPropertyMap
&
properties
);
...
...
Source/cmExportInstallFileGenerator.cxx
View file @
522bdac1
...
...
@@ -89,6 +89,8 @@ bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os)
te
,
cmGeneratorExpression
::
InstallInterface
,
properties
,
missingTargets
);
this
->
PopulateInterfaceProperty
(
"INTERFACE_POSITION_INDEPENDENT_CODE"
,
te
,
properties
);
this
->
GenerateInterfaceProperties
(
te
,
os
,
properties
);
}
...
...
Tests/ExportImport/Export/CMakeLists.txt
View file @
522bdac1
...
...
@@ -162,6 +162,10 @@ include(GenerateExportHeader)
add_library
(
testSharedLibRequired SHARED testSharedLibRequired.cpp
)
generate_export_header
(
testSharedLibRequired
)
set_property
(
TARGET testSharedLibRequired
PROPERTY
INTERFACE_POSITION_INDEPENDENT_CODE ON
)
set_property
(
TARGET testSharedLibRequired APPEND PROPERTY
INCLUDE_DIRECTORIES
"
${
CMAKE_CURRENT_BINARY_DIR
}
"
)
...
...
Tests/ExportImport/Import/A/CMakeLists.txt
View file @
522bdac1
...
...
@@ -167,6 +167,24 @@ target_link_libraries(deps_shared_iface testSharedLibDepends)
target_include_directories
(
deps_shared_iface PRIVATE testSharedLibDepends
)
target_compile_definitions
(
deps_shared_iface PRIVATE testSharedLibDepends
)
if
(
APPLE OR CMAKE_CXX_COMPILER_ID MATCHES
"GNU"
)
include
(
CheckCXXCompilerFlag
)
check_cxx_compiler_flag
(
-fPIE run_pic_test
)
else
()
if
(
CMAKE_CXX_COMPILER_ID MATCHES
"PGI"
OR CMAKE_CXX_COMPILER_ID MATCHES
"PathScale"
OR CMAKE_SYSTEM_NAME MATCHES
"IRIX64"
OR CMAKE_CXX_COMPILER_ID MATCHES
"Intel"
)
set
(
run_pic_test 0
)
else
()
set
(
run_pic_test 1
)
endif
()
endif
()
if
(
run_pic_test
)
target_compile_definitions
(
deps_shared_iface PRIVATE CHECK_PIC_WORKS
)
endif
()
#-----------------------------------------------------------------------------
# Test that targets imported from the build tree have their dependencies
# evaluated correctly. The above already tests the same for the install tree.
...
...
Tests/ExportImport/Import/A/deps_shared_iface.cpp
View file @
522bdac1
...
...
@@ -2,6 +2,12 @@
#include
"testSharedLibDepends.h"
#ifdef CHECK_PIC_WORKS
#if defined(__ELF__) && !defined(__PIC__) && !defined(__PIE__)
#error Expected by INTERFACE_POSITION_INDEPENDENT_CODE property of dependency
#endif
#endif
#ifdef TEST_SUBDIR_LIB
#include
"subdir.h"
#endif
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment