« 2024年9月 | トップページ | 2025年4月 »

2024年10月

2024年10月29日 (火)

QtでmacOSのUniversal Binary版をビルドする

えっと、macOSでUniversal Binary版をビルドするように変更したのでその説明をしてみようと思います。

  1. x64用とarm64用のソースコードを一度に指定する必要があるのでx64専用のソースコードはマクロ"__x86_64__"が定義されたときのみ、arm64専用のソースコードはマクロ"__aarch64__"が定義されたときのみ有効になるように変更
  2. ライブラリ名がx64とarm64で同じだとまずいのでlibvpx_x64.a/libcelt_x64.a、libvpx_arm64.a/libcelt_arm64.aと別名に変更
  3. 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)

2024年10月17日 (木)

Qt Brynhildr on Mac (arm64) Ver.2.5.3 Beta (dmg)

M1/M2/M3 (arm64) 用のbeta版パッケージを手動で作りました、Qt6.7.3で。x64版に比べてパッケージサイズが大きいのはUniversal Binary版のQtライブラリを同梱しているためだと思います。動作確認はM3 Mac Book Airで行いました。

将来的にはUniversal Binary版としてリリース予定です。

(追記 2024/10/29)

Universal Binary版のbeta版を追加しました。

[SHA256SUM]

68265458b66246bbd697dfd346d225916368ba17634d62956d812df457c402e6 *QtBrynhildr-macosx_arm64-v253.dmg 

df7044c90c1909a9ca5bc39c999a069f1669a555ade66264bbf5cd99514a3a97 *QtBrynhildr-macosx_universal-v253.dmg

2024年10月 9日 (水)

Ver.2.5.3 リリース

Ver.2.5.3をリリースします。

[パッケージ]

Windows(x64) (Windows 7以降)
Windows(x86) (Windows 7-10)
WindowsXP/Vista(x86)
Linux(x64)
Linux(x64) スタティックリンク版(Qt5.15.15)
Mac(x64)(dmg/pkg)

Windows(x64) (Windows 7以降) (ポータブル版)
Windows(x86) (Windows 7-10) (ポータブル版)
WindowsXP/Vista(x86) (ポータブル版)

以下からダウンロードできます。

https://github.com/funfun-dc5/qtbrynhildr/releases

 

主な変更は以下です。

[不具合修正]
・デスクトップ圧縮有効時に「フルスクリーン」メニューが無効とならない不具合修正

[その他変更]
・「ヘルプ」メニューにabout Qtを追加
・Coverity Scan解析結果反映(std::move())
・Qt6対応(64bitのみ)

WindowsXP/Vista対応版(x86)はQt5.6.3(VS2015)でビルドしました。
Linux(static)版は最新のオープンソース版であるQt5.15.15でビルドしました。
その他配布しているパッケージはQt5.15.2がサポートする環境で動作します。

-----------------------------------------------------------------------------------
[SHA256SUM]
-----------------------------------------------------------------------------------
ada66dc1940bf6439a5a909e1c8af48ffa4b2777e465ab78f50c2bca47118ff0 *QtBrynhildr-linux_x64-v253.tar.xz
8ac44052a438d91881b3f1600536024b1339343cb37102990a93a56f6bdecd6c *QtBrynhildr-linux_x64-v253-static.tar.xz
00d56b74dc8195ce8518e9a8cad563a7e86a3fbffb97cf76bb2defae5317ee51 *QtBrynhildr-macosx_x64-v253.dmg
229c308eb4ecc652bfcfd7c9e146d92a73baa497d4a7cc0c3f6483f946512612 *QtBrynhildr-macosx_x64-v253.pkg
8976c762f29e2e648b2d2ea185c19ebfbd0f1ba1c9d26e7f58454798c1f8adf7 *QtBrynhildr-windows-v253-msvc.exe
69661af9be9ce893ee2b1fadb02b5bcc398b95a0a71d5eff86e6c2acd5106b2f *QtBrynhildr-windows-v253-msvc64.exe
5bf56e67c81daa8b455def1b9398911963d0147670d502ddf1d0b3d87e2c6901 *QtBrynhildr-windows-v253-msvc-xp.exe
d6922db826b8a1eb1b24d5edf2d0a7fede891e1f54f155d3b2e2b163fe2da51b *QtBrynhildr-windows-v253-Portable-msvc.exe
e1c66e6da460b2401a3b4d9c8889fb966f03c652da4bb57ba6fa9e2f1db20492 *QtBrynhildr-windows-v253-Portable-msvc64.exe
a8dea52a637266a4feef23235213277a1019f1a9e046570fe40fcdaf927a9f9c *QtBrynhildr-windows-v253-Portable-msvc-xp.exe

« 2024年9月 | トップページ | 2025年4月 »