Skip to content

Commit

Permalink
Add support for NDK r25
Browse files Browse the repository at this point in the history
Includes a few tweaks needed to build bpftools with a recent NDK:

- Libcxx prebuilts are no longer included in sources/cxx-stl [1], so
  use the sysroot path instead.
- NDK now defaults to android-legacy.toolchain.cmake [2], irrespective of
  CMake version. With the legacy toolchain some env variables we set such
  as LDFLAGS aren't used, leading to build errors. Force the use of new
  toolchain file and switch to CXXFLAGS as opposed to CMAKE_CXX_FLAGS
  to avoid overriding toolchain defaults [3].

Test: make NDK_PATH=/opt/ndk/android-ndk-r25c bpftools-min

[1] https://android-review.googlesource.com/c/platform/ndk/+/2051541
[2] https://android-review.googlesource.com/c/platform/ndk/+/2064269
[3] android/ndk#1693
  • Loading branch information
tnovak committed May 8, 2023
1 parent 149bb30 commit 771ade7
Show file tree
Hide file tree
Showing 4 changed files with 4 additions and 9 deletions.
5 changes: 2 additions & 3 deletions projects/bcc/build.mk
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,9 @@ endif
# generates bcc build files for Android
$(BCC_ANDROID_BUILD_DIR): $(HOST_OUT_DIR)/bin/flex
-mkdir $@
cd $@ && LDFLAGS="$(BCC_EXTRA_LDFLAGS)" $(CMAKE) $(BCC_SRCS) \
cd $@ && CFLAGS="$(BCC_EXTRA_CFLAGS)" CXXFLAGS="$(BCC_EXTRA_CFLAGS)" LDFLAGS="$(BCC_EXTRA_LDFLAGS)" \
$(CMAKE) $(BCC_SRCS) \
$(ANDROID_EXTRA_CMAKE_FLAGS) \
-DCMAKE_C_FLAGS="$(BCC_EXTRA_CFLAGS)" \
-DCMAKE_CXX_FLAGS="$(BCC_EXTRA_CFLAGS)" \
-DFLEX_EXECUTABLE=$(abspath $(HOST_OUT_DIR)/bin/flex) \
-DBPS_LINK_RT=OFF \
-DENABLE_TESTS=OFF \
Expand Down
2 changes: 0 additions & 2 deletions projects/bpftrace/build.mk
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ BPFTRACE_HOST_DEPS = cmake flex
$(eval $(call project-define,bpftrace))

BPFTRACE_EXTRA_LDFLAGS = "-L$(abspath $(ANDROID_OUT_DIR))/lib"
BPFTRACE_EXTRA_CFLAGS = "-I$(abspath $(ANDROID_OUT_DIR))/include"

ifeq ($(STATIC_LINKING),true)
BPFTRACE_EXTRA_CMAKE_FLAGS = -DSTATIC_LINKING=ON
Expand Down Expand Up @@ -33,7 +32,6 @@ $(BPFTRACE_ANDROID_BUILD_DIR): $(HOST_OUT_DIR)/bin/flex $(STRIP_THUNK)
cd $@ && LDFLAGS="$(BPFTRACE_EXTRA_LDFLAGS)" $(CMAKE) $(BPFTRACE_SRCS) \
$(ANDROID_EXTRA_CMAKE_FLAGS) \
$(BPFTRACE_EXTRA_CMAKE_FLAGS) \
-DCMAKE_C_FLAGS="$(BPFTRACE_EXTRA_CFLAGS)" \
-DBUILD_TESTING=OFF \
-DENABLE_MAN=OFF \
-DFLEX_EXECUTABLE=$(abspath $(HOST_OUT_DIR)/bin/flex) \
Expand Down
1 change: 1 addition & 0 deletions toolchain/cmake.mk
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ endif

ANDROID_CMAKE_TOOLCHAIN_FILE = $(NDK_PATH)/build/cmake/android.toolchain.cmake
ANDROID_EXTRA_CMAKE_FLAGS = -DCMAKE_TOOLCHAIN_FILE=$(abspath $(ANDROID_CMAKE_TOOLCHAIN_FILE))
ANDROID_EXTRA_CMAKE_FLAGS += -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=FALSE
ANDROID_EXTRA_CMAKE_FLAGS += -DANDROID_ABI=$(CMAKE_ABI)
ANDROID_EXTRA_CMAKE_FLAGS += -DANDROID_PLATFORM=android-$(NDK_API)
ANDROID_EXTRA_CMAKE_FLAGS += -DANDROID_STL=c++_shared
Expand Down
5 changes: 1 addition & 4 deletions toolchain/toolchain.mk
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,10 @@ include toolchain/cmake.mk

ifeq ($(NDK_ARCH), arm64)
ANDROID_SYSROOT_LIB_SUBDIR = aarch64-linux-android
LIBCPP_ABI = arm64-v8a
else ifeq ($(NDK_ARCH), x86_64)
ANDROID_SYSROOT_LIB_SUBDIR = x86_64-linux-android
LIBCPP_ABI = x86_64
else ifeq ($(NDK_ARCH), armv7)
ANDROID_SYSROOT_LIB_SUBDIR = arm-linux-androideabi
LIBCPP_ABI = armeabi-v7a
else
$(error unknown abi $(NDK_ARCH))
endif
Expand All @@ -30,4 +27,4 @@ ANDROID_SYSROOT_LIB_PATH = \
$(ANDROID_SYSROOT_PATH)/usr/lib/$(ANDROID_SYSROOT_LIB_SUBDIR)/$(NDK_API)/

$(ANDROID_OUT_DIR)/lib/libc++_shared.so: | $(ANDROID_OUT_DIR)
cp $(NDK_PATH)/sources/cxx-stl/llvm-libc++/libs/$(LIBCPP_ABI)/libc++_shared.so $@
cp $(ANDROID_SYSROOT_PATH)/usr/lib/$(ANDROID_SYSROOT_LIB_SUBDIR)/libc++_shared.so $@

0 comments on commit 771ade7

Please sign in to comment.