12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- # Copyright 2021 DeepMind Technologies Limited
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # https://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- include(CheckCSourceCompiles)
- # Gets the appropriate linker options for building MuJoCo, based on features available on the
- # linker.
- function(get_mujoco_extra_link_options OUTPUT_VAR)
- if(MSVC)
- set(EXTRA_LINK_OPTIONS /OPT:REF /OPT:ICF=5)
- else()
- set(EXTRA_LINK_OPTIONS)
- if(WIN32)
- 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
- )
- endif()
- else()
- set(CMAKE_REQUIRED_FLAGS "-fuse-ld=lld")
- check_c_source_compiles("int main() {}" SUPPORTS_LLD)
- if(SUPPORTS_LLD)
- set(EXTRA_LINK_OPTIONS ${EXTRA_LINK_OPTIONS} -fuse-ld=lld)
- else()
- set(CMAKE_REQUIRED_FLAGS "-fuse-ld=gold")
- check_c_source_compiles("int main() {}" SUPPORTS_GOLD)
- if(SUPPORTS_GOLD)
- set(EXTRA_LINK_OPTIONS ${EXTRA_LINK_OPTIONS} -fuse-ld=gold)
- endif()
- endif()
- set(CMAKE_REQUIRED_FLAGS ${EXTRA_LINK_OPTIONS} "-Wl,--gc-sections")
- check_c_source_compiles("int main() {}" SUPPORTS_GC_SECTIONS)
- if(SUPPORTS_GC_SECTIONS)
- set(EXTRA_LINK_OPTIONS ${EXTRA_LINK_OPTIONS} -Wl,--gc-sections)
- else()
- set(CMAKE_REQUIRED_FLAGS ${EXTRA_LINK_OPTIONS} "-Wl,-dead_strip")
- check_c_source_compiles("int main() {}" SUPPORTS_DEAD_STRIP)
- if(SUPPORTS_DEAD_STRIP)
- set(EXTRA_LINK_OPTIONS ${EXTRA_LINK_OPTIONS} -Wl,-dead_strip)
- endif()
- endif()
- endif()
- endif()
- set("${OUTPUT_VAR}"
- ${EXTRA_LINK_OPTIONS}
- PARENT_SCOPE
- )
- endfunction()
|