Reapply "Improve build system, etc..."

This reverts commit 705f529f55.
This commit is contained in:
2025-08-24 16:17:41 +03:00
parent 705f529f55
commit 1d1d6e98ce
7 changed files with 56 additions and 42 deletions

3
.gitignore vendored
View File

@@ -7,8 +7,7 @@ cmake-build-*
include/generated include/generated
# Dont't add build directories # Dont't add build directories
build_arm64-v8a build_*
build_armeabi-v7a
# Don't add generated objects and libs # Don't add generated objects and libs
*.o *.o

View File

@@ -29,7 +29,7 @@ else()
endif() endif()
# Add pmt's CMake module(s) # Add pmt's CMake module(s)
include(cmake/generate_headers.cmake) include(build/cmake/generate_headers.cmake)
# Generate header(s) # Generate header(s)
get_property(FLAGS DIRECTORY PROPERTY COMPILE_OPTIONS) get_property(FLAGS DIRECTORY PROPERTY COMPILE_OPTIONS)

View File

@@ -15,74 +15,61 @@
# limitations under the License. # limitations under the License.
# #
set -e
BUILD_64="build_arm64-v8a"
BUILD_32="build_armeabi-v7a"
THIS="$(basename $0)" THIS="$(basename $0)"
TARGET_ABI_LIST=("arm64-v8a" "armeabi-v7a")
echo() { command echo "[$THIS]: $@"; } echo() { command echo "[$THIS]: $@"; }
checks() checks() {
{
if [ -z "$ANDROID_NDK" ]; then if [ -z "$ANDROID_NDK" ]; then
echo "Please set ANDROID_NDK variable as your NDK path." echo "Please set ANDROID_NDK variable as your NDK path."
exit 1 exit 1
fi fi
if [ ! -f /usr/bin/cmake ] && [ ! -f /bin/cmake ]; then if ! which cmake &>/dev/null; then
echo "Please verify your CMake installation." echo "Please verify your CMake installation."
exit 1 exit 1
fi fi
} }
clean() clean() {
{
echo "Cleaning workspace." echo "Cleaning workspace."
rm -rf $BUILD_32 $BUILD_64 \ for a in ${TARGET_ABI_LIST[@]}; do rm -rf build_$a; done
include/generated \ rm -rf include/generated \
srclib/libhelper/tests/dir \ srclib/libhelper/tests/dir \
srclib/libhelper/tests/linkdir \ srclib/libhelper/tests/linkdir \
srclib/libhelper/tests/file.txt srclib/libhelper/tests/file.txt
} }
build() build() {
{ set -e
mkdir -p $BUILD_64 $BUILD_32
command echo -e "BUILD INFO: command echo -e "BUILD INFO:
ARCHS: arm64-v8a armeabi-v7a ARCHS: ${TARGET_ABI_LIST[@]}
ANDROID_PLATFORM: $ANDROID_PLATFORM ANDROID_PLATFORM: $ANDROID_PLATFORM
ANDROID_TOOLCHAIN_FILE: $ANDROID_NDK/build/cmake/android.toolchain.cmake\n" ANDROID_TOOLCHAIN_FILE: $ANDROID_NDK/build/cmake/android.toolchain.cmake\n"
echo "Configuring for arm64-v8a..." for a in ${TARGET_ABI_LIST[@]}; do
cmake -B $BUILD_64 -S . $1 \ echo "Configuring for $a..."
-DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \ mkdir -p build_$a
-DANDROID_ABI=arm64-v8a \ cmake -B build_$a -S . $1 \
-DANDROID_PLATFORM=$ANDROID_PLATFORM \ -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \
-DANDROID_STL=c++_static -DANDROID_ABI=$a \
-DANDROID_PLATFORM=$ANDROID_PLATFORM \
-DANDROID_STL=c++_static
done
echo "Configuring for armeabi-v7a..." for a in ${TARGET_ABI_LIST[@]}; do
cmake -B $BUILD_32 -S . $1 \ echo "Building $a artifacts..."
-DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \ cmake --build build_$a
-DANDROID_ABI=armeabi-v7a \ echo "$a build complete, artifacts: $PWD/build_$a"
-DANDROID_PLATFORM=$ANDROID_PLATFORM \ done
-DANDROID_STL=c++_static
echo "Building arm64-v8a artifacts..."
cmake --build $BUILD_64
echo "arm64-v8a build complete, artifacts: $PWD/$BUILD_64"
echo "Building armeabi-v7a artifacts..."
cmake --build $BUILD_32
echo "armeabi-v7a build complete, artifacts: $PWD/$BUILD_32"
} }
if [ $# -eq 0 ]; then if [ $# -eq 0 ]; then
command echo "Usage: $0 build|rebuild|clean [EXTRA_CMAKE_FLAGS] [ANDROID_PLATFORM=SELECTED_ANDROID_PLATFORM]" command echo -e "Usage: $0 build|rebuild|clean [EXTRA_CMAKE_FLAGS]\n HINT: Export ANDROID_PLATFORM if you set min Android target.\n HINT: Change TARGET_ABI_LIST array in build.sh if you build other archs."
exit 1 exit 1
fi fi
if [ -z $ANDROID_PLATFORM ]; then ANDROID_PLATFORM="android-21"; fi [ -z $ANDROID_PLATFORM ] && ANDROID_PLATFORM="android-21"
checks checks
case $1 in case $1 in

View File

@@ -30,7 +30,8 @@ set(PMT_SOURCES
) )
# Add pmt # Add pmt
add_executable(pmt ${PMT_SOURCES}) add_executable(pmt ${PMT_SOURCES}
functions/ShellFunction.cpp)
add_executable(pmt_static ${PMT_SOURCES}) add_executable(pmt_static ${PMT_SOURCES})
# Set linker options # Set linker options

View File

@@ -0,0 +1,16 @@
/*
Copyright 2025 Yağız Zengin
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.
*/

View File

@@ -175,6 +175,17 @@ public:
[[nodiscard]] const char *name() const override; [[nodiscard]] const char *name() const override;
}; };
class shellFunction final : public FunctionBase {
public:
CLI::App *cmd = nullptr;
bool init(CLI::App &_app) override;
bool run() override;
[[nodiscard]] bool isUsed() const override;
[[nodiscard]] const char *name() const override;
};
} // namespace PartitionManager } // namespace PartitionManager
#endif // #ifndef FUNCTIONS_HPP #endif // #ifndef FUNCTIONS_HPP