Skip to content

Commit 202e767

Browse files
ci: Modify build makefile for aarch64 linux build
1 parent 071811f commit 202e767

File tree

1 file changed

+33
-3
lines changed

1 file changed

+33
-3
lines changed

Makefile

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,45 @@ NO_AVX_FLAGS := -DGGML_AVX=OFF -DGGML_AVX2=OFF -DGGML_FMA=OFF -DGGML_F16C=OFF
2121
# Common CMake parameters
2222
CMAKE_COMMON_PARAMS := -DCMAKE_BUILD_TYPE=$(BUILD_TYPE)
2323

24+
define select_linux_compiler
25+
$(eval ARCH := $(1))
26+
$(if $(filter x64,$(ARCH)),\
27+
$(eval CC := gcc)\
28+
$(eval CXX := g++)\
29+
$(eval CMAKE_ARCH_FLAGS := -DCMAKE_SYSTEM_PROCESSOR=x86_64),\
30+
$(if $(filter aarch64,$(ARCH)),\
31+
$(eval CC := aarch64-linux-gnu-gcc)\
32+
$(eval CXX := aarch64-linux-gnu-g++)\
33+
$(eval CMAKE_ARCH_FLAGS := -DCMAKE_SYSTEM_PROCESSOR=aarch64)\
34+
$(eval EXTRA_FLAGS += -DCMAKE_TOOLCHAIN_FILE=$(CURDIR)/aarch64-toolchain.cmake),\
35+
$(error Unsupported architecture: $(ARCH))))
36+
endef
37+
38+
# Create toolchain file for aarch64 cross-compilation
39+
define create_aarch64_toolchain
40+
echo '# Toolchain file for aarch64 cross-compilation' > aarch64-toolchain.cmake
41+
echo 'set(CMAKE_SYSTEM_NAME Linux)' >> aarch64-toolchain.cmake
42+
echo 'set(CMAKE_SYSTEM_PROCESSOR aarch64)' >> aarch64-toolchain.cmake
43+
echo 'set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)' >> aarch64-toolchain.cmake
44+
echo 'set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)' >> aarch64-toolchain.cmake
45+
echo 'set(CMAKE_FIND_ROOT_PATH /usr/aarch64-linux-gnu)' >> aarch64-toolchain.cmake
46+
echo 'set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)' >> aarch64-toolchain.cmake
47+
echo 'set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)' >> aarch64-toolchain.cmake
48+
echo 'set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)' >> aarch64-toolchain.cmake
49+
endef
2450

2551
# Linux base build template
2652
define linux_build
27-
$(eval ARCH := $(1))
53+
$(call select_compiler,$(1))
2854
$(eval BUILD_PATH := $(BUILD_DIR)/linux-$(ARCH)$(2))
2955
$(eval EXTRA_FLAGS := $(3))
56+
$(if $(filter aarch64,$(ARCH)),$(call create_aarch64_toolchain))
57+
3058
rm -rf $(BUILD_PATH)
31-
$(CMAKE) -S $(WHISPER_CPP_DIR) -B $(BUILD_PATH) -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=$(ARCH) $(CMAKE_COMMON_PARAMS) $(EXTRA_FLAGS)
32-
$(CMAKE) --build $(BUILD_PATH)
59+
60+
CC=$(CC) CXX=$(CXX) $(CMAKE) -S $(WHISPER_CPP_DIR) -B $(BUILD_PATH) -DCMAKE_SYSTEM_NAME=Linux $(CMAKE_ARCH_FLAGS) $(CMAKE_COMMON_PARAMS) $(EXTRA_FLAGS)
61+
CC=$(CC) CXX=$(CXX) $(CMAKE) --build $(BUILD_PATH)
62+
3363
mkdir -p $(RUNTIME_DIR)/linux-$(ARCH)$(2)
3464
cp $(BUILD_PATH)/src/libwhisper.so $(RUNTIME_DIR)/linux-$(ARCH)$(2)/
3565
cp $(BUILD_PATH)/ggml/src/libggml.so $(RUNTIME_DIR)/linux-$(ARCH)$(2)/

0 commit comments

Comments
 (0)