Improve build system, etc...

This commit is contained in:
2025-08-24 16:16:30 +03:00
parent 62b1ff98d9
commit 249b44a81a
7 changed files with 56 additions and 42 deletions

3
.gitignore vendored
View File

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

View File

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

View File

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

View File

@@ -30,7 +30,8 @@ set(PMT_SOURCES
)
# Add pmt
add_executable(pmt ${PMT_SOURCES})
add_executable(pmt ${PMT_SOURCES}
functions/ShellFunction.cpp)
add_executable(pmt_static ${PMT_SOURCES})
# 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;
};
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
#endif // #ifndef FUNCTIONS_HPP