From 3059e42142f09cd93c04846f97ed344452b3f769 Mon Sep 17 00:00:00 2001 From: YZBruh Date: Sat, 14 Dec 2024 17:27:35 +0300 Subject: [PATCH] pmt: ndk build fixes --- build/workflow/build.config | 2 +- include/libgnulib/Makefile | 6 ++++ include/stdckdint.h | 42 +++++++++++++++++++++++++ jni/Android.mk | 10 +++--- jni/Application.mk | 2 +- jni/parted/libiconv/icrt/Android.mk | 49 ----------------------------- 6 files changed, 55 insertions(+), 56 deletions(-) create mode 100755 include/libgnulib/Makefile create mode 100755 include/stdckdint.h delete mode 100755 jni/parted/libiconv/icrt/Android.mk diff --git a/build/workflow/build.config b/build/workflow/build.config index 425b72c..19ff1c5 100755 --- a/build/workflow/build.config +++ b/build/workflow/build.config @@ -1,5 +1,5 @@ export PMT_VERSION="3.0.2" export PMT_VERSION_CODE=302 -export NDK_VERSION="r27c" +export NDK_VERSION="r27" export NDK_IS="android-ndk" export NDK_LINK="https://dl.google.com/android/repository/android-ndk-${NDK_VERSION}-linux.zip" diff --git a/include/libgnulib/Makefile b/include/libgnulib/Makefile new file mode 100755 index 0000000..2e10203 --- /dev/null +++ b/include/libgnulib/Makefile @@ -0,0 +1,6 @@ +# Run "make check" to ensure that the code passes some simple tests, +# usually (always?) not involving compilation. +all: + +check: + ./t-idcache diff --git a/include/stdckdint.h b/include/stdckdint.h new file mode 100755 index 0000000..7a0d6a8 --- /dev/null +++ b/include/stdckdint.h @@ -0,0 +1,42 @@ +/*===---- stdckdint.h - Standard header for checking integer----------------=== + * + * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. + * See https://llvm.org/LICENSE.txt for license information. + * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + * + *===-----------------------------------------------------------------------=== + */ + +#ifndef __STDCKDINT_H +#define __STDCKDINT_H + +/* If we're hosted, fall back to the system's stdckdint.h. FreeBSD, for + * example, already has a Clang-compatible stdckdint.h header. + * + * The `stdckdint.h` header requires C 23 or newer. + */ +#if __STDC_HOSTED__ && __has_include_next() +#include_next +#else + +/* C23 7.20.1 Defines several macros for performing checked integer arithmetic*/ + +#define __STDC_VERSION_STDCKDINT_H__ 202311L + +// Both A and B shall be any integer type other than "plain" char, bool, a bit- +// precise integer type, or an enumerated type, and they need not be the same. + +// R shall be a modifiable lvalue of any integer type other than "plain" char, +// bool, a bit-precise integer type, or an enumerated type. It shouldn't be +// short type, either. Otherwise, it may be unable to hold two the result of +// operating two 'int's. + +// A diagnostic message will be produced if A or B are not suitable integer +// types, or if R is not a modifiable lvalue of a suitable integer type or R +// is short type. +#define ckd_add(R, A, B) __builtin_add_overflow((A), (B), (R)) +#define ckd_sub(R, A, B) __builtin_sub_overflow((A), (B), (R)) +#define ckd_mul(R, A, B) __builtin_mul_overflow((A), (B), (R)) + +#endif /* __STDC_HOSTED__ */ +#endif /* __STDCKDINT_H */ diff --git a/jni/Android.mk b/jni/Android.mk index e3b761f..3dc0017 100755 --- a/jni/Android.mk +++ b/jni/Android.mk @@ -26,13 +26,13 @@ PMT_CXXFLAGS = \ -O3 \ -Wall \ -Wextra \ - -std=c++17 \ -Wno-vla-cxx-extension \ -Wno-nullability-completeness \ -Wno-writable-strings \ -Wno-nullability-extension \ -Wno-reorder-init-list \ -Wno-gnu-zero-variadic-macro-arguments \ + -Wno-unused-parameter \ -static \ $(PMT_EXTRA_CXXFLAGS) E2FSPROGS_DEFAULT_CFLAGS = \ @@ -60,16 +60,16 @@ ifneq ($(PMT_ENABLE_DEBUG),) PMT_CXXFLAGS += -gdwarf-5 -fsanitize=address endif -PMT := PartitionManager -PARTED := parted +PMT := $(LOCAL_PATH)/PartitionManager +PARTED := $(LOCAL_PATH)/parted PARTED_SRCDIR := $(PARTED)/parted -MKE2FS := e2fsprogs/mke2fs +MKE2FS := $(LOCAL_PATH)/e2fsprogs/mke2fs LIBGNULIB := $(PARTED)/libgnulib LIBCHARSET := $(PARTED)/libcharset LIBICRT := $(PARTED)/libiconv/icrt LIBICONV := $(PARTED)/libiconv LIBPARTED := $(PARTED)/libparted -LIB := e2fsprogs/lib +LIB := $(LOCAL_PATH)/e2fsprogs/lib LIBEXT2FS := $(LIB)/ext2fs LIBEXT2_UUID := $(LIB)/uuid LIBEXT2_E2P := $(LIB)/e2p diff --git a/jni/Application.mk b/jni/Application.mk index d6eb60a..181f73b 100755 --- a/jni/Application.mk +++ b/jni/Application.mk @@ -23,7 +23,7 @@ APP_ABI := \ arm64-v8a \ armeabi-v7a -APP_PLATFORM := android-21 +APP_PLATFORM := android-24 APP_OPTIM := release APP_STL := c++_static diff --git a/jni/parted/libiconv/icrt/Android.mk b/jni/parted/libiconv/icrt/Android.mk deleted file mode 100755 index f6252f8..0000000 --- a/jni/parted/libiconv/icrt/Android.mk +++ /dev/null @@ -1,49 +0,0 @@ -# By YZBruh - -# Copyright 2024 Partition Manager -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -######## -# 3.0.2 -######## - -LOCAL_PATH := $(call my-dir) - -include $(CLEAR_VARS) - -LOCAL_MODULE := libicrt -LOCAL_SRC_FILES := \ - $(LOCAL_PATH)/allocator.c \ - $(LOCAL_PATH)/areadlink.c \ - $(LOCAL_PATH)/binary-io.c \ - $(LOCAL_PATH)/careadlinkat.c \ - $(LOCAL_PATH)/fd-hook.c \ - $(LOCAL_PATH)/getprogname.c \ - $(LOCAL_PATH)/unistd.c \ - $(LOCAL_PATH)/xreadlink.c -LOCAL_C_INCLUDES := \ - $(LOCAL_PATH)/../lib \ - $(LOCAL_PATH)/../srclib -LOCAL_CFLAGS := \ - -Wall \ - -Wextra \ - -Wno-sign-compare \ - -Wno-unused-const-variable \ - -Wno-unused-parameter \ - -Wno-unused-function \ - -Wno-unused-but-set-variable \ - -Wno-missing-field-initializers \ - -fPIC - -include $(BUILD_STATIC_LIBRARY) \ No newline at end of file