Skip to content

Commit d9cdfc7

Browse files
committed
use dynamic linked qemu
1 parent f6708dd commit d9cdfc7

File tree

7 files changed

+81
-62
lines changed

7 files changed

+81
-62
lines changed

build-hnp/Makefile

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
PKGS=zstd \
2-
zlib \
2+
zlib \
33
pcre2 \
44
libglib \
55
qemu-10
@@ -14,9 +14,15 @@ copy: harmonix-public.hnp
1414

1515
harmonix-public.hnp: $(STAMP) Makefile
1616
# reduce size
17-
rm -rfv sysroot/share/man
18-
rm -rfv sysroot/share/doc
19-
rm -rfv sysroot/share/info
17+
mkdir -p sysroot/bin
18+
mkdir -p sysroot/lib
19+
cp -r buildroot/lib/libz.so* sysroot/lib/
20+
cp -r buildroot/lib/libglib-2.0.so* sysroot/lib/
21+
cp -r buildroot/lib/libgmodule-2.0.so* sysroot/lib/
22+
cp -r buildroot/lib/libintl.so* sysroot/lib/
23+
cp -r buildroot/lib/libpcre2-8.so* sysroot/lib/
24+
cp -r buildroot/bin/qemu-* sysroot/bin/
25+
cp -r buildroot/bin/harmonix sysroot/bin/
2026
# create hnp manually
2127
cp hnp.json sysroot
2228
rm -f harmonix-public.hnp

build-hnp/libglib/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ all: download/glib
1818
cd temp/glib && echo "endian = 'little'" >> cross.txt
1919
cd temp/glib && echo "[properties]" >> cross.txt
2020
cd temp/glib && echo "needs_exe_wrapper = true" >> cross.txt
21-
cd temp/glib && PKG_CONFIG=$(shell which pkg-config) PKG_CONFIG_LIBDIR=$(shell pwd)/../buildroot/lib/pkgconfig meson --cross-file cross.txt --prefix=/ -Dselinux=false -Dinstalled_tests=false -Ddtrace=disabled -Dsystemtap=disabled -Dselinux=disabled -Dlibelf=disabled -Dlibmount=disabled -Ddefault_library=both build
21+
cd temp/glib && PKG_CONFIG=$(shell which pkg-config) PKG_CONFIG_LIBDIR=$(shell pwd)/../buildroot/lib/pkgconfig meson --cross-file cross.txt --prefix=$(PREFIX) -Dselinux=false -Dinstalled_tests=false -Ddtrace=disabled -Dsystemtap=disabled -Dselinux=disabled -Dlibelf=disabled -Dlibmount=disabled -Ddefault_library=both -Dsysprof=disabled build
2222
cd temp/glib/build && meson compile
2323
mkdir -p ../buildroot
2424
cd temp/glib/build && DESTDIR=$(shell pwd)/build meson install
25-
cp -rfv ./build/. ../buildroot | tee file.lst
25+
cp -rfv ./build/$(PREFIX)/. ../buildroot | tee file.lst
2626

2727
download/glib:
2828
mkdir -p download

build-hnp/pcre2/Makefile

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,8 @@
1-
all: download/pcre2-10.45.tar.gz
2-
rm -rf temp build
3-
mkdir -p temp build
4-
cd temp && tar xvf ../download/pcre2-10.45.tar.gz
5-
cd temp/pcre2-10.45 && mkdir build
6-
cd temp/pcre2-10.45/build && PKG_CONFIG=/usr/bin/false cmake ../ -DPCRE2_BUILD_PCRE2_32=ON -DCMAKE_INSTALL_PREFIX=/ -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=$(OHOS_ARCH) -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_C_COMPILER=$(OHOS_SDK_HOME)/native/llvm/bin/$(OHOS_ARCH)-unknown-linux-ohos-clang -DCMAKE_CXX_COMPILER=$(OHOS_SDK_HOME)/native/llvm/bin/$(OHOS_ARCH)-unknown-linux-ohos-clang -DCMAKE_BUILD_TYPE=RelWithDebInfo
7-
cd temp/pcre2-10.45/build && make -j $(shell nproc) && make install DESTDIR=$(shell pwd)/build
8-
mkdir -p ../buildroot
9-
cp -rfv build/. ../buildroot | tee file.lst
1+
include ../utils/Makefrag
102

11-
download/pcre2-10.45.tar.gz:
12-
mkdir -p download
13-
cd download && wget https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.45/pcre2-10.45.tar.gz
3+
SOURCE_URL = https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.45/pcre2-10.45.tar.gz
4+
SOURCE_FILE = pcre2-10.45.tar.gz
5+
SOURCE_DIR = pcre2-10.45
6+
CMAKE_ARGS = -DPCRE2_BUILD_PCRE2_32=ON -DCMAKE_INSTALL_PREFIX=$(PREFIX) -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=$(OHOS_ARCH) -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo
7+
8+
$(eval $(call define_cmake_package))

