Fix MinGW stack flag syntax and Python binding crashes
- Detect linker type (lld-link vs ld) and use the appropriate stack flag: /STACK:16777216 for lld-link, --stack,16777216 for MinGW ld - Filter out stack-related flags from Python binding modules to prevent crashes when loading MuJoCo as a DLL in Python Fixes #3011
This commit is contained in:
@@ -23,16 +23,12 @@ function(get_mujoco_extra_link_options OUTPUT_VAR)
|
||||
set(EXTRA_LINK_OPTIONS)
|
||||
|
||||
if(WIN32)
|
||||
set(EXTRA_LINK_OPTIONS ${EXTRA_LINK_OPTIONS} -Wl,/STACK:16777216)
|
||||
set(CMAKE_REQUIRED_FLAGS "-fuse-ld=lld-link")
|
||||
check_c_source_compiles("int main() {}" SUPPORTS_LLD)
|
||||
if(SUPPORTS_LLD)
|
||||
set(EXTRA_LINK_OPTIONS
|
||||
${EXTRA_LINK_OPTIONS}
|
||||
-fuse-ld=lld-link
|
||||
-Wl,/OPT:REF
|
||||
-Wl,/OPT:ICF
|
||||
)
|
||||
check_c_source_compiles("int main() {}" SUPPORTS_LLD_LINK)
|
||||
if(SUPPORTS_LLD_LINK)
|
||||
set(EXTRA_LINK_OPTIONS ${EXTRA_LINK_OPTIONS} -fuse-ld=lld-link -Wl,/STACK:16777216 -Wl,/OPT:REF -Wl,/OPT:ICF)
|
||||
else()
|
||||
set(EXTRA_LINK_OPTIONS ${EXTRA_LINK_OPTIONS} -Wl,--stack,16777216)
|
||||
endif()
|
||||
else()
|
||||
set(CMAKE_REQUIRED_FLAGS "-fuse-ld=lld")
|
||||
|
||||
@@ -51,6 +51,8 @@ endif()
|
||||
|
||||
include(MujocoLinkOptions)
|
||||
get_mujoco_extra_link_options(EXTRA_LINK_OPTIONS)
|
||||
list(FILTER EXTRA_LINK_OPTIONS EXCLUDE REGEX "STACK")
|
||||
list(FILTER EXTRA_LINK_OPTIONS EXCLUDE REGEX "stack")
|
||||
add_link_options(${EXTRA_LINK_OPTIONS})
|
||||
|
||||
include(MujocoMacOS)
|
||||
|
||||
@@ -23,16 +23,12 @@ function(get_mujoco_extra_link_options OUTPUT_VAR)
|
||||
set(EXTRA_LINK_OPTIONS)
|
||||
|
||||
if(WIN32)
|
||||
set(EXTRA_LINK_OPTIONS ${EXTRA_LINK_OPTIONS} -Wl,/STACK:16777216)
|
||||
set(CMAKE_REQUIRED_FLAGS "-fuse-ld=lld-link")
|
||||
check_c_source_compiles("int main() {}" SUPPORTS_LLD)
|
||||
if(SUPPORTS_LLD)
|
||||
set(EXTRA_LINK_OPTIONS
|
||||
${EXTRA_LINK_OPTIONS}
|
||||
-fuse-ld=lld-link
|
||||
-Wl,/OPT:REF
|
||||
-Wl,/OPT:ICF
|
||||
)
|
||||
check_c_source_compiles("int main() {}" SUPPORTS_LLD_LINK)
|
||||
if(SUPPORTS_LLD_LINK)
|
||||
set(EXTRA_LINK_OPTIONS ${EXTRA_LINK_OPTIONS} -fuse-ld=lld-link -Wl,/STACK:16777216 -Wl,/OPT:REF -Wl,/OPT:ICF)
|
||||
else()
|
||||
set(EXTRA_LINK_OPTIONS ${EXTRA_LINK_OPTIONS} -Wl,--stack,16777216)
|
||||
endif()
|
||||
else()
|
||||
set(CMAKE_REQUIRED_FLAGS "-fuse-ld=lld")
|
||||
|
||||
@@ -23,16 +23,12 @@ function(get_mujoco_extra_link_options OUTPUT_VAR)
|
||||
set(EXTRA_LINK_OPTIONS)
|
||||
|
||||
if(WIN32)
|
||||
set(EXTRA_LINK_OPTIONS ${EXTRA_LINK_OPTIONS} -Wl,/STACK:16777216)
|
||||
set(CMAKE_REQUIRED_FLAGS "-fuse-ld=lld-link")
|
||||
check_c_source_compiles("int main() {}" SUPPORTS_LLD)
|
||||
if(SUPPORTS_LLD)
|
||||
set(EXTRA_LINK_OPTIONS
|
||||
${EXTRA_LINK_OPTIONS}
|
||||
-fuse-ld=lld-link
|
||||
-Wl,/OPT:REF
|
||||
-Wl,/OPT:ICF
|
||||
)
|
||||
check_c_source_compiles("int main() {}" SUPPORTS_LLD_LINK)
|
||||
if(SUPPORTS_LLD_LINK)
|
||||
set(EXTRA_LINK_OPTIONS ${EXTRA_LINK_OPTIONS} -fuse-ld=lld-link -Wl,/STACK:16777216 -Wl,/OPT:REF -Wl,/OPT:ICF)
|
||||
else()
|
||||
set(EXTRA_LINK_OPTIONS ${EXTRA_LINK_OPTIONS} -Wl,--stack,16777216)
|
||||
endif()
|
||||
else()
|
||||
set(CMAKE_REQUIRED_FLAGS "-fuse-ld=lld")
|
||||
|
||||
Reference in New Issue
Block a user