This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, master has been updated
       via  52fa25e28f66f043cc7c30717d9298b9a6b8cfa3 (commit)
       via  3fb3157dae5427b6c86949ec1603986c57602658 (commit)
      from  94b883d9d32cd42c70fa24a90c05116bfc814645 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=52fa25e28f66f043cc7c30717d9298b9a6b8cfa3
commit 52fa25e28f66f043cc7c30717d9298b9a6b8cfa3
Merge: 94b883d 3fb3157
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Thu Jul 18 11:07:59 2019 +0000
Commit:     Kitware Robot <kwro...@kitware.com>
CommitDate: Thu Jul 18 07:08:08 2019 -0400

    Merge topic 'aix-no-rtl'
    
    3fb3157dae AIX: Do not enable runtime linking by default anymore
    
    Acked-by: Kitware Robot <kwro...@kitware.com>
    Merge-request: !3566


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3fb3157dae5427b6c86949ec1603986c57602658
commit 3fb3157dae5427b6c86949ec1603986c57602658
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Wed Jul 17 09:20:31 2019 -0400
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Wed Jul 17 14:21:37 2019 -0400

    AIX: Do not enable runtime linking by default anymore
    
    We've long created shared objects on AIX using the linker's `-G` option
    (also offered by the XL front-end).  The `-G` option implies `-brtl` and
    enables runtime linking.  This has been largely unnecessary because we
    provide all dependencies on the link line and both XL and GNU compilers
    offer builtin behavior to export symbols.  Since commit 0f150b69d3 (AIX:
    Explicitly compute shared object exports for both XL and GNU,
    2019-07-11) we compute exports explicitly and consistently.
    Therefore runtime linking is no longer necessary for shared objects.
    
    We've also long created executables on AIX using the linker's `-brtl`
    option to enable runtime linking in case they load plugins at runtime.
    Since commit 9f5c2040bf (AIX: Explicitly compute executable exports for
    both XL and GNU, 2019-07-12) and commit 2fa920c0cd (AIX: Create import
    library for executables with exports, 2019-07-16) we now provide the
    linker enough information to fully resolve symbols in plugins up front.
    Therefore runtime linking is no longer necessary for executables.
    
    Drop use of `-G` for creating shared objects and use the XL `-qmkshrobj`
    and GCC `-shared` options instead.  Both invoke the linker with the
    `-bM:SRE -bnoentry` options to create a shared object without runtime
    linking enabled.  Also drop use of `-brtl` for creating executables.
    
    Issue: #19163

diff --git a/Help/release/dev/aix.rst b/Help/release/dev/aix.rst
index c24872e..6919358 100644
--- a/Help/release/dev/aix.rst
+++ b/Help/release/dev/aix.rst
@@ -8,3 +8,13 @@ aix
   to the executable for its symbols are now linked using the import file.
   The :command:`install(TARGETS)` command now installs the import file as
   an ``ARCHIVE`` artifact.
+
+* On AIX, runtime linking is no longer enabled by default.  CMake provides
+  the linker enough information to resolve all symbols up front.
+  One may manually enable runtime linking for shared libraries and/or
+  loadable modules by adding ``-Wl,-G`` to their link flags
+  (e.g. in the :variable:`CMAKE_SHARED_LINKER_FLAGS` or
+  :variable:`CMAKE_MODULE_LINKER_FLAGS` variable).
+  One may manually enable runtime linking for executables by adding
+  ``-Wl,-brtl`` to their link flags (e.g. in the
+  :variable:`CMAKE_EXE_LINKER_FLAGS` variable).
diff --git a/Modules/Platform/AIX-GNU.cmake b/Modules/Platform/AIX-GNU.cmake
index 9e981c6..61d213a 100644
--- a/Modules/Platform/AIX-GNU.cmake
+++ b/Modules/Platform/AIX-GNU.cmake
@@ -8,16 +8,10 @@ if(__AIX_COMPILER_GNU)
 endif()
 set(__AIX_COMPILER_GNU 1)
 
-#
-# By default, runtime linking is enabled. All shared objects specified on the 
command line
-# will be listed, even if there are no symbols referenced, in the output file.
-string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " -Wl,-brtl")
-
-
 macro(__aix_compiler_gnu lang)
   set(CMAKE_SHARED_LIBRARY_RUNTIME_${lang}_FLAG "-Wl,-blibpath:")
   set(CMAKE_SHARED_LIBRARY_RUNTIME_${lang}_FLAG_SEP ":")
-  string(APPEND CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS " -Wl,-G,-bnoipath")
+  string(APPEND CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS " -Wl,-bnoipath")
   set(CMAKE_SHARED_LIBRARY_LINK_${lang}_FLAGS "-Wl,-bexpall") # CMP0065 old 
behavior
   set(CMAKE_${lang}_USE_IMPLICIT_LINK_DIRECTORIES_IN_RUNTIME_PATH 1)
 
diff --git a/Modules/Platform/AIX-XL.cmake b/Modules/Platform/AIX-XL.cmake
index 3424e2c..64b0bc1 100644
--- a/Modules/Platform/AIX-XL.cmake
+++ b/Modules/Platform/AIX-XL.cmake
@@ -8,16 +8,10 @@ if(__AIX_COMPILER_XL)
 endif()
 set(__AIX_COMPILER_XL 1)
 
-#
-# By default, runtime linking is enabled. All shared objects specified on the 
command line
-# will be listed, even if there are no symbols referenced, in the output file.
-string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " -Wl,-brtl")
-
-
 macro(__aix_compiler_xl lang)
   set(CMAKE_SHARED_LIBRARY_RUNTIME_${lang}_FLAG "-Wl,-blibpath:")
   set(CMAKE_SHARED_LIBRARY_RUNTIME_${lang}_FLAG_SEP ":")
-  set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-G -Wl,-bnoipath")  # -shared
+  string(APPEND CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS " -Wl,-bnoipath")
   set(CMAKE_SHARED_LIBRARY_LINK_${lang}_FLAGS "-Wl,-bexpall") # CMP0065 old 
behavior
   set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS " ")
   set(CMAKE_SHARED_MODULE_${lang}_FLAGS  " ")

-----------------------------------------------------------------------

Summary of changes:
 Help/release/dev/aix.rst       | 10 ++++++++++
 Modules/Platform/AIX-GNU.cmake |  8 +-------
 Modules/Platform/AIX-XL.cmake  |  8 +-------
 3 files changed, 12 insertions(+), 14 deletions(-)


hooks/post-receive
-- 
CMake
_______________________________________________
Cmake-commits mailing list
Cmake-commits@cmake.org
https://cmake.org/mailman/listinfo/cmake-commits

Reply via email to