mirror of
https://git.code.sf.net/p/libpng/code.git
synced 2025-07-10 18:04:09 +02:00
Fix a build regression on Solaris
Fix a regression introduced in commit aeb26da4cb64c0e75c8d.
On an Illumos test machine, running the GCC compiler and the Solaris
link editor, the CMake build failed with the following error:
ld: fatal: unrecognized option '--version-script=/.../libpng.vers'
The fix consists in avoiding the use of CMAKE_SHARED_LIBRARY_C_FLAGS
in version script checks on Solaris.
Also clean up the surrounding code, as follows:
* Rename CMAKE_REQUIRED_FLAGS_SAVE to _SAVED_CMAKE_REQUIRED_FLAGS.
(The name of an internal variable should not begin with "CMAKE_".)
* Reformat the version script to optimize the vertical space.
This commit is contained in:
parent
e6c5bf46c4
commit
afc6c595bf
@ -240,38 +240,36 @@ option(ld-version-script "Enable linker version script" ON)
|
||||
if(ld-version-script AND NOT ANDROID AND NOT APPLE)
|
||||
# Check if LD supports linker scripts.
|
||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/conftest.map" "
|
||||
VERS_1 {
|
||||
global: sym1;
|
||||
local: *;
|
||||
};
|
||||
|
||||
VERS_2 {
|
||||
global: sym2;
|
||||
main;
|
||||
} VERS_1;
|
||||
VERS_1 { global: sym1; local: *; };
|
||||
VERS_2 { global: sym2; main; } VERS_1;
|
||||
")
|
||||
set(CMAKE_REQUIRED_FLAGS_SAVE ${CMAKE_REQUIRED_FLAGS})
|
||||
set(CMAKE_REQUIRED_FLAGS
|
||||
${CMAKE_REQUIRED_FLAGS}
|
||||
${CMAKE_SHARED_LIBRARY_C_FLAGS}
|
||||
"-Wl,--version-script='${CMAKE_CURRENT_BINARY_DIR}/conftest.map'")
|
||||
set(_SAVED_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
|
||||
if(NOT CMAKE_HOST_SYSTEM_NAME MATCHES "^SunOS")
|
||||
# Avoid using CMAKE_SHARED_LIBRARY_C_FLAGS in version script checks on
|
||||
# Solaris, because of an incompatibility with the Solaris link editor.
|
||||
list(APPEND CMAKE_REQUIRED_FLAGS ${CMAKE_SHARED_LIBRARY_C_FLAGS})
|
||||
endif()
|
||||
list(APPEND CMAKE_REQUIRED_FLAGS "-Wl,--version-script='${CMAKE_CURRENT_BINARY_DIR}/conftest.map'")
|
||||
check_c_source_compiles("
|
||||
void sym1(void) {}
|
||||
void sym2(void) {}
|
||||
int main(void) {return 0;}
|
||||
int main(void) { return 0; }
|
||||
" HAVE_LD_VERSION_SCRIPT)
|
||||
if(NOT HAVE_LD_VERSION_SCRIPT)
|
||||
set(CMAKE_REQUIRED_FLAGS
|
||||
${CMAKE_REQUIRED_FLAGS_SAVE}
|
||||
${CMAKE_SHARED_LIBRARY_C_FLAGS}
|
||||
"-Wl,-M -Wl,${CMAKE_CURRENT_BINARY_DIR}/conftest.map")
|
||||
check_c_source_compiles("
|
||||
set(CMAKE_REQUIRED_FLAGS ${_SAVED_CMAKE_REQUIRED_FLAGS})
|
||||
if(NOT CMAKE_HOST_SYSTEM_NAME MATCHES "^SunOS")
|
||||
# Again, avoid using CMAKE_SHARED_LIBRARY_C_FLAGS in version script
|
||||
# checks on Solaris.
|
||||
list(APPEND CMAKE_REQUIRED_FLAGS ${CMAKE_SHARED_LIBRARY_C_FLAGS})
|
||||
endif()
|
||||
list(APPEND CMAKE_REQUIRED_FLAGS "-Wl,-M -Wl,${CMAKE_CURRENT_BINARY_DIR}/conftest.map")
|
||||
check_c_source_compiles("
|
||||
void sym1(void) {}
|
||||
void sym2(void) {}
|
||||
int main(void) {return 0;}
|
||||
int main(void) { return 0; }
|
||||
" HAVE_SOLARIS_LD_VERSION_SCRIPT)
|
||||
endif()
|
||||
set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_SAVE})
|
||||
set(CMAKE_REQUIRED_FLAGS ${_SAVED_CMAKE_REQUIRED_FLAGS})
|
||||
file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/conftest.map")
|
||||
endif()
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user