Commit Graph

28 Commits

Author SHA1 Message Date
Modestas Vainius e1409ac59b Support building shared libraries or modules without soname (#13155)
Add a boolean target property NO_SONAME which may be used to disable
soname for the specified shared library or module even if the platform
supports it.  This property should be useful for private shared
libraries or various plugins which live in private directories and have
not been designed to be found or loaded globally.

Replace references to <CMAKE_SHARED_LIBRARY_SONAME_${LANG}_FLAG> and
hard-coded -install_name flags with a conditional <SONAME_FLAG> which is
expanded to the value of the CMAKE_SHARED_LIBRARY_SONAME_${LANG}_FLAG
definition as long as soname supports is enabled for the target in
question.  Keep expanding CMAKE_SHARED_LIBRARY_SONAME_${LANG}_FLAG in
rules in case third party projects still use it.  Such projects would
not yet use NO_SONAME so the adjacent <TARGET_SONAME> will always be
expanded.  Make <TARGET_INSTALLNAME_DIR> NO_SONAME aware as well.  Since
-install_name is soname on OS X, this should not be a problem if this
variable is expanded only if soname is enabled.

The Ninja generator performs rule variable substitution only once
globally per rule to put its own placeholders.  Final substitution is
performed by ninja at build time.  Therefore we cannot conditionally
replace the soname placeholders on a per-target basis.  Rather than
omitting $SONAME from rules.ninja, simply do not write its contents for
targets which have NO_SONAME.  Since 3 variables are affected by
NO_SONAME ($SONAME, $SONAME_FLAG, $INSTALLNAME_DIR), set them only if
soname is enabled.
2012-04-30 11:50:27 -04:00
Brad King 3e37ca8ecc Move GNU flags from SunOS.cmake to SunOS-GNU.cmake
The GNU-specific link-type flags do not belong in the platform-wide
file.
2009-12-02 16:58:52 -05:00
Brad King e28c16b482 Split GNU compiler information files
This moves GNU compiler flags into new-style modules

  Compiler/GNU-<lang>.cmake
  Platform/<os>-GNU-<lang>.cmake

We use language-independent helper modules

  Compiler/GNU.cmake
  Platform/<os>-GNU.cmake

to define macros consolidating the information.
2009-12-02 09:52:00 -05:00
Brad King 9ee0f9801a Split SunPro compiler information files
This moves platform-independent SunPro compiler flags into separate
"Compiler/SunPro-<lang>.cmake" modules.  Platform-specific flags are
left untouched.
2009-08-21 10:32:26 -04:00
Brad King a56e04593a ENH: Make /opt/SUNWspro/lib, /opt/SUNWspro/prod/lib, and /usr/ccs/lib implicit link directories on the Sun when using the SunPro compiler. 2008-04-30 14:13:11 -04:00
Brad King e840a9dff3 BUG: Apply patch from bug#6445. Add preprocessor definitions to assembly and preprocessing build rules. 2008-02-27 14:31:09 -05:00
Brad King fd37a6ec3d ENH: Better linker search path computation.
- Use linker search path -L.. -lfoo for lib w/out soname
    when platform sets CMAKE_PLATFORM_USES_PATH_WHEN_NO_SONAME
  - Rename cmOrderRuntimeDirectories to cmOrderDirectories
    and generalize it for both soname constraints and link
    library constraints
  - Use cmOrderDirectories to order -L directories based
    on all needed constraints
  - Avoid processing implicit link directories
  - For CMAKE_OLD_LINK_PATHS add constraints from libs
    producing them to produce old ordering
2008-02-21 11:41:11 -05:00
Brad King f49ec94e9f ENH: Enable dependent library search paths on more platforms
- HP-UX needs dependent library paths as -L options.
  - IRIX needs dependent library paths as -L options.
  - Sun needs dependent library paths as -L options.
  - FreeBSD needs dependent library paths in -rpath-link option.
2008-02-01 09:57:41 -05:00
Bill Hoffman c598da4328 BUG: fix for bug 6231, bad regex for sunos, worked by chance, but better to have it right 2008-01-15 14:19:32 -05:00
Brad King 147b4ff102 BUG: Need -Wl, to pass linker flags when using gcc on Sun. 2006-09-16 11:47:21 -04:00
Brad King 5845843156 ENH: Enabling link type selection flags for this platform. See bug#1644 for details. 2006-09-15 15:05:03 -04:00
Brad King 00e0c5c8e6 ENH: Enabling preprocessed source and asembly source generation rules on Sun CC. 2006-08-09 11:48:36 -04:00
Bill Hoffman 0cfda4a7f0 ENH: use correct flags for optimization 2006-05-03 09:23:57 -04:00
Bill Hoffman a5825cd11a ENH: check in new find stuff 2006-03-02 13:30:22 -05:00
Bill Hoffman 066d5259c0 ENH: more compiler flags 2005-11-22 11:44:07 -05:00
Bill Hoffman 692ba48c4e ENH: major changes to support addition of languages from cmake modules directory. 2004-09-22 14:42:05 -04:00
Bill Hoffman c9eaf38653 hack to try and fix sun platform 2004-08-26 21:43:27 -04:00
Bill Hoffman 66a08c10e5 ENH: more uniform approach to enable language, one step closer to being able to enable a language without modifing cmake source code 2004-08-26 14:55:55 -04:00
Brad King c1add9106c ENH: Using separate CMAKE_SHARED_LIBRARY_SONAME flags for C and CXX. 2003-12-12 14:35:18 -05:00
Brad King 9a096e8488 ENH: Added CMAKE_SHARED_LIBRARY_SONAME_FLAG setting to enable shared library version support for SunOS. 2003-12-12 14:20:06 -05:00
Bill Hoffman c3530dd01f BUG: fix for bug 383 gcc flags are now always set if the compiler is gnu 2003-11-14 10:44:12 -05:00
Bill Hoffman f4ebc1f15f Fix gnu c and Sun CC mix 2003-03-27 13:03:30 -05:00
Brad King 284071e3fa BUG: Don't use -nostdlib option to link shared libraries. Just use gcc -shared, even for C++ libraries. 2003-03-13 15:46:19 -05:00
Bill Hoffman 39e43360ea BUG: bad rpath flag for suns 2003-01-03 08:12:58 -05:00
Bill Hoffman bdaf74b561 clean up some c/cxx issues 2003-01-02 08:52:39 -05:00
Bill Hoffman 7773f9ed22 clean up some c/cxx issues 2003-01-02 08:51:23 -05:00
Bill Hoffman c164ba1ba1 fix for sun 2002-11-15 16:00:22 -05:00
Bill Hoffman f5d95fb078 Complete rework of makefile generators expect trouble 2002-11-08 15:46:08 -05:00