QtでmacOSのUniversal Binary版をビルドする
えっと、macOSでUniversal Binary版をビルドするように変更したのでその説明をしてみようと思います。
- x64用とarm64用のソースコードを一度に指定する必要があるのでx64専用のソースコードはマクロ"__x86_64__"が定義されたときのみ、arm64専用のソースコードはマクロ"__aarch64__"が定義されたときのみ有効になるように変更
- ライブラリ名がx64とarm64で同じだとまずいのでlibvpx_x64.a/libcelt_x64.a、libvpx_arm64.a/libcelt_arm64.aと別名に変更
- qtbrynhildr.proで"QMAKE_APPLE_DEVICE_ARCHS = x86_64 arm64"と指定し、configにmacos-x64/macos-arm64を両方指定する
以下が修正差分です。
diff --git a/src/graphicsthread/decoder_vp8_avx.cpp b/src/graphicsthread/decoder_vp8_avx.cpp
index fce2bd69..a3c614ee 100644
--- a/src/graphicsthread/decoder_vp8_avx.cpp
+++ b/src/graphicsthread/decoder_vp8_avx.cpp
@@ -1,5 +1,6 @@
// -*- mode: c++; coding: utf-8-unix -*-
// Copyright (c) 2020- FunFun <fu.aba.dc5@gmail.com>
+#if defined(__x86_64__) // for Universal Binary
// Common Header
#include "common/common.h"
@@ -58,3 +59,5 @@ QImage* DecoderVP8AVX::getDesktopImage(int numOfThread)
}
} // end of namespace qtbrynhildr
+
+#endif // defined(__x86_64__) // for Universal Binary
diff --git a/src/graphicsthread/decoder_vp8_avx2.cpp b/src/graphicsthread/decoder_vp8_avx2.cpp
index 1941e794..71c77120 100644
--- a/src/graphicsthread/decoder_vp8_avx2.cpp
+++ b/src/graphicsthread/decoder_vp8_avx2.cpp
@@ -1,5 +1,6 @@
// -*- mode: c++; coding: utf-8-unix -*-
// Copyright (c) 2020- FunFun <fu.aba.dc5@gmail.com>
+#if defined(__x86_64__) // for Universal Binary
// Common Header
#include "common/common.h"
@@ -58,3 +59,5 @@ QImage* DecoderVP8AVX2::getDesktopImage(int numOfThread)
}
} // end of namespace qtbrynhildr
+
+#endif // defined(__x86_64__) // for Universal Binary
diff --git a/src/graphicsthread/decoder_vp8_neon.cpp b/src/graphicsthread/decoder_vp8_neon.cpp
index 5db4eda4..cb09f966 100644
--- a/src/graphicsthread/decoder_vp8_neon.cpp
+++ b/src/graphicsthread/decoder_vp8_neon.cpp
@@ -1,5 +1,6 @@
// -*- mode: c++; coding: utf-8-unix -*-
// Copyright (c) 2020- FunFun <fu.aba.dc5@gmail.com>
+#if defined(__aarch64__) // for Universal Binary
// Common Header
#include "common/common.h"
@@ -58,3 +59,5 @@ QImage* DecoderVP8NEON::getDesktopImage(int numOfThread)
}
} // end of namespace qtbrynhildr
+
+#endif // defined(__aarch64__)
diff --git a/src/graphicsthread/decoder_vp8_sse.cpp b/src/graphicsthread/decoder_vp8_sse.cpp
index e9070d22..e91403b2 100644
--- a/src/graphicsthread/decoder_vp8_sse.cpp
+++ b/src/graphicsthread/decoder_vp8_sse.cpp
@@ -1,5 +1,6 @@
// -*- mode: c++; coding: utf-8-unix -*-
// Copyright (c) 2020- FunFun <fu.aba.dc5@gmail.com>
+#if defined(__x86_64__) // for Universal Binary
// Common Header
#include "common/common.h"
@@ -58,3 +59,5 @@ QImage* DecoderVP8SSE::getDesktopImage(int numOfThread)
}
} // end of namespace qtbrynhildr
+
+#endif // defined(__x86_64__) // for Universal Binary
diff --git a/src/graphicsthread/yuv2rgb/yuv2rgb_avx.cpp b/src/graphicsthread/yuv2rgb/yuv2rgb_avx.cpp
index bffa2112..e5e8282b 100644
--- a/src/graphicsthread/yuv2rgb/yuv2rgb_avx.cpp
+++ b/src/graphicsthread/yuv2rgb/yuv2rgb_avx.cpp
@@ -1,5 +1,6 @@
// -*- mode: c++; coding: utf-8-unix -*-
// Copyright (c) 2018- FunFun <fu.aba.dc5@gmail.com>
+#if defined(__x86_64__) // for Universal Binary
// Common Header
#include "common/common.h"
@@ -515,3 +516,5 @@ void convertYUVtoRGB_SIMD_AVX_GSV(uchar *ytop, uchar* utop, uchar *vtop, uchar *
#endif // QTB_SIMD_SUPPORT
} // end of namespace qtbrynhildr
+
+#endif // defined(__x86_64__) // for Universal Binary
diff --git a/src/graphicsthread/yuv2rgb/yuv2rgb_sse.cpp b/src/graphicsthread/yuv2rgb/yuv2rgb_sse.cpp
index f674f316..177c5c78 100644
--- a/src/graphicsthread/yuv2rgb/yuv2rgb_sse.cpp
+++ b/src/graphicsthread/yuv2rgb/yuv2rgb_sse.cpp
@@ -1,5 +1,6 @@
// -*- mode: c++; coding: utf-8-unix -*-
// Copyright (c) 2018- FunFun <fu.aba.dc5@gmail.com>
+#if defined(__x86_64__) // for Universal Binary
// Common Header
#include "common/common.h"
@@ -906,3 +907,5 @@ void convertYUVtoRGB_SIMD_SSE_GSV(uchar *ytop, uchar* utop, uchar *vtop, uchar *
#endif // QTB_SIMD_SUPPORT
} // end of namespace qtbrynhildr
+
+#endif // defined(__x86_64__) // for Universal Binary
diff --git a/src/graphicsthread/yuv2rgb/yuv2rgb_sse_avx2.cpp b/src/graphicsthread/yuv2rgb/yuv2rgb_sse_avx2.cpp
index 0aaac5b9..a6372428 100644
--- a/src/graphicsthread/yuv2rgb/yuv2rgb_sse_avx2.cpp
+++ b/src/graphicsthread/yuv2rgb/yuv2rgb_sse_avx2.cpp
@@ -1,5 +1,6 @@
// -*- mode: c++; coding: utf-8-unix -*-
// Copyright (c) 2018- FunFun <fu.aba.dc5@gmail.com>
+#if defined(__x86_64__) // for Universal Binary
// Common Header
#include "common/common.h"
@@ -872,3 +873,5 @@ void convertYUVtoRGB_SIMD_AVX2_GSV(uchar *ytop, uchar* utop, uchar *vtop, uchar
#endif // QTB_SIMD_SUPPORT
} // end of namespace qtbrynhildr
+
+#endif // defined(__x86_64__) // for Universal Binary
diff --git a/src/pro/spec_celt.pro b/src/pro/spec_celt.pro
index 07a8ab54..faddf34b 100644
--- a/src/pro/spec_celt.pro
+++ b/src/pro/spec_celt.pro
@@ -9,3 +9,13 @@ celt {
else {
DEFINES += QTB_CELT_SUPPORT=0
}
+
+macos-x64 {
+ LIBS -= -L../libs/celt/$$BUILDARCH -lcelt
+ LIBS += -L../libs/celt/macos-x64 -lcelt_x64
+}
+
+macos-arm64 {
+ LIBS -= -L../libs/celt/$$BUILDARCH -lcelt
+ LIBS += -L../libs/celt/macos-arm64 -lcelt_arm64
+}
diff --git a/src/pro/spec_vp8.pro b/src/pro/spec_vp8.pro
index fde86aa7..4e2ff7ba 100644
--- a/src/pro/spec_vp8.pro
+++ b/src/pro/spec_vp8.pro
@@ -12,6 +12,16 @@ HEADERS += graphicsthread/decoder_vp8_cpp.h
SOURCES += graphicsthread/decoder_vp8_cpp.cpp
}
+macos-x64 {
+ LIBS -= -L../libs/vpx/$$BUILDARCH -lvpx
+ LIBS += -L../libs/vpx/macos-x64 -lvpx_x64
+}
+
+macos-arm64 {
+ LIBS -= -L../libs/vpx/$$BUILDARCH -lvpx
+ LIBS += -L../libs/vpx/macos-arm64 -lvpx_arm64
+}
+
# VP8-AVX2
vp8-avx2 {
SOURCES += graphicsthread/yuv2rgb/yuv2rgb_sse_avx2.cpp
diff --git a/src/qtbrynhildr.pro b/src/qtbrynhildr.pro
index 5a9d2856..edcd7c39 100644
--- a/src/qtbrynhildr.pro
+++ b/src/qtbrynhildr.pro
@@ -117,7 +117,8 @@ include (pro/os_freebsd.pro)
# ------------------------------------------------------------------------------
macx {
CONFIG += macos-x64
-#CONFIG += macos-arm64
+CONFIG += macos-arm64
+QMAKE_APPLE_DEVICE_ARCHS = x86_64 arm64
QMAKE_CXXFLAGS += -flto
}
include (pro/os_macos.pro)
« Qt Brynhildr on Mac (arm64) Ver.2.5.3 Beta (dmg) | トップページ | Ver.2.5.4 リリース »
コメント
« Qt Brynhildr on Mac (arm64) Ver.2.5.3 Beta (dmg) | トップページ | Ver.2.5.4 リリース »

Brynhildrを長年にわたり利用しています。
長時間の使用での目の負担を考えてE-Inkディスプレーで利用したく、Qt Brynhildrを使わせていただいています。
有用なアプリを配布していただきありがとうございます。
使用環境
デバイス:BOOX Note Air3 C 10インチ
OS:Android 12
要望です
① タッチパッド・インターフェースについて
タッチパット・インターフェースをどのタイプにしても、選択したエリアが帯状でタップを受け付けません。
左右タイプなら両端2センチ、上下タイプなら上下1センチの幅のどこをタップしても左クリックの操作になりません。
タップは、指でおこなってます。
一般的なAndroidタブレットを所有しいてないため、このデバイス特有の現象なのか分かりません。
割り切って、どのタイプも使わない選択肢を設けてもらうことは可能でしょうか。
その場合は、Windowsのタッチキーボードで対処するつもりです。現在、スクリーンキーボードの代わりに使ってます。
左右タイプだと右端のスクロールバーをクリックできない、上下タイプだとメニューバー、タスクバーをクリックできない、となっています。
今は下部中央タイプを使ってますが、下部1センチほどではタップできてません。
特殊?なデバイスのためどうしようもないのでしょうか?
ちなみに、
ファイルのドラッグ&ドロップはできたりできなかったりしてます。
付属のスタイラスペンではどこをタップしてもスタートメニューが表示されます。スタイラスペンでできることはこれだけです。
② Qt Brynhildrからの接続について
デスクトップPCで、サーバーモードのBrynhildrを「overload=1」の設定でサービスに登録して動作させていて、Qt Brynhildrと接続中に、クライアントモードのBrynhildrからは接続できるのですが、逆の場合ですと「サーバーとの接続にタイム・アウトしました!」となり、事前にノートPC(Windows)でBrynhildrを切断しておかなければなりません。
本家では、サーバーモードのBrynhildrを再起動させるとありますが、同じようにできないでしょうか。
ご検討のほどよろしくお願いします。
投稿: kamaboko | 2024年12月11日 (水) 23時08分
>kamabokoさん
体調不良のため、お返事遅れてしまいました、すみません。下記の件調査してみます。
①については可能かと思います、②について(overload ... 接続過多(0:無為,1:再起動)はちょっと作者のKANEKOさんに質問してみます。
>Brynhildrを長年にわたり利用しています。
>長時間の使用での目の負担を考えてE-Inkディスプレーで利用したく、Qt Brynhildrを使わせていただいています。
>有用なアプリを配布していただきありがとうございます。
>
>使用環境
>デバイス:BOOX Note Air3 C 10インチ
>OS:Android 12
>
>要望です
>① タッチパッド・インターフェースについて
>タッチパット・インターフェースをどのタイプにしても、選択したエリアが帯状でタップを受け付けません。
>左右タイプなら両端2センチ、上下タイプなら上下1センチの幅のどこをタップしても左クリックの操作になりません。
>タップは、指でおこなってます。
>一般的なAndroidタブレットを所有しいてないため、このデバイス特有の現象なのか分かりません。
>割り切って、どのタイプも使わない選択肢を設けてもらうことは可能でしょうか。
>その場合は、Windowsのタッチキーボードで対処するつもりです。現在、スクリーンキーボードの代わりに使ってます。
>左右タイプだと右端のスクロールバーをクリックできない、上下タイプだとメニューバー、タスクバーをクリックできない、となっています。
>今は下部中央タイプを使ってますが、下部1センチほどではタップできてません。
>特殊?なデバイスのためどうしようもないのでしょうか?
>
>ちなみに、
>ファイルのドラッグ&ドロップはできたりできなかったりしてます。
>付属のスタイラスペンではどこをタップしてもスタートメニューが表示されます。スタイラスペンでできることはこれだけです。
>
>② Qt Brynhildrからの接続について
>デスクトップPCで、サーバーモードのBrynhildrを「overload=1」の設定でサービスに登録して動作させていて、Qt Brynhildrと接続中に、クライアントモードのBrynhildrからは接続できるのですが、逆の場合ですと「サーバーとの接続にタイム・アウトしました!」となり、事前にノートPC(Windows)でBrynhildrを切断しておかなければなりません。
>本家では、サーバーモードのBrynhildrを再起動させるとありますが、同じようにできないでしょうか。
>
>ご検討のほどよろしくお願いします。
>
投稿: ふんふん | 2025年3月17日 (月) 19時34分