サマリ
特にbuildrootに特化した内容ではなく
buildroot内のpackageが使用しているビルドシステムのエラー回避方法など
内容
pragma
一番基本
warningでエラー停止するので除外する
libglib2はなぜかこんなエラーが発生する
stdio.hをincludeするだけでビルドが止まる
buildroot-linux-gnu/sysroot/usr/include/stdio.h:970,
from ../glib/gprintf.h:24,
from ../glib/gstdio.h:24,
from ../glib/gspawn.c:61:
/home/tyano/workspace/buildroot/rockchip/rk3399/buildroot/output/host/aarch64-buildroot-linux-gnu/sy
sroot/usr/include/bits/stdio2.h: In function ‘sprintf’:
/home/tyano/workspace/buildroot/rockchip/rk3399/buildroot/output/host/aarch64-buildroot-linux-gnu/sy
sroot/usr/include/bits/stdio2.h:32:35: error: format not a string literal, argument types not checke
d [-Werror=format-nonliteral]
32 | __va_arg_pack ());
| ^~~~~~~~~~~~~
/home/tyano/workspace/buildroot/rockchip/rk3399/buildroot/output/host/aarch64-buildroot-linux-gnu/sy
sroot/usr/include/bits/stdio2.h: In function ‘snprintf’:
/home/tyano/workspace/buildroot/rockchip/rk3399/buildroot/output/host/aarch64-buildroot-linux-gnu/sy
sroot/usr/include/bits/stdio2.h:70:36: error: format not a string literal, argument types not checke
d [-Werror=format-nonliteral]
70 | __va_arg_pack ());
| ^~~~~~~~~~~~~
仕方がないのでこんな感じでpatchをあてる
details
diff --git a/glib/gbacktrace.c b/glib/gbacktrace.c
index b708b16..8833df9 100644
--- a/glib/gbacktrace.c
+++ b/glib/gbacktrace.c
@@ -34,7 +34,10 @@
#include <signal.h>
#include <stdarg.h>
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-nonliteral"
#include <stdio.h>
+#pragma GCC diagnostic pop
#include <stdlib.h>
#ifdef HAVE_SYS_TIME_H
diff --git a/glib/gbookmarkfile.c b/glib/gbookmarkfile.c
patchのあてかた
patchはpackageディレクトリ内の該当のプログラムディレクトリから
mkファイルに書かれているソースコードをダウンロードしてきて
git管理するのが良い
libglib2の場合
package/libglib2/libglib2.mk
が以下のようになっている
LIBGLIB2_VERSION_MAJOR = 2.76
LIBGLIB2_VERSION = $(LIBGLIB2_VERSION_MAJOR).1
LIBGLIB2_SOURCE = glib-$(LIBGLIB2_VERSION).tar.xz
LIBGLIB2_SITE = https://download.gnome.org/sources/glib/$(LIBGLIB2_VERSION_MAJOR)
普通に読み解くと
https://download.gnome.org/sources/glib/2.76/glib-2.76.1.tar.xz
が
該当のファイルなので以下のようにする
wget https://download.gnome.org/sources/glib/2.76/glib-2.76.1.tar.xz
tar xf glib-2.76.1.tar.xz
cd glib-2.76.1
git init
git add .
git commit -m "init"
元々存在しているpatchがあるのでそれを当てる
for a in `ls /path/to/buildroot/package/libglib2/ | grep patch `
do
patch -p1 < /path/to/buildroot/package/libglib2/$a
done
git 更新する(origファイルとか出来ても不要なので削除する)
patchが新規ファイルを作成するようになっている場合は削除せず
git add -N xxx
などしておく
git status
# git add -N xxx 必要に応じて
git clean -dfx
git add -u
git commit -m "patched"
後は編集してpatchファイルを作成する
(番号は連番である必要は無いが、順番が関係ある場合もあるので注意)
# vim [ソースコード]など
...
git diff > /path/to/buildroot/package/libglib2/0007-cross_compile.patch
サブモジュールのpatch
サブモジュールはgit diff
で差分を取るとcommit-idの差分しか見えない
サブモジュール内で差分を取って、ディレクトリ構成だけ合わせる必要がある
親の差分がある場合だとパッチファイルを分けた方が良い
例) bpftoolの場合
SM=libbpf ##これはSM=libbpf git ... など1行にすると$SMで値が取れないので注意
git diff --ignore-submodules > /path/to/0001-cross_compile.patch
git -C $SM diff | perl -pe "s/ (a|b)\// \1\/$SM\//g" > /path/to/0002-cross_compile_submodule.patch
configure.ac
処理を追加する方法
m4ファイルを作成する
aclocal.m4は自動生成なので新規で作成する
AC_DEFUNで関数名を定義し、[]内に処理を記載する
例) custom.m4
AC_DEFUN([DUMP_VARS], [
AC_MSG_NOTICE([Running custom macro...])
declare -p
])
configure.acで呼び出す
m4_include([custom.m4])
DUMP_VARS
Makefile.amに変数を渡す
configure.ac内の変数を渡す
AC_SUBSTの第1引数に変数名、第2引数に設定する内容を記載する。
AC_SUBST([TARGET_OR_HOST], "$target_or_host")
configureに来た変数を渡す
STAGING_DIR=/path/to/dir ./configure
などで変数が渡されてきた場合
そのままMakefileに渡す方法
AC_ARG_VAR(STAGING_DIR, [Staging directory for cross-compilation])
AC_SUBST([STAGING_DIR])
ちなみにSTAGING_DIR
はルートのMakefileでexportされているので
AC_SUBST([TARGET_ROOT_DIR],"$STAGING_DIR")
みたいな感じで変数名を変換したほうが良いと思う。
Makefile.amで条件処理を行う変数を渡す
x11の場合
上と組み合わせて使うと良いと思う
AM_CONDITIONAL(STAGING_DIR_SET, [test -n "${STAGING_DIR}"])
Makefile.am側では以下のように処理する
if STAGING_DIR_SET
CROSS_SYSROOT = --sysroot=$(STAGING_DIR)
else
CROSS_SYSROOT =
endif
AM_CONDITIONAL
は存在しない場合もある
ソースコード内のm4ファイルをAC_DEFUNでgrepしたら
使用可能な関数がわかります
libtool
ltmain.sh
ビルドにlibtoolが使用されていてltmain.shがソースコード内に存在する場合
ltmain.shがlibtoolに変換される
ltmain.shは単なるシェルスクリプトだがコード量が膨大
また、libtoolに渡された引数は独自の処理が行われて、
実際にgcc
に渡されるものには変換がかけられる
コンパイル時の処理
func_mode_compile
で行う
リンク時の処理
func_mode_link
で行う
引数解析
6800行くらいの以下あたりから
for arg
do
コマンド実行
10000行くらいの以下あたりで$cmdにgccのコマンドラインが入っている
$opt_dry_run || eval "$cmd" || {
cmd="$cmd [追加したいオプション]"
などとやると無理やり通すことができる
とくに-Wl系はMakefileで指定してもlibtoolで弾かれるので
自動patch
なお、ltmain.shはbuildroot側でpatchがされる場合がある
自前patchが先に行われるため、conflictした場合
buildrootのpatchを含めた自前patchを作成する必要がある
patchを作成するのはbuildで止まった場合だと思われるため、
大元のコードを取得し、git管理したあと
buildrootの自動patchが当たった(buildで止まった状態の)ものを上書きする
ここでcommitせずに修正したい箇所を修正すると
自動patchと自前の修正が合わさったdiffが出来る
buildroot側では同じ内容で再patchしないように
自動patchをoffにする
やり方は [パッケージ名]_LIBTOOL_PATCH = NO
例) libxml2の場合
package/libxml2/libxml2.mk
diff --git a/package/libxml2/libxml2.mk b/package/libxml2/libxml2.mk
index 8a5d703d..13dcb5ac 100644
--- a/package/libxml2/libxml2.mk
+++ b/package/libxml2/libxml2.mk
@@ -14,6 +14,7 @@ LIBXML2_LICENSE = MIT
LIBXML2_LICENSE_FILES = Copyright
LIBXML2_CPE_ID_VENDOR = xmlsoft
LIBXML2_CONFIG_SCRIPTS = xml2-config
+LIBXML2_LIBTOOL_PATCH = NO
# relocation truncated to fit: R_68K_GOT16O
ifeq ($(BR2_m68k_cf),y)
configure.in
configure.acが無くてconfigure.inしかない場合
sdlのパターン
AM_CONDITIONALはm4内に存在しない
コンパイル時はconfigure.inでsysrootを指定するだけ
リンク時はltmain.shに手を入れる必要がある
diff --git a/build-scripts/ltmain.sh b/build-scripts/ltmain.sh
index 5e04f08..aa6b28d 100644
--- a/build-scripts/ltmain.sh
+++ b/build-scripts/ltmain.sh
@@ -4716,7 +4716,9 @@ func_mode_link ()
func_stripname ' ' '' "$arg"
arg=$func_stripname_result
;;
-
+ --sysroot=*)
+ sysroot=$arg
+ ;;
-Wl,*)
func_stripname '-Wl,' '' "$arg"
args=$func_stripname_result
@@ -7338,6 +7340,7 @@ EOF
func_quote_for_expand "$cmd"
eval "func_echo $func_quote_for_expand_result"
}
+ cmd="$cmd $sysroot"
$opt_dry_run || eval "$cmd" || {
lt_exit=$?
diff --git a/configure.in b/configure.in
index f740e0c..dcb39af 100644
--- a/configure.in
+++ b/configure.in
@@ -82,6 +82,14 @@ case "$host" in
BASE_LDFLAGS=""
;;
esac
+
+if [[ "x${target}" != "x" ]] ; then
+ CFLAGS="$CFLAGS $(echo $CFLAGS_FOR_BUILD | sed -e 's/\/host\//\/target\/usr\//g') --sysroot=$STAGING_DIR"
+ CXXFLAGS="$CXXFLAGS $(echo $CXXFLAGS_FOR_BUILD | sed -e 's/\/host\//\/target\/usr\//g') --sysroot=$STAGING_DIR"
+ LDFLAGS="$LDFLAGS $(echo $LDFLAGS_FOR_BUILD | sed -e 's/\/host\//\/target\/usr\//g') --sysroot=$STAGING_DIR"
+ AC_SUBST([TARGET_OR_HOST], "$target")
+fi
+
BUILD_CFLAGS="$CFLAGS $CPPFLAGS"
EXTRA_CFLAGS="$INCLUDE $BASE_CFLAGS"
BUILD_LDFLAGS="$LDFLAGS"
configure
に変換される際に[]
が取り除かれる
したがって、[
では無く[[
にする必要があるので注意
meson.build
cross-compilation.confにsysrootが書き込まれるが
肝心のmeson.build内で利用されていない
propertyをmeson.buildの変数に変換する必要がある
また、sys_root指定をしても
ライブラリチェック時のビルドには適用されないので
自分で適用する必要がある
例)pangoの場合
上の差分はpango自体のビルドに適用されるオプション
下の差分はライブラリチェック時のビルドに適用されるオプション
diff --git a/meson.build b/meson.build
index bf78d32..b3eddd2 100644
--- a/meson.build
+++ b/meson.build
@@ -54,6 +54,8 @@ common_cflags = []
common_cppflags = []
common_ldflags = []
+sys_root = meson.get_external_property('sys_root', '')
+
# Add more compiler warnings to the default set
if cc.get_id() == 'msvc'
# Compiler options taken from msvc_recommended_pragmas.h
@@ -445,8 +447,14 @@ int main() {
cairo_ft_font_face_create_for_pattern (p);
return 0;
}'''
+ if sys_root.strip() != ''
+ cross_sysroot = '--sysroot=' + sys_root
+ else
+ cross_sysroot =
+ endif
if not cc.links(cairo_fc_test,
dependencies: dep,
+ args: cross_sysroot,
name : 'Cairo is built with FreeType and FontConfig support')
error('@0@ does not have the required FontConfig support'.format(b[0]))
endif
エラー変換されるwarningの取り除き方
例) -Werror=redundant-decls
を取り除きたい場合
一旦別の配列変数を用意してそこに入れ込んだあと、入れ替える
filterとかは探した限りでは見当たらなかった
diff --git a/pango/meson.build b/pango/meson.build
index 82242ab..cafa33e 100644
--- a/pango/meson.build
+++ b/pango/meson.build
@@ -114,6 +114,14 @@ pango_cflags = [
pango_inc = include_directories('.')
+temp_cflags = []
+foreach flag : common_cflags
+ if flag != '-Werror=redundant-decls'
+ temp_cflags += flag
+ endif
+endforeach
+common_cflags = temp_cflags
+
libpango = library(
pango_api_name,
sources: pango_sources + pango_enums,
ビルド
基本的にはV=1
をつけるのが吉
エラーが発生したら、エラー発生パッケージを一回きれいにしないと
なんとなくで通ってしまう可能性がある。
make パッケージ名-dirclean
でビルドディレクトリごと削除される。
(ダウンロードしたものは別に保存されているので再ダウンロードはされない)
例) libinputでエラーが発生し、configure.acのパッチをおいて再ビルドする場合
make xdriver_xf86-input-libinput-dirclean && make V=1 2>&1 | tee build.log
AUTORECONF
configure.acファイルがあるのにautoreconfが有効で無い場合
なるべく有効にした方が良いと思う。
例) twmでautoreconfを有効にする
diff --git a/package/x11r7/xapp_twm/xapp_twm.mk b/package/x11r7/xapp_twm/xapp_twm.mk
index b2228304..2bd563f9 100644
--- a/package/x11r7/xapp_twm/xapp_twm.mk
+++ b/package/x11r7/xapp_twm/xapp_twm.mk
@@ -11,5 +11,7 @@ XAPP_TWM_LICENSE = MIT
XAPP_TWM_LICENSE_FILES = COPYING
XAPP_TWM_DEPENDENCIES = \
host-bison xlib_libX11 xlib_libXext xlib_libXt xlib_libXmu
+XAPP_TWM_AUTORECONF = YES
+XAPP_TWM_AUTORECONF_OPTS = --force
この場合修正はconfigureではなくconfigure.acで
perl
libopenssl
しか今のところ見つかってない
diff --git a/Configure b/Configure
index 77af4d7..53953df 100755
--- a/Configure
+++ b/Configure
@@ -1466,6 +1466,10 @@ foreach (keys %user) {
delete $config{$_} unless defined $config{$_};
}
+$useradd{CFLAGS}->[0] .= env('CFLAGS_FOR_BUILD');
+$useradd{CXXFLAGS}->[0] .= env('CXXFLAGS_FOR_BUILD');
+$useradd{LDFLAGS}->[0] .= env('LDFLAGS_FOR_BUILD');
+
# Finish up %config by appending things the user gave us on the command line
# apart from "make variables"
foreach (keys %useradd) {
gcc-15対応
gcc-15はまだリリースされてないので使う人いないと思うけど
以下の問題があるのでそのうち対応する必要が出てくると思う
対応方法としてはCFLAGSに-std=c99
(c17まではOK)をつけるだけ
gmpの例
diff --git a/package/gmp/gmp.mk b/package/gmp/gmp.mk
index 7e8da9025c..e37e41366d 100644
--- a/package/gmp/gmp.mk
+++ b/package/gmp/gmp.mk
@@ -33,5 +33,7 @@ else
GMP_CONF_OPTS += --disable-cxx
endif
+HOST_GMP_CONF_OPTS += "CFLAGS=-std=c99"
+
$(eval $(autotools-package))
$(eval $(host-autotools-package))
なぜかhostでない方はすでに-std=c99
がついていたという
確認
以下でビルドを通してみた(動作確認は未)
使った.configファイル
BR2_HAVE_DOT_CONFIG=y
BR2_HOST_GCC_AT_LEAST_4_9=y
BR2_HOST_GCC_AT_LEAST_5=y
BR2_HOST_GCC_AT_LEAST_6=y
BR2_HOST_GCC_AT_LEAST_7=y
BR2_HOST_GCC_AT_LEAST_8=y
BR2_HOST_GCC_AT_LEAST_9=y
BR2_HOST_GCC_AT_LEAST_10=y
BR2_HOST_GCC_AT_LEAST_11=y
BR2_ARCH_IS_64=y
BR2_USE_MMU=y
BR2_aarch64=y
BR2_ARCH_HAS_TOOLCHAIN_BUILDROOT=y
BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8=y
BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9=y
BR2_ARCH_NEEDS_GCC_AT_LEAST_5=y
BR2_ARCH_NEEDS_GCC_AT_LEAST_6=y
BR2_ARCH_NEEDS_GCC_AT_LEAST_7=y
BR2_ARCH_NEEDS_GCC_AT_LEAST_8=y
BR2_ARCH_NEEDS_GCC_AT_LEAST_9=y
BR2_ARCH="aarch64"
BR2_NORMALIZED_ARCH="arm64"
BR2_ENDIAN="LITTLE"
BR2_GCC_TARGET_ABI="lp64"
BR2_GCC_TARGET_CPU="cortex-a76.cortex-a55"
BR2_BINFMT_SUPPORTS_SHARED=y
BR2_READELF_ARCH_NAME="AArch64"
BR2_ARM_CPU_HAS_FPU=y
BR2_ARM_CPU_HAS_VFPV2=y
BR2_ARM_CPU_HAS_VFPV3=y
BR2_ARM_CPU_HAS_VFPV4=y
BR2_ARM_CPU_HAS_FP_ARMV8=y
BR2_ARM_CPU_ARMV8A=y
BR2_cortex_a76_a55=y
BR2_ARM_FPU_FP_ARMV8=y
BR2_ARM64_PAGE_SIZE_4K=y
BR2_ARM64_PAGE_SIZE="4K"
BR2_BINFMT_ELF=y
BR2_TOOLCHAIN=y
BR2_TOOLCHAIN_USES_GLIBC=y
BR2_TOOLCHAIN_BUILDROOT=y
BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot"
BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
BR2_TOOLCHAIN_BUILDROOT_LIBC="glibc"
BR2_KERNEL_HEADERS_AS_KERNEL=y
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_7=y
BR2_PACKAGE_LINUX_HEADERS=y
BR2_PACKAGE_MUSL_ARCH_SUPPORTS=y
BR2_PACKAGE_MUSL_SUPPORTS=y
BR2_PACKAGE_UCLIBC_ARCH_SUPPORTS=y
BR2_PACKAGE_UCLIBC_SUPPORTS=y
BR2_PACKAGE_GLIBC_ARCH_SUPPORTS=y
BR2_PACKAGE_GLIBC_SUPPORTS=y
BR2_PACKAGE_GLIBC=y
BR2_PACKAGE_GLIBC_UTILS=y
BR2_PACKAGE_HOST_BINUTILS_SUPPORTS_CFI=y
BR2_BINUTILS_VERSION_2_42_X=y
BR2_BINUTILS_VERSION="2.42"
BR2_BINUTILS_EXTRA_CONFIG_OPTIONS=""
BR2_GCC_VERSION_13_X=y
BR2_GCC_VERSION="13.3.0"
BR2_EXTRA_GCC_CONFIG_OPTIONS=""
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_PACKAGE_GCC_FINAL=y
BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS=y
BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS=y
BR2_TOOLCHAIN_SUPPORTS_VARIADIC_MI_THUNK=y
BR2_USE_WCHAR=y
BR2_ENABLE_LOCALE=y
BR2_INSTALL_LIBSTDCPP=y
BR2_TOOLCHAIN_HAS_THREADS=y
BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y
BR2_TOOLCHAIN_HAS_THREADS_NPTL=y
BR2_TOOLCHAIN_HAS_SSP=y
BR2_TOOLCHAIN_HAS_SSP_STRONG=y
BR2_TOOLCHAIN_HAS_UCONTEXT=y
BR2_TOOLCHAIN_SUPPORTS_PIE=y
BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY=y
BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_LIST=""
BR2_TOOLCHAIN_EXTRA_LIBS=""
BR2_TOOLCHAIN_HAS_FULL_GETTEXT=y
BR2_TARGET_OPTIMIZATION=""
BR2_TARGET_LDFLAGS=""
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_11=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_13=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_16=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_17=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_18=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_19=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_0=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_1=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_2=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_3=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_4=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_5=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_6=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_7=y
BR2_TOOLCHAIN_HEADERS_AT_LEAST="6.7"
BR2_TOOLCHAIN_GCC_AT_LEAST_4_3=y
BR2_TOOLCHAIN_GCC_AT_LEAST_4_4=y
BR2_TOOLCHAIN_GCC_AT_LEAST_4_5=y
BR2_TOOLCHAIN_GCC_AT_LEAST_4_6=y
BR2_TOOLCHAIN_GCC_AT_LEAST_4_7=y
BR2_TOOLCHAIN_GCC_AT_LEAST_4_8=y
BR2_TOOLCHAIN_GCC_AT_LEAST_4_9=y
BR2_TOOLCHAIN_GCC_AT_LEAST_5=y
BR2_TOOLCHAIN_GCC_AT_LEAST_6=y
BR2_TOOLCHAIN_GCC_AT_LEAST_7=y
BR2_TOOLCHAIN_GCC_AT_LEAST_8=y
BR2_TOOLCHAIN_GCC_AT_LEAST_9=y
BR2_TOOLCHAIN_GCC_AT_LEAST_10=y
BR2_TOOLCHAIN_GCC_AT_LEAST_11=y
BR2_TOOLCHAIN_GCC_AT_LEAST_12=y
BR2_TOOLCHAIN_GCC_AT_LEAST_13=y
BR2_TOOLCHAIN_GCC_AT_LEAST="13"
BR2_TOOLCHAIN_HAS_MNAN_OPTION=y
BR2_TOOLCHAIN_HAS_SYNC_1=y
BR2_TOOLCHAIN_HAS_SYNC_2=y
BR2_TOOLCHAIN_HAS_SYNC_4=y
BR2_TOOLCHAIN_HAS_SYNC_8=y
BR2_TOOLCHAIN_HAS_LIBATOMIC=y
BR2_TOOLCHAIN_HAS_ATOMIC=y
BR2_CURL="curl -q --ftp-pasv --retry 3"
BR2_WGET="wget -nd -t 3"
BR2_SVN="svn --non-interactive"
BR2_BZR="bzr"
BR2_GIT="git"
BR2_CVS="cvs"
BR2_LOCALFILES="cp"
BR2_SCP="scp"
BR2_SFTP="sftp"
BR2_HG="hg"
BR2_ZCAT="gzip -d -c"
BR2_BZCAT="bzcat"
BR2_XZCAT="xzcat"
BR2_LZCAT="lzip -d -c"
BR2_ZSTDCAT="zstdcat"
BR2_TAR_OPTIONS=""
BR2_DEFCONFIG="/home/tyano/workspace/buildroot/rockchip/rk3399/buildroot/configs/rock4cp_defconfig"
BR2_DL_DIR="$(TOPDIR)/dl"
BR2_HOST_DIR="$(BASE_DIR)/host"
BR2_PRIMARY_SITE=""
BR2_BACKUP_SITE="https://sources.buildroot.net"
BR2_KERNEL_MIRROR="https://cdn.kernel.org/pub"
BR2_GNU_MIRROR="https://ftpmirror.gnu.org"
BR2_LUAROCKS_MIRROR="http://rocks.moonscript.org"
BR2_CPAN_MIRROR="https://cpan.metacpan.org"
BR2_JLEVEL=0
BR2_STRIP_strip=y
BR2_STRIP_EXCLUDE_FILES=""
BR2_STRIP_EXCLUDE_DIRS=""
BR2_OPTIMIZE_2=y
BR2_SHARED_LIBS=y
BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk"
BR2_GLOBAL_PATCH_DIR="board/radxa/rock4cp/patches"
BR2_DOWNLOAD_FORCE_CHECK_HASHES=y
BR2_PIC_PIE_ARCH_SUPPORTS=y
BR2_PIC_PIE=y
BR2_SSP_STRONG=y
BR2_SSP_OPTION="-fstack-protector-strong"
BR2_RELRO_FULL=y
BR2_FORTIFY_SOURCE_ARCH_SUPPORTS=y
BR2_FORTIFY_SOURCE_1=y
BR2_ROOTFS_SKELETON_DEFAULT=y
BR2_TARGET_GENERIC_HOSTNAME="rock4cp"
BR2_TARGET_GENERIC_ISSUE="Welcome to the rock4c+ board"
BR2_TARGET_GENERIC_PASSWD_SHA256=y
BR2_TARGET_GENERIC_PASSWD_METHOD="sha-256"
BR2_INIT_BUSYBOX=y
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt"
BR2_ROOTFS_MERGED_USR=y
BR2_TARGET_ENABLE_ROOT_LOGIN=y
BR2_TARGET_GENERIC_ROOT_PASSWD=""
BR2_SYSTEM_BIN_SH_BUSYBOX=y
BR2_TARGET_GENERIC_GETTY=y
BR2_TARGET_GENERIC_GETTY_PORT="console"
BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP=y
BR2_TARGET_GENERIC_GETTY_BAUDRATE="0"
BR2_TARGET_GENERIC_GETTY_TERM="vt100"
BR2_TARGET_GENERIC_GETTY_OPTIONS=""
BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y
BR2_SYSTEM_DHCP="eth0"
BR2_SYSTEM_DEFAULT_PATH="/bin:/sbin:/usr/bin:/usr/sbin"
BR2_ENABLE_LOCALE_PURGE=y
BR2_ENABLE_LOCALE_WHITELIST="C en_US"
BR2_GENERATE_LOCALE=""
BR2_ROOTFS_USERS_TABLES=""
BR2_ROOTFS_OVERLAY="board/radxa/rock4cp/overlay/"
BR2_ROOTFS_PRE_BUILD_SCRIPT=""
BR2_ROOTFS_POST_BUILD_SCRIPT="board/radxa/rock4cp/post-build.sh"
BR2_ROOTFS_POST_FAKEROOT_SCRIPT=""
BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh"
BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/radxa/rock4cp/genimage.cfg"
BR2_ROOTFS_POST_BUILD_SCRIPT_ARGS=""
BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS=""
BR2_LINUX_KERNEL=y
BR2_LINUX_NEEDS_MODULES=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.7.4"
BR2_LINUX_KERNEL_VERSION="6.7.4"
BR2_LINUX_KERNEL_PATCH=""
BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/radxa/rock4cp/linux.fragment"
BR2_LINUX_KERNEL_CUSTOM_LOGO_PATH=""
BR2_LINUX_KERNEL_IMAGE=y
BR2_LINUX_KERNEL_GZIP=y
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="rockchip/rk3399-rock-4c-plus"
BR2_LINUX_KERNEL_CUSTOM_DTS_PATH=""
BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT=y
BR2_LINUX_KERNEL_INSTALL_TARGET=y
BR2_PACKAGE_BUSYBOX=y
BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config"
BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES=""
BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
BR2_PACKAGE_SKELETON=y
BR2_PACKAGE_HAS_SKELETON=y
BR2_PACKAGE_PROVIDES_SKELETON="skeleton-init-sysv"
BR2_PACKAGE_SKELETON_INIT_COMMON=y
BR2_PACKAGE_SKELETON_INIT_SYSV=y
BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS=y
BR2_PACKAGE_KODI_ARCH_SUPPORTS=y
BR2_PACKAGE_MPV_SUPPORTS_VAAPI=y
BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC=y
BR2_PACKAGE_GZIP=y
BR2_PACKAGE_XZ=y
BR2_PACKAGE_ZIP=y
BR2_PACKAGE_BPFTOOL_ARCH_SUPPORTS=y
BR2_PACKAGE_BPFTRACE_ARCH_SUPPORTS=y
BR2_PACKAGE_DELVE_ARCH_SUPPORTS=y
BR2_PACKAGE_FWTS_ARCH_SUPPORTS=y
BR2_PACKAGE_GDB_ARCH_SUPPORTS=y
BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y
BR2_PACKAGE_KEXEC_ARCH_SUPPORTS=y
BR2_PACKAGE_KVM_UNIT_TESTS_ARCH_SUPPORTS=y
BR2_PACKAGE_LTP_TESTSUITE_ARCH_SUPPORTS=y
BR2_PACKAGE_LTRACE_ARCH_SUPPORTS=y
BR2_PACKAGE_OPROFILE_ARCH_SUPPORTS=y
BR2_PACKAGE_PERFTEST_ARCH_SUPPORTS=y
BR2_PACKAGE_PLY_ARCH_SUPPORTS=y
BR2_PACKAGE_PTM2HUMAN_ARCH_SUPPORTS=y
BR2_PACKAGE_TCF_AGENT_ARCH="a64"
BR2_PACKAGE_TCF_AGENT_ARCH_SUPPORTS=y
BR2_PACKAGE_TRINITY_ARCH_SUPPORTS=y
BR2_PACKAGE_UFTRACE_ARCH_SUPPORTS=y
BR2_PACKAGE_VALGRIND_ARCH_SUPPORTS=y
BR2_PACKAGE_CMAKE_ARCH_SUPPORTS=y
BR2_PACKAGE_PROVIDES_HOST_GETTEXT="host-gettext-tiny"
BR2_PACKAGE_NETSURF_ARCH_SUPPORTS=y
BR2_PACKAGE_DIRECTFB=y
BR2_PACKAGE_DIRECTFB_DEBUG_SUPPORT=y
BR2_PACKAGE_DIRECTFB_LINUXINPUT=y
BR2_PACKAGE_DIRECTFB_KEYBOARD=y
BR2_PACKAGE_DIRECTFB_PS2MOUSE=y
BR2_PACKAGE_DIRECTFB_SERIALMOUSE=y
BR2_PACKAGE_DIRECTFB_TSLIB=y
BR2_PACKAGE_DIRECTFB_GIF=y
BR2_PACKAGE_DIRECTFB_JPEG=y
BR2_PACKAGE_DIRECTFB_PNG=y
BR2_PACKAGE_DIRECTFB_SVG=y
BR2_PACKAGE_LINUX_FUSION=y
BR2_PACKAGE_MESA3D=y
BR2_PACKAGE_QT5_JSCORE_AVAILABLE=y
BR2_PACKAGE_QT6_ARCH_SUPPORTS=y
BR2_PACKAGE_XORG7=y
BR2_PACKAGE_XSERVER_XORG_SERVER=y
BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR=y
BR2_PACKAGE_LIBXCB=y
BR2_PACKAGE_XCB_UTIL=y
BR2_PACKAGE_XCB_UTIL_CURSOR=y
BR2_PACKAGE_XCB_UTIL_IMAGE=y
BR2_PACKAGE_XCB_UTIL_KEYSYMS=y
BR2_PACKAGE_XCB_UTIL_RENDERUTIL=y
BR2_PACKAGE_XLIB_LIBICE=y
BR2_PACKAGE_XLIB_LIBSM=y
BR2_PACKAGE_XLIB_LIBX11=y
BR2_PACKAGE_XLIB_LIBXAU=y
BR2_PACKAGE_XLIB_LIBXAW=y
BR2_PACKAGE_XLIB_LIBXCURSOR=y
BR2_PACKAGE_XLIB_LIBXDAMAGE=y
BR2_PACKAGE_XLIB_LIBXDMCP=y
BR2_PACKAGE_XLIB_LIBXEXT=y
BR2_PACKAGE_XLIB_LIBXFIXES=y
BR2_PACKAGE_XLIB_LIBXFONT2=y
BR2_PACKAGE_XLIB_LIBXFT=y
BR2_PACKAGE_XLIB_LIBXI=y
BR2_PACKAGE_XLIB_LIBXINERAMA=y
BR2_PACKAGE_XLIB_LIBXMU=y
BR2_PACKAGE_XLIB_LIBXPM=y
BR2_PACKAGE_XLIB_LIBXRANDR=y
BR2_PACKAGE_XLIB_LIBXRENDER=y
BR2_PACKAGE_XLIB_LIBXRES=y
BR2_PACKAGE_XLIB_LIBXT=y
BR2_PACKAGE_XLIB_LIBXXF86VM=y
BR2_PACKAGE_XLIB_LIBFONTENC=y
BR2_PACKAGE_XLIB_LIBXCVT=y
BR2_PACKAGE_XLIB_LIBXKBFILE=y
BR2_PACKAGE_XLIB_LIBXSHMFENCE=y
BR2_PACKAGE_XLIB_XTRANS=y
BR2_PACKAGE_XAPP_TWM=y
BR2_PACKAGE_XAPP_XAUTH=y
BR2_PACKAGE_XAPP_XCLOCK=y
BR2_PACKAGE_XAPP_XEYES=y
BR2_PACKAGE_XAPP_XHOST=y
BR2_PACKAGE_XAPP_XINIT=y
BR2_PACKAGE_XAPP_XINPUT=y
BR2_PACKAGE_XAPP_XKBCOMP=y
BR2_PACKAGE_XAPP_XKILL=y
BR2_PACKAGE_XDRIVER_XF86_INPUT_EVDEV=y
BR2_PACKAGE_XDRIVER_XF86_INPUT_LIBINPUT=y
BR2_PACKAGE_XDRIVER_XF86_INPUT_MOUSE=y
BR2_PACKAGE_XDRIVER_XF86_VIDEO_FBDEV=y
BR2_PACKAGE_XDRIVER_XF86_VIDEO_VESA=y
BR2_PACKAGE_XFONT_FONT_UTIL=y
BR2_PACKAGE_XFONT_ENCODINGS=y
BR2_PACKAGE_XFONT_FONT_ALIAS=y
BR2_PACKAGE_XFONT_FONT_CURSOR_MISC=y
BR2_PACKAGE_XFONT_FONT_MISC_MISC=y
BR2_PACKAGE_XCB_PROTO=y
BR2_PACKAGE_XORGPROTO=y
BR2_PACKAGE_MCOOKIE=y
BR2_PACKAGE_XDATA_XBITMAPS=y
BR2_PACKAGE_XTERM=y
BR2_PACKAGE_XKEYBOARD_CONFIG=y
BR2_PACKAGE_LINUX_FIRMWARE=y
BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y
BR2_PACKAGE_ACPID=y
BR2_PACKAGE_DBUS=y
BR2_PACKAGE_EUDEV=y
BR2_PACKAGE_PROVIDES_UDEV="eudev"
BR2_PACKAGE_EUDEV_MODULE_LOADING=y
BR2_PACKAGE_EUDEV_ENABLE_HWDB=y
BR2_PACKAGE_EVTEST=y
BR2_PACKAGE_FLASHROM_ARCH_SUPPORTS=y
BR2_PACKAGE_MDEVD=y
BR2_PACKAGE_ROCKCHIP_RKBIN=y
BR2_PACKAGE_ROCKCHIP_RKBIN_TPL_FILENAME="bin/rk33/rk3399_ddr_933MHz_v1.30.bin"
BR2_PACKAGE_ROCKCHIP_RKBIN_BL31_FILENAME="bin/rk33/rk3399_bl31_v1.36.elf"
BR2_PACKAGE_ROCKCHIP_RKBIN_TEE_FILENAME=""
BR2_PACKAGE_SEDUTIL_ARCH_SUPPORTS=y
BR2_PACKAGE_HAS_UDEV=y
BR2_PACKAGE_HOST_ERLANG_ARCH_SUPPORTS=y
BR2_PACKAGE_ERLANG_ARCH_SUPPORTS=y
BR2_PACKAGE_PROVIDES_HOST_LUAINTERPRETER="host-lua"
BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS=y
BR2_PACKAGE_HOST_MONO_ARCH_SUPPORTS=y
BR2_PACKAGE_MONO_ARCH_SUPPORTS=y
BR2_PACKAGE_NODEJS_ARCH_SUPPORTS=y
BR2_PACKAGE_HOST_OPENJDK_BIN_ARCH_SUPPORTS=y
BR2_PACKAGE_OPENJDK_ARCH_SUPPORTS=y
BR2_PACKAGE_PHP_ARCH_SUPPORTS=y
BR2_PACKAGE_SWIPL_ARCH_SUPPORTS=y
BR2_PACKAGE_FDK_AAC_ARCH_SUPPORTS=y
BR2_PACKAGE_GTKIOSTREAM_ARCH_SUPPORTS=y
BR2_PACKAGE_OPENAL_ARCH_SUPPORTS=y
BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS=y
BR2_PACKAGE_LIBZIP=y
BR2_PACKAGE_ZLIB_NG_ARCH_SUPPORTS=y
BR2_PACKAGE_ZLIB=y
BR2_PACKAGE_LIBZLIB=y
BR2_PACKAGE_HAS_ZLIB=y
BR2_PACKAGE_PROVIDES_ZLIB="libzlib"
BR2_PACKAGE_PROVIDES_HOST_ZLIB="host-libzlib"
BR2_PACKAGE_BOTAN_ARCH_SUPPORTS=y
BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS=y
BR2_PACKAGE_LIBGPG_ERROR_SYSCFG="aarch64-unknown-linux-gnu"
BR2_PACKAGE_LIBSHA1=y
BR2_PACKAGE_LIBSPDM_CPU_FAMILY="aarch64"
BR2_PACKAGE_LIBSPDM_ARCH_SUPPORTS=y
BR2_PACKAGE_LIBRESSL_ARCH_SUPPORTS=y
BR2_PACKAGE_PROVIDES_HOST_OPENSSL="host-libopenssl"
BR2_PACKAGE_WOLFSSL_ASM_SUPPORTS=y
BR2_PACKAGE_MONGODB_ARCH_SUPPORTS=y
BR2_PACKAGE_ROCKSDB_ARCH_SUPPORTS=y
BR2_PACKAGE_BAYER2RGB_NEON_ARCH_SUPPORTS=y
BR2_PACKAGE_CAIRO=y
BR2_PACKAGE_CAIRO_PNG=y
BR2_PACKAGE_FLUTTER_ENGINE_ARCH_SUPPORTS=y
BR2_PACKAGE_FONTCONFIG=y
BR2_PACKAGE_FREETYPE=y
BR2_PACKAGE_JPEG_SIMD_SUPPORT=y
BR2_PACKAGE_JPEG=y
BR2_PACKAGE_JPEG_TURBO=y
BR2_PACKAGE_HAS_JPEG=y
BR2_PACKAGE_PROVIDES_JPEG="jpeg-turbo"
BR2_PACKAGE_LIBDRM=y
BR2_PACKAGE_LIBDRM_HAS_ATOMIC=y
BR2_PACKAGE_LIBPNG=y
BR2_PACKAGE_LIBSVG=y
BR2_PACKAGE_LIBSVG_CAIRO=y
BR2_PACKAGE_LIBVPL_ARCH_SUPPORTS=y
BR2_PACKAGE_PIXMAN=y
BR2_PACKAGE_WEBKITGTK_ARCH_SUPPORTS=y
BR2_PACKAGE_WEBP=y
BR2_PACKAGE_WPEWEBKIT_ARCH_SUPPORTS=y
BR2_PACKAGE_GNU_EFI_ARCH_SUPPORTS=y
BR2_PACKAGE_LIBINPUT=y
BR2_PACKAGE_LIBPCIACCESS=y
BR2_PACKAGE_MRAA_ARCH_SUPPORTS=y
BR2_PACKAGE_MTDEV=y
BR2_PACKAGE_NE10_ARCH_SUPPORTS=y
BR2_PACKAGE_OPENCSD_ARCH_SUPPORTS=y
BR2_PACKAGE_TSLIB=y
BR2_PACKAGE_EXPAT=y
BR2_PACKAGE_LIBCAMERA_ARCH_SUPPORTS=y
BR2_PACKAGE_LIBOPENH264_ARCH_SUPPORTS=y
BR2_PACKAGE_DPDK_ARCH_SUPPORTS=y
BR2_PACKAGE_LIBZENOH_C_ARCH_SUPPORTS=y
BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS=y
BR2_PACKAGE_JEMALLOC_ARCH_SUPPORTS=y
BR2_PACKAGE_LAPACK_ARCH_SUPPORTS=y
BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS=y
BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS=y
BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS=y
BR2_PACKAGE_LIBEASTL_ARCH_SUPPORTS=y
BR2_PACKAGE_LIBEVDEV=y
BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y
BR2_PACKAGE_LIBPTHREAD_STUBS=y
BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS=y
BR2_PACKAGE_LIBSIGSEGV_ARCH_SUPPORTS=y
BR2_PACKAGE_LIBUNWIND_ARCH_SUPPORTS=y
BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS=y
BR2_PACKAGE_LLVM_ARCH_SUPPORTS=y
BR2_PACKAGE_LLVM_TARGET_ARCH="AArch64"
BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET="ARMV8"
BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS=y
BR2_PACKAGE_POCO_ARCH_SUPPORTS=y
BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS=y
BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS=y
BR2_PACKAGE_SKALIBS=y
BR2_PACKAGE_NCURSES=y
BR2_PACKAGE_NCURSES_WCHAR=y
BR2_PACKAGE_NCURSES_ADDITIONAL_TERMINFO=""
BR2_PACKAGE_BITCOIN_ARCH_SUPPORTS=y
BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET=y
BR2_PACKAGE_XMRIG_ARCH_SUPPORTS=y
BR2_PACKAGE_XUTIL_UTIL_MACROS=y
BR2_PACKAGE_Z3_ARCH_SUPPORTS=y
BR2_PACKAGE_HAPROXY_ARCH_SUPPORTS=y
BR2_PACKAGE_IFUPDOWN_SCRIPTS=y
BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS=y
BR2_PACKAGE_URANDOM_SCRIPTS=y
BR2_PACKAGE_GNUPG2_DEPENDS=y
BR2_PACKAGE_AUDIT_ARCH_SUPPORTS=y
BR2_PACKAGE_CRIU_ARCH_SUPPORTS=y
BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS=y
BR2_PACKAGE_INITSCRIPTS=y
BR2_PACKAGE_KMOD=y
BR2_PACKAGE_LIBVIRT_ARCH_SUPPORTS=y
BR2_PACKAGE_MAKEDUMPFILE_ARCH_SUPPORTS=y
BR2_PACKAGE_OPENVMTOOLS_ARCH_SUPPORTS=y
BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y
BR2_PACKAGE_SYSTEMD_BOOTCHART_ARCH_SUPPORTS=y
BR2_PACKAGE_UTIL_LINUX=y
BR2_PACKAGE_UTIL_LINUX_LIBS=y
BR2_PACKAGE_UTIL_LINUX_LIBBLKID=y
BR2_PACKAGE_UTIL_LINUX_LIBUUID=y
BR2_PACKAGE_XVISOR_ARCH_SUPPORTS=y
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
BR2_TARGET_ROOTFS_EXT2_GEN=4
BR2_TARGET_ROOTFS_EXT2_REV=1
BR2_TARGET_ROOTFS_EXT2_LABEL="rootfs"
BR2_TARGET_ROOTFS_EXT2_SIZE="256M"
BR2_TARGET_ROOTFS_EXT2_INODES=0
BR2_TARGET_ROOTFS_EXT2_INODE_SIZE=256
BR2_TARGET_ROOTFS_EXT2_RESBLKS=5
BR2_TARGET_ROOTFS_EXT2_MKFS_OPTIONS="-O ^64bit"
BR2_TARGET_ROOTFS_EXT2_NONE=y
BR2_TARGET_ROOTFS_TAR=y
BR2_TARGET_ROOTFS_TAR_NONE=y
BR2_TARGET_ROOTFS_TAR_OPTIONS=""
BR2_TARGET_EDK2_ARCH_SUPPORTS=y
BR2_TARGET_GRUB2_ARCH_SUPPORTS=y
BR2_PACKAGE_SHIM_ARCH_SUPPORTS=y
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
BR2_TARGET_UBOOT_CUSTOM_VERSION=y
BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01"
BR2_TARGET_UBOOT_VERSION="2024.01"
BR2_TARGET_UBOOT_PATCH=""
BR2_TARGET_UBOOT_USE_DEFCONFIG=y
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rock-4c-plus-rk3399"
BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES=""
BR2_TARGET_UBOOT_DEFAULT_ENV_FILE=""
BR2_TARGET_UBOOT_NEEDS_PYTHON3=y
BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y
BR2_TARGET_UBOOT_NEEDS_PYELFTOOLS=y
BR2_TARGET_UBOOT_NEEDS_OPENSSL=y
BR2_TARGET_UBOOT_NEEDS_ROCKCHIP_RKBIN=y
BR2_TARGET_UBOOT_FORMAT_BIN=y
BR2_TARGET_UBOOT_CUSTOM_DTS_PATH=""
BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS=""
BR2_PACKAGE_HOST_ARM_GNU_TOOLCHAIN_SUPPORTS=y
BR2_HOST_CMAKE_AT_LEAST="3.18"
BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_DTC=y
BR2_PACKAGE_HOST_E2FSPROGS=y
BR2_PACKAGE_HOST_EUDEV=y
BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS=y
BR2_PACKAGE_HOST_GENIMAGE=y
BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS=y
BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS=y
BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS=y
BR2_PACKAGE_HOST_GO_HOST_CGO_LINKING_SUPPORTS=y
BR2_PACKAGE_PROVIDES_HOST_GO="host-go-bin"
BR2_PACKAGE_HOST_GO_BIN_HOST_ARCH="amd64"
BR2_PACKAGE_HOST_GO_BIN_HOST_ARCH_SUPPORTS=y
BR2_PACKAGE_HOST_GO_BOOTSTRAP_STAGE1_ARCH_SUPPORTS=y
BR2_PACKAGE_HOST_GO_BOOTSTRAP_STAGE2_ARCH_SUPPORTS=y
BR2_PACKAGE_HOST_GO_BOOTSTRAP_STAGE3_ARCH_SUPPORTS=y
BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y
BR2_PACKAGE_HOST_KMOD=y
BR2_PACKAGE_HOST_MTOOLS=y
BR2_PACKAGE_HOST_NODEJS_BIN_ARCH_SUPPORTS=y
BR2_PACKAGE_PROVIDES_HOST_NODEJS="host-nodejs-bin"
BR2_PACKAGE_HOST_PATCHELF=y
BR2_PACKAGE_HOST_QEMU_ARCH_SUPPORTS=y
BR2_PACKAGE_HOST_QEMU_SYSTEM_ARCH_SUPPORTS=y
BR2_PACKAGE_HOST_QEMU_USER_ARCH_SUPPORTS=y
BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS=y
BR2_PACKAGE_HOST_RUSTC_TARGET_TIER1_PLATFORMS=y
BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS=y
BR2_PACKAGE_HOST_RUSTC_ARCH="aarch64"
BR2_PACKAGE_PROVIDES_HOST_RUSTC="host-rust-bin"
BR2_PACKAGE_HOST_UTIL_LINUX=y
BR2_PACKAGE_IPMITOOL_PEN_REG_URI=""
BR2_PACKAGE_WATCHDOGD_GENERIC_POLL=0
BR2_PACKAGE_WATCHDOGD_LOADAVG_POLL=0
BR2_PACKAGE_WATCHDOGD_FILENR_POLL=0
BR2_PACKAGE_WATCHDOGD_MEMINFO_POLL=0
BR2_PACKAGE_QEMU_CUSTOM_TARGETS=""
BR2_TARGET_ROOTFS_OCI_ENTRYPOINT_ARGS=""
BR2_TARGET_GRUB2_BUILTIN_MODULES=""
BR2_TARGET_GRUB2_BUILTIN_CONFIG=""
BR2_PACKAGE_REFPOLICY_POLICY_VERSION=""
BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS=""
BR2_XTENSA_OVERLAY_DIR=""
BR2_XTENSA_CUSTOM_NAME=""
BR2_TARGET_ROOTFS_EXT2_BLOCKS=0
BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES=0
BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS=0
BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR=""
24/12/18追記
qemuのvirtで動作確認出来ました。
使用した起動コマンドは以下です。
sudo qemu-system-aarch64 -M virt -cpu cortex-a710 -m 2048 -kernel output/images/Image -device virtio-gpu -display gtk,show-cursor=on -append "root=/dev/vda console=ttyS0" -drive if=pflash,format=raw,file=efi.img,readonly=on -drive if=pflash,format=raw,file=varstore.img -drive file=./output/images/rootfs.ext2,if=virtio,format=raw -netdev tap,ifname=tap0,script=no,downscript=no,id=my_net_id -device driver=virtio-net,netdev=my_net_id -device qemu-xhci -serial stdio -device usb-mouse -device usb-kbd -device usb-tablet -vnc :0
varstore.imgとefi.imgは以下です。
ubuntuだとQEMU_EFI.fdのインストール場所は変わると思いますが
edk2のインストール先にあると思います。
truncate -s 64m varstore.img
truncate -s 64m efi.img
dd if=/usr/share/edk2/aarch64/QEMU_EFI.fd of=efi.img conv=notrunc
-device usb-tablet
を追加しないとマウスがプルプルしました。
カーネルのコンフィギュレーションで
CONFIG_DRM_VIRTIO_GPU
を有効にして
xorg.confを以下のようにする必要がありました。(ボード名はmenuconfigしたものに変更する)
$ cat board/radxa/rock4cp/overlay/etc/X11/xorg.conf
Section "InputClass"
Identifier "Mouse"
MatchIsPointer "yes"
Driver "libinput"
EndSection
Section "InputClass"
Identifier "Keyboard"
MatchIsKeyboard "yes"
Driver "libinput"
EndSection
Section "Device"
Identifier "Device0"
Driver "modesetting"
EndSection
Section "Monitor"
Identifier "Monitor0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1024x768"
EndSubSection
EndSection