View Issue Details Jump to Notes ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0014968CMakeCMakepublic2014-06-11 12:082015-01-05 08:38
ReporterNico Schlömer 
Assigned To 
PrioritynormalSeveritymajorReproducibilityalways
StatusclosedResolutionwon't fix 
PlatformOSOS Version
Product Version 
Target VersionFixed in Version 
Summary0014968: -fPIC not properly forwarded through OBJECT libraries
DescriptionWhen compiling a project that includes an OBJECT library, e.g.,
```
project(mytest C)
add_library(test2 OBJECT test2.c)
add_library(test test.c $<TARGET_OBJECTS:test2>)
```
and if BUILD_SHARED_LIBS is set to ON, the compile switch `-fPIC` will be correctly added to the sources of `test`, but not to the sources of `test2`. The library fails to link.
Additional InformationThe attachment contains a minimal failing example.
TagsNo tags attached.
Attached Filesbz2 file icon 2014-06-11-fpic-object-lib.tar.bz2 [^] (593 bytes) 2014-06-11 12:08

 Relationships

  Notes
(0036159)
Brad King (manager)
2014-06-11 13:08

This is by design. The compilation of an OBJECT library is not influenced by its consumers. You can set the POSITION_INDEPENDENT_CODE target property on the OBJECT library.
(0036160)
Nico Schlömer (reporter)
2014-06-11 14:29

Hm, too bad. It's been quite comfortable not having to deal with specific flags needed for shared library objects.

Would you recommend to do
```
IF(BUILD_SHARED_LIBS)
  SET(CMAKE_POSITION_INDEPENDENT_CODE ON)
ENDIF()
```
or is there an even better way to handle things?
(0036161)
Brad King (manager)
2014-06-11 15:07

Re 0014968:0036160: That will work but it will also enable -fPIC on libraries that are explicitly marked STATIC. You could set it directly on the object library:

add_library(test2 OBJECT test2.c)
if(BUILD_SHARED_LIBS)
  # These objects will be consumed by a shared library.
  set_property(TARGET test2 PROPERTY POSITION_INDEPENDENT_CODE ON)
endif()
(0036162)
Nico Schlömer (reporter)
2014-06-11 15:17

Ideally I'd want CMake to add `-fPIC` whenever it is necessary, but I guess I live with setting PIC globally ON.

Feel free to close.
(0037564)
Robert Maynard (manager)
2015-01-05 08:38

Closing resolved issues that have not been updated in more than 4 months.

 Issue History
Date Modified Username Field Change
2014-06-11 12:08 Nico Schlömer New Issue
2014-06-11 12:08 Nico Schlömer File Added: 2014-06-11-fpic-object-lib.tar.bz2
2014-06-11 13:08 Brad King Note Added: 0036159
2014-06-11 14:29 Nico Schlömer Note Added: 0036160
2014-06-11 15:07 Brad King Note Added: 0036161
2014-06-11 15:17 Nico Schlömer Note Added: 0036162
2014-06-11 15:44 Brad King Status new => resolved
2014-06-11 15:44 Brad King Resolution open => won't fix
2015-01-05 08:38 Robert Maynard Note Added: 0037564
2015-01-05 08:38 Robert Maynard Status resolved => closed


Copyright © 2000 - 2018 MantisBT Team