# SPDX-License-Identifier: BSD-3-Clause # mrv2 # Copyright Contributors to the mrv2 Project. All rights reserved. set(HEADERS mrvContextObject.h mrvEnv.h mrvFile.h mrvHDRApp.h mrvHome.h mrvI8N.h mrvLanguages.h mrvOS.h mrvRoot.h mrvString.h ) set(SOURCES mrvContextObject.cpp mrvEnv.cpp mrvFile.cpp mrvHDRApp.cpp mrvHome.cpp mrvLanguages.cpp mrvOS.cpp mrvRoot.cpp mrvString.cpp main.cpp) hdr_files_to_absolute_paths() if (WIN32) enable_language("RC") set(APP_ICON_RESOURCE_WINDOWS "${CMAKE_CURRENT_SOURCE_DIR}/app.rc") list(APPEND SOURCES ${APP_ICON_RESOURCE_WINDOWS} ) endif() set(LIBRARIES mrvBaseApp mrvHDR ${Intl_LIBRARIES}) find_package(Vulkan OPTIONAL_COMPONENTS glslang shaderc_combined SPIRV-Tools) list(APPEND LIBRARIES ${FLTK_LIBRARIES}) list(APPEND LIBRARIES_PRIVATE Vulkan::Vulkan) if(WIN32) list(APPEND LIBRARIES dxgi) elseif(APPLE) set(OSX_FRAMEWORKS "-framework IOKit") list(APPEND LIBRARIES ${OSX_FRAMEWORKS}) endif() add_executable(hdr WIN32 ${SOURCES} ${HEADERS}) target_include_directories(hdr BEFORE PRIVATE . ) target_link_libraries(hdr PUBLIC ${LIBRARIES} PRIVATE ${LIBRARIES_PRIVATE}) if(APPLE) if(CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64") set(HOMEBREW_PREFIX "/opt/homebrew") elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") set(HOMEBREW_PREFIX "/usr/local") endif() endif() target_link_directories(hdr BEFORE PUBLIC ${CMAKE_INSTALL_PREFIX}/lib ${HOMEBREW_PREFIX}/lib) install(TARGETS hdr RUNTIME DESTINATION bin COMPONENT applications LIBRARY DESTINATION lib COMPONENT libraries ARCHIVE DESTINATION lib COMPONENT libraries ) if(TLRENDER_NDI) # NDI libraries have two names: Advanced and normal. # We use a glob to simplify and also for potential future development # of NDI's SDK. if (WIN32) if (TLRENDER_NDI_SDK MATCHES ".*Advanced.*") # Advanced lib is ${TLRENDER_NDI_SDK}/bin/x64/Processing.NDI.Lib.Advanced.x64.dll file( GLOB HDR_LIB_DYLIBS ${TLRENDER_NDI_SDK}/bin/x64/Processing.NDI.Lib.Advanced.x64.dll ) else() # Normal lib is ${TLRENDER_NDI_SDK}/bin/x64/Processing.NDI.Lib.x64.dll file( GLOB HDR_LIB_DYLIBS ${TLRENDER_NDI_SDK}/bin/x64/Processing.NDI.Lib.x64.dll ) endif() install( FILES ${HDR_LIB_DYLIBS} DESTINATION bin COMPONENT applications ) elseif (APPLE) file( GLOB HDR_LIB_DYLIBS ${TLRENDER_NDI_SDK}/lib/macOS/*.dylib* ) install( FILES ${HDR_LIB_DYLIBS} DESTINATION lib COMPONENT applications ) elseif(UNIX) file( GLOB HDR_LIB_DSOS ${TLRENDER_NDI_SDK}/lib/x86_64-linux-gnu/*.so* ) install( FILES ${HDR_LIB_DSOS} DESTINATION lib COMPONENT applications ) endif() endif() if ( APPLE ) # Install all .dylibs in CMAKE_INSTALL_PREFIX / lib file( GLOB HDR_DYLIBS ${CMAKE_INSTALL_PREFIX}/lib/*.dylib* ) install( FILES ${HDR_DYLIBS} DESTINATION lib COMPONENT applications ) # Install all .frameworks in CMAKE_INSTALL_PREFIX / lib file( GLOB HDR_FRAMEWORKS ${CMAKE_INSTALL_PREFIX}/lib/*.framework* ) foreach( framework ${HDR_FRAMEWORKS} ) install( DIRECTORY ${framework} DESTINATION lib COMPONENT applications ) endforeach() elseif ( UNIX ) # Install all .so in CMAKE_INSTALL_PREFIX/lib file( GLOB HDR_LIB_DSOS "${CMAKE_INSTALL_PREFIX}/lib/*.so*" ) install( FILES ${HDR_LIB_DSOS} DESTINATION lib COMPONENT applications ) # For RedHat and Rocky Linux, we must install also lib64 file( GLOB HDR_LIB64_DSOS "${CMAKE_INSTALL_PREFIX}/lib64/*.so*" ) install( FILES ${HDR_LIB64_DSOS} DESTINATION lib64 COMPONENT applications ) elseif(WIN32) # If we installed vulkan-1.dll, don't distribute it. message( STATUS "Removing ${CMAKE_INSTALL_PREFIX}/bin/vulkan-1.dll") file(GLOB VULKAN_DLLS "${CPACK_INSTALL_PREFIX}/bin/vulkan-.*\\.dll") foreach (_vulkan_dll ${VULKAN_DLLS}) message(STATUS "hdr: Removing ${_vulkan_dll}") file(REMOVE ${_vulkan_dll}) endforeach() # For Python, Poco, USD, FLTK, NDI, MSVC runtimes and FFmpeg file(GLOB HDR_DLLS "${CMAKE_INSTALL_PREFIX}/bin/*.dll" ) install(FILES ${HDR_DLLS} DESTINATION bin/ COMPONENT applications ) endif() if ( NOT WIN32 ) install( FILES ${CMAKE_SOURCE_DIR}/bin/hdr.sh DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT applications ) endif() if (APPLE) # Define variables for bundle directories in the build dir set(HDR_BUNDLE_DIR ${CMAKE_BINARY_DIR}/hdr.app) # Create the mrv2.app bundle structure file(MAKE_DIRECTORY ${HDR_BUNDLE_DIR}/Contents/MacOS) file(MAKE_DIRECTORY ${HDR_BUNDLE_DIR}/Contents/Resources) endif()