1
0
mirror of https://github.com/opencv/opencv.git synced 2026-07-29 23:33:05 +04:00

Merge pull request #28902 from Kumataro:fix28901

js: fix Emscripten version detection and macro usage
This commit is contained in:
Alexander Smorkalov
2026-04-29 09:25:43 +03:00
committed by GitHub
2 changed files with 16 additions and 6 deletions
@@ -20,6 +20,16 @@
#include <emscripten/version.h>
#endif
// Emscripten v5.0.1
// Emscripten has changed its version macros from lowercase (EMSCRIPTEN_major) to uppercase (EMSCRIPTEN_MAJOR) and deprecated the old ones.
//
// See https://github.com/opencv/opencv/issues/28901
#if !defined(__EMSCRIPTEN_MAJOR__) && defined(__EMSCRIPTEN_major__)
# define __EMSCRIPTEN_MAJOR__ __EMSCRIPTEN_major__
# define __EMSCRIPTEN_MINOR__ __EMSCRIPTEN_minor__
# define __EMSCRIPTEN_TINY__ __EMSCRIPTEN_tiny__
#endif
#define CV_SIMD128 1
#define CV_SIMD128_64F 0 // Now all implementation of f64 use fallback, so disable it.
#define CV_SIMD128_FP16 0
@@ -31,7 +41,7 @@ namespace cv
CV_CPU_OPTIMIZATION_HAL_NAMESPACE_BEGIN
#if (__EMSCRIPTEN_major__ * 1000000 + __EMSCRIPTEN_minor__ * 1000 + __EMSCRIPTEN_tiny__) < (1038046)
#if (__EMSCRIPTEN_MAJOR__ * 1000000 + __EMSCRIPTEN_MINOR__ * 1000 + __EMSCRIPTEN_TINY__) < (1038046)
// handle renames: https://github.com/emscripten-core/emscripten/pull/9440 (https://github.com/emscripten-core/emscripten/commit/755d5b46cb84d0aa120c10981b11d05646c29673)
#define wasm_i32x4_trunc_saturate_f32x4 wasm_trunc_saturate_i32x4_f32x4
#define wasm_u32x4_trunc_saturate_f32x4 wasm_trunc_saturate_u32x4_f32x4
@@ -1271,7 +1281,7 @@ OPENCV_HAL_IMPL_WASM_BIN_FUNC(v_uint8x16, v_sub_wrap, wasm_i8x16_sub)
OPENCV_HAL_IMPL_WASM_BIN_FUNC(v_int8x16, v_sub_wrap, wasm_i8x16_sub)
OPENCV_HAL_IMPL_WASM_BIN_FUNC(v_uint16x8, v_sub_wrap, wasm_i16x8_sub)
OPENCV_HAL_IMPL_WASM_BIN_FUNC(v_int16x8, v_sub_wrap, wasm_i16x8_sub)
#if (__EMSCRIPTEN_major__ * 1000000 + __EMSCRIPTEN_minor__ * 1000 + __EMSCRIPTEN_tiny__) >= (1039012)
#if (__EMSCRIPTEN_MAJOR__ * 1000000 + __EMSCRIPTEN_MINOR__ * 1000 + __EMSCRIPTEN_TINY__) >= (1039012)
// details: https://github.com/opencv/opencv/issues/18097 ( https://github.com/emscripten-core/emscripten/issues/12018 )
// 1.39.12: https://github.com/emscripten-core/emscripten/commit/cd801d0f110facfd694212a3c8b2ed2ffcd630e2
inline v_uint8x16 v_mul_wrap(const v_uint8x16& a, const v_uint8x16& b)
+4 -4
View File
@@ -45,17 +45,17 @@ set(EMSCRIPTEN_VERSION_PATH "${EMSCRIPTEN_INCLUDE_DIR}/emscripten/version.h")
if(NOT EXISTS "${EMSCRIPTEN_VERSION_PATH}")
message(STATUS "${EMSCRIPTEN_INCLUDE_DIR}/emscripten/version.h is missing")
else()
file(STRINGS "${EMSCRIPTEN_VERSION_PATH}" EMSCRIPTEN_VERSION_CONTENTS REGEX "^#define[ \t]+__EMSCRIPTEN_[a-z]+__[ \t][0-9]+")
file(STRINGS "${EMSCRIPTEN_VERSION_PATH}" EMSCRIPTEN_VERSION_CONTENTS REGEX "^#define[ \t]+__EMSCRIPTEN_[a-zA-Z]+__[ \t][0-9]+")
if(NOT EMSCRIPTEN_VERSION_CONTENTS)
message(STATUS "${EMSCRIPTEN_INCLUDE_DIR}/emscripten/version.h is exists, but is not readable")
else()
if(EMSCRIPTEN_VERSION_CONTENTS MATCHES "__EMSCRIPTEN_major__[ \t]+([0-9]+)")
if(EMSCRIPTEN_VERSION_CONTENTS MATCHES "__EMSCRIPTEN_[mM][aA][jJ][oO][rR]__[ \t]+([0-9]+)")
set(EMSCRIPTEN_VERSION_MAJOR "${CMAKE_MATCH_1}")
endif()
if(EMSCRIPTEN_VERSION_CONTENTS MATCHES "__EMSCRIPTEN_minor__[ \t]+([0-9]+)")
if(EMSCRIPTEN_VERSION_CONTENTS MATCHES "__EMSCRIPTEN_[mM][iI][nN][oO][rR]__[ \t]+([0-9]+)")
set(EMSCRIPTEN_VERSION_MINOR "${CMAKE_MATCH_1}")
endif()
if(EMSCRIPTEN_VERSION_CONTENTS MATCHES "__EMSCRIPTEN_tiny__[ \t]+([0-9]+)")
if(EMSCRIPTEN_VERSION_CONTENTS MATCHES "__EMSCRIPTEN_[tT][iI][nN][yY]__[ \t]+([0-9]+)")
set(EMSCRIPTEN_VERSION_TINY "${CMAKE_MATCH_1}")
endif()