diff --git a/adapter-ohos.patch b/adapter-ohos.patch new file mode 100644 index 0000000000000000000000000000000000000000..6bdc1c0074ba4879c476ef4fc63e323bde07a846 --- /dev/null +++ b/adapter-ohos.patch @@ -0,0 +1,158 @@ +diff --git a/absl/base/internal/low_level_alloc.cc b/absl/base/internal/low_level_alloc.cc +index a563f7b..27b2321 100644 +--- a/absl/base/internal/low_level_alloc.cc ++++ b/absl/base/internal/low_level_alloc.cc +@@ -42,7 +42,7 @@ + #include + #endif + +-#ifdef __linux__ ++#if defined __linux__ && !defined(__OHOS__) + #include + #endif + +@@ -569,7 +569,7 @@ static void *DoAllocWithArena(size_t request, LowLevelAlloc::Arena *arena) { + ABSL_RAW_LOG(FATAL, "mmap error: %d", errno); + } + +-#ifdef __linux__ ++#if defined __linux__ && !defined(__OHOS__) + #if defined(PR_SET_VMA) && defined(PR_SET_VMA_ANON_NAME) + // Attempt to name the allocated address range in /proc/$PID/smaps on + // Linux. +diff --git a/absl/crc/internal/cpu_detect.cc b/absl/crc/internal/cpu_detect.cc +index c59f773..162ac9d 100644 +--- a/absl/crc/internal/cpu_detect.cc ++++ b/absl/crc/internal/cpu_detect.cc +@@ -20,7 +20,7 @@ + #include "absl/base/config.h" + #include "absl/types/optional.h" // IWYU pragma: keep + +-#if defined(__aarch64__) && defined(__linux__) ++#if defined(__aarch64__) && defined(__linux__) && !defined(__OHOS__) + #include + #include + #endif +@@ -230,7 +230,7 @@ CpuType GetCpuType() { + + bool SupportsArmCRC32PMULL() { return false; } + +-#elif defined(__aarch64__) && defined(__linux__) ++#elif defined(__aarch64__) && defined(__linux__) && !defined(__OHOS__) + + #ifndef HWCAP_CPUID + #define HWCAP_CPUID (1 << 11) +diff --git a/absl/debugging/failure_signal_handler.cc b/absl/debugging/failure_signal_handler.cc +index d31f5a1..df8eb08 100644 +--- a/absl/debugging/failure_signal_handler.cc ++++ b/absl/debugging/failure_signal_handler.cc +@@ -37,7 +37,7 @@ + #endif + #endif + +-#ifdef __linux__ ++#if defined __linux__ && !defined(__OHOS__) + #include + #endif + +@@ -195,7 +195,7 @@ static bool SetupAlternateStackOnce() { + ABSL_RAW_LOG(FATAL, "sigaltstack() failed with errno=%d", errno); + } + +-#ifdef __linux__ ++#if defined __linux__ && !defined(__OHOS__) + #if defined(PR_SET_VMA) && defined(PR_SET_VMA_ANON_NAME) + // Make a best-effort attempt to name the allocated region in + // /proc/$PID/smaps. +diff --git a/absl/debugging/internal/elf_mem_image.h b/absl/debugging/internal/elf_mem_image.h +index 1fac29c..60bceff 100644 +--- a/absl/debugging/internal/elf_mem_image.h ++++ b/absl/debugging/internal/elf_mem_image.h +@@ -35,7 +35,7 @@ + #if defined(__ELF__) && !defined(__OpenBSD__) && !defined(__QNX__) && \ + !defined(__native_client__) && !defined(__asmjs__) && \ + !defined(__wasm__) && !defined(__HAIKU__) && !defined(__sun)&& \ +- !defined(__VXWORKS__) && !defined(__hexagon__) && !defined(__XTENSA__) ++ !defined(__VXWORKS__) && !defined(__hexagon__) && !defined(__XTENSA__) && !defined(__OHOS__) + #define ABSL_HAVE_ELF_MEM_IMAGE 1 + #endif + +diff --git a/absl/debugging/internal/examine_stack.cc b/absl/debugging/internal/examine_stack.cc +index 3dd6ba1..7d5d9ca 100644 +--- a/absl/debugging/internal/examine_stack.cc ++++ b/absl/debugging/internal/examine_stack.cc +@@ -29,11 +29,15 @@ + #endif + #endif + ++#if !defined(__OHOS__) + #if defined(__linux__) || defined(__APPLE__) + #include + #endif ++#endif + ++#if !defined(__OHOS__) + #include ++#endif + #include + + #include "absl/base/attributes.h" +@@ -155,6 +159,7 @@ SymbolizeUrlEmitter GetDebugStackTraceHook() { return debug_stack_trace_hook; } + // unknown. vuc is a ucontext_t*. We use void* to avoid the use of + // ucontext_t on non-POSIX systems. + void* GetProgramCounter(void* const vuc) { ++#if !defined(__OHOS__) + #ifdef __linux__ + if (vuc != nullptr) { + ucontext_t* context = reinterpret_cast(vuc); +@@ -233,6 +238,7 @@ void* GetProgramCounter(void* const vuc) { + return reinterpret_cast(get_user_ctx_pc(ctx)); + #endif + static_cast(vuc); ++#endif + return nullptr; + } + +diff --git a/absl/debugging/internal/stacktrace_config.h b/absl/debugging/internal/stacktrace_config.h +index 88949fe..e982015 100644 +--- a/absl/debugging/internal/stacktrace_config.h ++++ b/absl/debugging/internal/stacktrace_config.h +@@ -26,6 +26,10 @@ + #if defined(ABSL_STACKTRACE_INL_HEADER) + #error ABSL_STACKTRACE_INL_HEADER cannot be directly set + ++#elif defined(__OHOS__) ++#define ABSL_STACKTRACE_INL_HEADER \ ++ "absl/debugging/internal/stacktrace_unimplemented-inl.inc" ++ + #elif defined(_WIN32) + #define ABSL_STACKTRACE_INL_HEADER \ + "absl/debugging/internal/stacktrace_win32-inl.inc" + +diff --git a/absl/base/config.h b/absl/base/config.h +index 0b24865..257b9bb 100644 +--- a/absl/base/config.h ++++ b/absl/base/config.h +@@ -862,7 +862,7 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' || + // available. + #ifdef ABSL_INTERNAL_HAS_CXA_DEMANGLE + #error ABSL_INTERNAL_HAS_CXA_DEMANGLE cannot be directly set +-#elif defined(OS_ANDROID) && (defined(__i386__) || defined(__x86_64__)) ++#elif defined(OS_ANDROID) && (defined(__i386__) || defined(__x86_64__)) || defined(__OHOS__) + #define ABSL_INTERNAL_HAS_CXA_DEMANGLE 0 + #elif defined(__GNUC__) + #define ABSL_INTERNAL_HAS_CXA_DEMANGLE 1 + +diff --git a/CMake/AbseilHelpers.cmake b/CMake/AbseilHelpers.cmake +index d8fb9fe..02688f2 100644 +--- a/CMake/AbseilHelpers.cmake ++++ b/CMake/AbseilHelpers.cmake +@@ -256,7 +256,7 @@ Cflags: -I\${includedir}${PC_CFLAGS}\n") + ) + + elseif(_build_type STREQUAL "static" OR _build_type STREQUAL "shared") +- add_library(${_NAME} "") ++ add_library(${_NAME} STATIC "") + target_sources(${_NAME} PRIVATE ${ABSL_CC_LIB_SRCS} ${ABSL_CC_LIB_HDRS}) + if(APPLE) + set_target_properties(${_NAME} PROPERTIES \ No newline at end of file diff --git a/install.sh b/install.sh index 1935fff53d6ba789210d6654278dcd0a64816110..f32151f4faa873493a298a1b4e2e59179ba6d3f0 100755 --- a/install.sh +++ b/install.sh @@ -17,7 +17,9 @@ tar zxvf $2/abseil-cpp-20250127.0.tar.gz mv abseil-cpp-20250127.0 abseil-cpp cd abseil-cpp patch -p1 < $2/fix-mingw-complier-error.patch +patch -p1 < $2/adapter-ohos.patch patch -p1 < $2/fix-mac-complier-error.patch +sed -i '/find_library/d' ./absl/base/CMakeLists.txt flock -u 100 } 100<>lock_file.lock exit 0 \ No newline at end of file diff --git a/install_for_mac.sh b/install_for_mac.sh index ff999fb7e738e13e4d09a3aad4f5c811a590c56d..924e6ffe705ad71ebd220040aa7240681341c7a9 100755 --- a/install_for_mac.sh +++ b/install_for_mac.sh @@ -15,4 +15,6 @@ tar zxvf $2/abseil-cpp-20250127.0.tar.gz mv abseil-cpp-20250127.0 abseil-cpp cd abseil-cpp patch -p1 < $2/fix-mingw-complier-error.patch +patch -p1 < $2/adapter-ohos.patch +patch -p1 < $2/fix-mac-complier-error.patch exit 0 diff --git a/install_no_lock.sh b/install_no_lock.sh index 11a0be95d2feb282581068f2763d59d0e58f7eb7..18ea40af9639b1f4891aa596d1d57ba6e2964113 100755 --- a/install_no_lock.sh +++ b/install_no_lock.sh @@ -9,11 +9,14 @@ set -e cd $1 if [ -d "abseil-cpp" ];then - rm -rf abseil-cpp + echo "abseil-cpp exists" + exit 0 fi tar zxvf $2/abseil-cpp-20250127.0.tar.gz mv abseil-cpp-20250127.0 abseil-cpp cd abseil-cpp patch -p1 < $2/fix-mingw-complier-error.patch +patch -p1 < $2/adapter-ohos.patch patch -p1 < $2/fix-mac-complier-error.patch +sed -i '/find_library/d' ./absl/base/CMakeLists.txt exit 0