build-hnp/qemu-10/Makefile

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,16 @@ all: download/qemu
1010
PKG_CONFIG=$(shell which pkg-config) \
1111
PKG_CONFIG_PATH= \
1212
PKG_CONFIG_LIBDIR=$(shell pwd)/../buildroot/lib/pkgconfig:$(shell pwd)/../buildroot/share/pkgconfig \
13-
PKG_CONFIG_SYSROOT_DIR=$(shell pwd)/../buildroot \
14-
CFLAGS="-D_UAPI_LINUX_VIRTIO_VSOCK_H -D_UAPI_LINUX_VIRTIO_TYPES_H -D_UAPI_LINUX_VIRTIO_RING_H -D_UAPI_LINUX_VIRTIO_PMEM_H -D_UAPI_LINUX_VIRTIO_NET_H -D_UAPI_LINUX_VIRTIO_IOMMU_H -D_UAPI_LINUX_VIRTIO_FS_H -D_UAPI_LINUX_VIRTIO_CONSOLE_H -D_UAPI_LINUX_VIRTIO_CONFIG_H -D_LINUX_SYSINFO_H -UHAVE_OPENAT2_H -UTARGET_NR_mq_open -D__user= -D__force= ${CFLAGS}" \
15-
./configure --target-list=aarch64-linux-user,x86_64-linux-user,riscv64-linux-user,loongarch64-linux-user --cross-prefix= --host-cc=cc --disable-kvm --disable-xen --disable-rust --disable-docs --disable-system --disable-werror --static \
13+
PKG_CONFIG_buildroot_DIR=$(shell pwd)/../buildroot \
14+
CFLAGS="-D_UAPI_LINUX_VIRTIO_VSOCK_H -D_UAPI_LINUX_VIRTIO_TYPES_H -D_UAPI_LINUX_VIRTIO_RING_H -D_UAPI_LINUX_VIRTIO_PMEM_H -D_UAPI_LINUX_VIRTIO_NET_H -D_UAPI_LINUX_VIRTIO_IOMMU_H -D_UAPI_LINUX_VIRTIO_FS_H -D_UAPI_LINUX_VIRTIO_CONSOLE_H -D_UAPI_LINUX_VIRTIO_CONFIG_H -D_LINUX_SYSINFO_H -UHAVE_OPENAT2_H -D__user= -D__force= ${CFLAGS} -I$(shell pwd)/../buildroot/include/glib-2.0 -I$(shell pwd)/../buildroot/lib/glib-2.0/include -L$(shell pwd)/../buildroot/lib" \
15+
./configure --target-list=aarch64-linux-user,x86_64-linux-user --cross-prefix= --host-cc=cc --disable-kvm --disable-xen --disable-rust --disable-docs --disable-system --disable-werror \
1616
--disable-bsd-user --disable-guest-agent --disable-gcrypt --disable-debug-info --disable-debug-tcg --enable-attr --disable-brlapi --disable-linux-aio --disable-bzip2 --disable-cap-ng --disable-curl --disable-fdt --disable-glusterfs --disable-gnutls --disable-nettle --disable-gtk --disable-rdma --disable-libiscsi --disable-vnc-jpeg --disable-kvm --disable-lzo --disable-curses --disable-libnfs --disable-numa --disable-opengl --disable-rbd --disable-vnc-sasl --disable-sdl --disable-seccomp --disable-smartcard --disable-snappy --disable-spice --disable-libusb --disable-usb-redir --disable-vde --disable-vhost-net --disable-virglrenderer --disable-virtfs --disable-vnc --disable-vte --disable-xen --disable-xen-pci-passthrough --enable-linux-user --disable-tools
1717
cd temp/qemu && make -j $(shell nproc) && make install DESTDIR=$(shell pwd)/build
1818
$(OHOS_SDK_HOME)/native/llvm/bin/llvm-strip ./build/usr/local/bin/*
19-
mkdir -p ../sysroot/bin
20-
cp -rv ./build/usr/local/bin/qemu-aarch64 ../sysroot/bin/qemu-harmonix-aarch64
21-
cp -rv ./build/usr/local/bin/qemu-x86_64 ../sysroot/bin/qemu-harmonix-x86_64
22-
cp -rv ./build/usr/local/bin/qemu-riscv64 ../sysroot/bin/qemu-harmonix-riscv64
23-
cp -rv ./build/usr/local/bin/qemu-loongarch64 ../sysroot/bin/qemu-harmonix-loongarch64
24-
cp -rv ./scripts/* ../sysroot/bin/
19+
mkdir -p ../buildroot/bin
20+
cp -rv ./build/usr/local/bin/qemu-aarch64 ../buildroot/bin/qemu-harmonix-aarch64
21+
cp -rv ./build/usr/local/bin/qemu-x86_64 ../buildroot/bin/qemu-harmonix-x86_64
22+
cp -rv ./scripts/* ../buildroot/bin/
2523

2624
download/qemu:
2725
mkdir -p download

build-hnp/utils/Makefrag

Lines changed: 37 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,16 @@
22
export PATH := /opt/homebrew/opt/ncurses/bin/:/opt/homebrew/opt/coreutils/libexec/gnubin:/opt/homebrew/opt/gnu-sed/libexec/gnubin:/opt/homebrew/opt/make/libexec/gnubin:$(PATH)
33
# avoid sed error
44
export LC_TYPE := C
5-
# avoid probing unwanted packages
6-
export PKG_CONFIG := /usr/bin/false
5+
# fix .pc file locations
6+
export PKG_CONFIG_LIBDIR := $(shell pwd)/../buildroot/lib/pkgconfig:$(shell pwd)/../buildroot/share/pkgconfig
77
# set toolchain paths
8+
ifeq ($(USE_CCACHE), 1)
9+
export CC := ccache $(OHOS_SDK_HOME)/native/llvm/bin/$(OHOS_ARCH)-unknown-linux-ohos-clang
10+
export CXX := ccache $(OHOS_SDK_HOME)/native/llvm/bin/$(OHOS_ARCH)-unknown-linux-ohos-clang++
11+
else
812
export CC := $(OHOS_SDK_HOME)/native/llvm/bin/$(OHOS_ARCH)-unknown-linux-ohos-clang
913
export CXX := $(OHOS_SDK_HOME)/native/llvm/bin/$(OHOS_ARCH)-unknown-linux-ohos-clang++
14+
endif
1015
export LD := $(OHOS_SDK_HOME)/native/llvm/bin/ld.lld
1116
export AR := $(OHOS_SDK_HOME)/native/llvm/bin/llvm-ar
1217
export RANLIB := $(OHOS_SDK_HOME)/native/llvm/bin/llvm-ranlib
@@ -17,25 +22,47 @@ export STRIP := $(OHOS_SDK_HOME)/native/llvm/bin/llvm-strip
1722
export CFLAGS := -I$(shell pwd)/../buildroot/include -Wno-int-conversion -O2
1823
export CXXFLAGS := -I$(shell pwd)/../buildroot/include -O2
1924
export LDFLAGS := -L$(shell pwd)/../buildroot/lib
20-
export PREFIX := /
25+
export PREFIX := /data/app/harmonix.org/harmonix_1.0
2126

22-
define define_autotools_package
27+
# default GNU mirror, allow to override
28+
GNU_MIRROR ?= https://ftpmirror.gnu.org
29+
30+
BUILD_DIR = build
31+
32+
define define_package_common
2333
all: download/$(SOURCE_FILE)
2434
rm -rf temp build
2535
mkdir -p temp build
2636
cd temp && tar xvf ../download/$(SOURCE_FILE)
27-
cd temp/$(SOURCE_DIR) && mkdir build
28-
cd temp/$(SOURCE_DIR)/build && ../configure $(CONFIG_ARGS)
29-
cd temp/$(SOURCE_DIR)/build && make -j $(shell nproc)
30-
cd temp/$(SOURCE_DIR)/build && make install DESTDIR=$(shell pwd)/build
31-
mkdir -p ../sysroot
37+
mkdir -p temp/$(SOURCE_DIR)/$(BUILD_DIR)
38+
$(PATCH_SOURCE)
39+
make configure
40+
cd temp/$(SOURCE_DIR)/$(BUILD_DIR) && make -j $(shell nproc)
41+
cd temp/$(SOURCE_DIR)/$(BUILD_DIR) && make install DESTDIR=$(shell pwd)/build
42+
$(AFTER_INSTALL)
43+
mkdir -p ../buildroot
3244
# drop .la files generated by libtool
3345
rm -fv build$(PREFIX)/lib/*.la
3446
# strip all elf files
3547
find build -type f -exec file {} \; | grep ELF | awk '{print substr($$$$1, 0, length($$$$1)-1);}' | xargs -t $(OHOS_SDK_HOME)/native/llvm/bin/llvm-strip
36-
cp -rfv build$(PREFIX)/. ../sysroot | tee file.lst
48+
cp -rfv build$(PREFIX)/. ../buildroot | tee file.lst
3749

3850
download/$(SOURCE_FILE):
3951
mkdir -p download
4052
cd download && wget --retry-connrefused --read-timeout=20 --timeout=15 $(SOURCE_URL)
4153
endef
54+
55+
define define_autotools_package
56+
$(eval $(call define_package_common))
57+
58+
configure:
59+
cd temp/$(SOURCE_DIR)/$(BUILD_DIR) && ../configure $(CONFIG_ARGS)
60+
endef
61+
62+
CMAKE_LISTS_PATH = ..
63+
define define_cmake_package
64+
$(eval $(call define_package_common))
65+
66+
configure:
67+
cd temp/$(SOURCE_DIR)/$(BUILD_DIR) && cmake $(CMAKE_LISTS_PATH) $(CMAKE_ARGS)
68+
endef

build-hnp/zlib/Makefile

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,10 @@
11
include ../utils/Makefrag
22

3-
all: download/zlib-1.3.1.tar.gz
4-
rm -rf temp build
5-
mkdir -p temp build
6-
cd temp && tar xvf ../download/zlib-1.3.1.tar.gz
7-
cd temp/zlib-1.3.1 && ./configure --prefix=/ --enable-shared
8-
cd temp/zlib-1.3.1 && make -j$(shell nproc)
9-
mkdir -p ../buildroot
10-
cd temp/zlib-1.3.1 && make install DESTDIR=$(shell pwd)/build
11-
cp -rfv ./build/. ../buildroot | tee file.lst
3+
export uname := Linux
124

13-
download/zlib-1.3.1.tar.gz:
14-
mkdir -p download
15-
cd download && rm -rf glib && wget https://zlib.net/zlib-1.3.1.tar.gz
5+
SOURCE_URL = https://zlib.net/zlib-1.3.1.tar.gz
6+
SOURCE_FILE = zlib-1.3.1.tar.gz
7+
SOURCE_DIR = zlib-1.3.1
8+
CONFIG_ARGS = --prefix=$(PREFIX) --enable-shared
9+
10+
$(eval $(call define_autotools_package))

build-hnp/zstd/Makefile

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
1-
all: download/zstd-1.5.7.tar.gz
2-
rm -rf temp build
3-
mkdir -p temp build
4-
cd temp && tar xvf ../download/zstd-1.5.7.tar.gz
5-
cd temp/zstd-1.5.7 && cat ../../0001-qsort.diff | patch -Np1
6-
cd temp/zstd-1.5.7 && mkdir build-zstd
7-
cd temp/zstd-1.5.7/build-zstd && PKG_CONFIG=/usr/bin/false cmake ../build/cmake -DCMAKE_INSTALL_PREFIX=/ -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=$(OHOS_ARCH) -DCMAKE_C_COMPILER=$(OHOS_SDK_HOME)/native/llvm/bin/$(OHOS_ARCH)-unknown-linux-ohos-clang -DCMAKE_CXX_COMPILER=$(OHOS_SDK_HOME)/native/llvm/bin/$(OHOS_ARCH)-unknown-linux-ohos-clang++ -DCMAKE_AR=$(OHOS_SDK_HOME)/native/llvm/bin/llvm-ar -DCMAKE_BUILD_TYPE=RelWithDebInfo -DZSTD_BUILD_STATIC=ON -DZSTD_BUILD_SHARED=ON
8-
cd temp/zstd-1.5.7/build-zstd && make -j $(shell nproc) && make install DESTDIR=$(shell pwd)/build
9-
mkdir -p ../buildroot
10-
cp -rfv build/. ../buildroot | tee file.lst
1+
include ../utils/Makefrag
112

12-
download/zstd-1.5.7.tar.gz:
13-
mkdir -p download
14-
cd download && wget https://github.com/facebook/zstd/releases/download/v1.5.7/zstd-1.5.7.tar.gz
3+
SOURCE_URL = https://github.com/facebook/zstd/releases/download/v1.5.7/zstd-1.5.7.tar.gz
4+
SOURCE_FILE = zstd-1.5.7.tar.gz
5+
SOURCE_DIR = zstd-1.5.7
6+
# avoid clashing existing build folder
7+
BUILD_DIR = build-zstd
8+
PATCH_SOURCE = cd temp/$(SOURCE_DIR) && cat ../../0001-qsort.diff | patch -Np1
9+
CMAKE_LISTS_PATH = ../build/cmake
10+
CMAKE_ARGS = -DCMAKE_INSTALL_PREFIX=$(PREFIX) -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=$(OHOS_ARCH) -DZSTD_BUILD_STATIC=ON -DZSTD_BUILD_SHARED=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo
11+
12+
$(eval $(call define_cmake_package))

0 commit comments

Comments
 (0)