summaryrefslogtreecommitdiff
path: root/indra/cmake/OpenJPEG.cmake
diff options
context:
space:
mode:
authorErik Kundiman <erik@megapahit.org>2024-08-14 20:59:49 +0800
committerErik Kundiman <erik@megapahit.org>2024-08-14 20:59:49 +0800
commit2d4b9cf9854fa8928f4dd16d7acc24f9aa4f70e9 (patch)
treeb28c89df68d2bbf1090e979b7a5c2a32b293bead /indra/cmake/OpenJPEG.cmake
parentce8cb73ac37ce59a76c3ebfa684e8f1c94e8fd13 (diff)
parentd831010b59d83fccc64d00c48d13447bfcbb7bcd (diff)
Merge branch 'main' into webrtc-voice
Diffstat (limited to 'indra/cmake/OpenJPEG.cmake')
-rw-r--r--indra/cmake/OpenJPEG.cmake41
1 files changed, 38 insertions, 3 deletions
diff --git a/indra/cmake/OpenJPEG.cmake b/indra/cmake/OpenJPEG.cmake
index 6de03113ed..d2c9d95c9b 100644
--- a/indra/cmake/OpenJPEG.cmake
+++ b/indra/cmake/OpenJPEG.cmake
@@ -6,15 +6,50 @@ add_library( ll::openjpeg INTERFACE IMPORTED )
if (NOT USESYSTEMLIBS)
use_system_binary(openjpeg)
-use_prebuilt_binary(openjpeg)
-elseif (NOT LINUX)
+elseif (${LINUX_DISTRO} MATCHES fedora OR DARWIN OR CMAKE_SYSTEM_NAME MATCHES FreeBSD)
include(FindPkgConfig)
pkg_check_modules(Openjpeg REQUIRED libopenjp2)
target_include_directories(ll::openjpeg SYSTEM INTERFACE ${Openjpeg_INCLUDE_DIRS})
target_link_directories(ll::openjpeg INTERFACE ${Openjpeg_LIBRARY_DIRS})
target_link_libraries(ll::openjpeg INTERFACE ${Openjpeg_LIBRARIES})
- return ()
endif (NOT USESYSTEMLIBS)
+if (USESYSTEMLIBS AND (${LINUX_DISTRO} MATCHES fedora OR DARWIN OR CMAKE_SYSTEM_NAME MATCHES FreeBSD))
+ if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/openjpeg_installed OR NOT ${openjpeg_installed} EQUAL 0)
+ if (NOT EXISTS ${CMAKE_BINARY_DIR}/openjpeg-2.5.2.tar.gz)
+ file(DOWNLOAD
+ https://github.com/uclouvain/openjpeg/archive/refs/tags/v2.5.2.tar.gz
+ ${CMAKE_BINARY_DIR}/openjpeg-2.5.2.tar.gz
+ )
+ endif (NOT EXISTS ${CMAKE_BINARY_DIR}/openjpeg-2.5.2.tar.gz)
+ file(ARCHIVE_EXTRACT
+ INPUT ${CMAKE_BINARY_DIR}/openjpeg-2.5.2.tar.gz
+ DESTINATION ${CMAKE_BINARY_DIR}
+ )
+ execute_process(
+ COMMAND cmake
+ -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
+ .
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/openjpeg-2.5.2
+ RESULT_VARIABLE openjpeg_installed
+ )
+ file(
+ COPY
+ ${CMAKE_BINARY_DIR}/openjpeg-2.5.2/src/lib/openjp2/cio.h
+ ${CMAKE_BINARY_DIR}/openjpeg-2.5.2/src/lib/openjp2/event.h
+ ${CMAKE_BINARY_DIR}/openjpeg-2.5.2/src/lib/openjp2/opj_config_private.h
+ DESTINATION ${LIBS_PREBUILT_DIR}/include/openjpeg-2.5
+ )
+ file(WRITE ${PREBUILD_TRACKING_DIR}/openjpeg_installed "${openjpeg_installed}")
+ endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/openjpeg_installed OR NOT ${openjpeg_installed} EQUAL 0)
+else (USESYSTEMLIBS AND (${LINUX_DISTRO} MATCHES fedora OR DARWIN OR CMAKE_SYSTEM_NAME MATCHES FreeBSD))
+use_prebuilt_binary(openjpeg)
+ if (EXISTS ${LIBS_PREBUILT_DIR}/include/openjpeg)
+ file(RENAME
+ ${LIBS_PREBUILT_DIR}/include/openjpeg
+ ${LIBS_PREBUILT_DIR}/include/openjpeg-2.5
+ )
+ endif (EXISTS ${LIBS_PREBUILT_DIR}/include/openjpeg)
target_link_libraries(ll::openjpeg INTERFACE openjp2 )
+endif (USESYSTEMLIBS AND (${LINUX_DISTRO} MATCHES fedora OR DARWIN OR CMAKE_SYSTEM_NAME MATCHES FreeBSD))
target_include_directories( ll::openjpeg SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include)