#
# Copyright 2016 Pixar
#
# Licensed under the terms set forth in the LICENSE.txt file available at
# https://openusd.org/license.
#
if(APPLE)
    set(OSX_ARCHITECTURES "x86_64" CACHE STRING "Build architectures for OSX")
    set(CMAKE_MACOSX_RPATH ON)
    set(CMAKE_SKIP_BUILD_RPATH FALSE)
    set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
    set(CMAKE_DYLIB_INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE STRING "install_name path for dylib.")
    list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir)

    # Workaround for code signing issues that show up as warnings at the end
    # of the build like:
    # 
    #   install_name_tool: warning: changes being made to the file will invalidate the code signature in: ...
    #
    # On Apple silicon this issue would prevent binaries from being used since
    # the OS requires them to have a valid signature. This option is available
    # on macOS 11+, which corresponds to kernel version 20+.
    #
    # See https://gitlab.kitware.com/cmake/cmake/-/issues/21854
    if (CMAKE_HOST_SYSTEM_VERSION VERSION_GREATER_EQUAL 20)
        set(CMAKE_XCODE_ATTRIBUTE_OTHER_CODE_SIGN_FLAGS "-o linker-signed")
    endif()
endif()

if(EMSCRIPTEN)
    set(EMSCRIPTEN_COMPILE_FLAGS "-fexceptions")
    add_compile_options("SHELL:${EMSCRIPTEN_COMPILE_FLAGS}")
    add_link_options("SHELL:${EMSCRIPTEN_COMPILE_FLAGS} -sALLOW_MEMORY_GROWTH=1")
endif()

# Allow local includes from source directory.
set(CMAKE_INCLUDE_CURRENT_DIR ON)

# Turn on folder usage
set_property(GLOBAL PROPERTY USE_FOLDERS ON)

# Generate compile_commands.json for use by developer tools.
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

# Default build type
if(NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE "Release")
endif()

if (PXR_BUILD_TESTS)
    # Enable CTest
    enable_testing()
endif()