「macOSWS/11.1」の版間の差分

提供: MacWiki
移動: 案内検索
(開発メモ)
(arm64, arm64e, x86_64)
行46: 行46:
 
{
 
{
 
#if defined (__arm64__)
 
#if defined (__arm64__)
printf("Hello ARM64 Word!\n");
+
printf("Hello ARM64 World!\n");
 
#endif
 
#endif
 
#if defined (__aarch64__)
 
#if defined (__aarch64__)
printf("Hello AArch64 Word!\n");
+
printf("Hello AArch64 World!\n");
 
#endif
 
#endif
 
#if defined( __arm64e__ )
 
#if defined( __arm64e__ )
printf("Hello ARM64E Word!\n");
+
printf("Hello ARM64E World!\n");
 
#endif
 
#endif
 
#if defined( __x86_64__ )
 
#if defined( __x86_64__ )
printf("Hello X86_64 Word!\n");
+
printf("Hello X86_64 World!\n");
 
#endif
 
#endif
 
return 0;
 
return 0;
行68: 行68:
 
test_x86_64: Mach-O 64-bit executable x86_64
 
test_x86_64: Mach-O 64-bit executable x86_64
 
% ./test_arm64
 
% ./test_arm64
Hello ARM64 Word!
+
Hello ARM64 World!
Hello AArch64 Word!
+
Hello AArch64 World!
 
% ./test_arm64e
 
% ./test_arm64e
 
zsh: killed    ./test_arm64e
 
zsh: killed    ./test_arm64e
 
% ./test_x86_64  
 
% ./test_x86_64  
Hello X86_64 Word!
+
Hello X86_64 World!
 
</pre>
 
</pre>
  

2021年1月21日 (木) 18:45時点における版

MacOSX_WorkShop 11.11 (macOS BigSur) 対応 tree に関する情報

最新バージョン

  • 鋭意開発中

方針

  • TeX emacs 環境を最新の Upstream Release に合わせる
  • arm64 と x86_64 の fat binary でパッケージングする
  • rpm の DB を Berkeley DB から ndb に変更(rpm-4.16.1.2)
  • emacs を NS(Cocoa) から、千葉大の山本さんがメンテされている Mac port(Carbon) に変更

開発メモ

Xcode

  • Command Line Tools は terminal で以下のコマンドを実行してインストールする。
$ xcode-select --install
% arch -arm64 /usr/bin/clang -v
Apple clang version 12.0.0 (clang-1200.0.32.28)
Target: arm64-apple-darwin20.2.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
% arch -x86_64 /usr/bin/clang -v
Apple clang version 12.0.0 (clang-1200.0.32.28)
Target: x86_64-apple-darwin20.2.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin 

arm64, arm64e, x86_64

zsh などは arm64e でビルドされている。

% file /bin/zsh 
/bin/zsh: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64e:Mach-O 64-bit executable arm64e]
/bin/zsh (for architecture x86_64):	Mach-O 64-bit executable x86_64
/bin/zsh (for architecture arm64e):	Mach-O 64-bit executable arm64e

しかし、Xcode の clang でコンパイルした arm64e バイナリは強制終了される。

% cat test.c
#include <stdio.h>
int main ()
{
#if defined (__arm64__)
	printf("Hello ARM64 World!\n");
#endif
#if defined (__aarch64__)
	printf("Hello AArch64 World!\n");
#endif
#if defined( __arm64e__ )
	printf("Hello ARM64E World!\n");
#endif
#if defined( __x86_64__ )
	printf("Hello X86_64 World!\n");
#endif
	return 0;
}

% clang -arch arm64 test.c -o test_arm64
% clang -arch arm64e test.c -o test_arm64e
% clang -arch x86_64 test.c -o test_x86_64
% file test_*
test_arm64:  Mach-O 64-bit executable arm64
test_arm64e: Mach-O 64-bit executable arm64e
test_x86_64: Mach-O 64-bit executable x86_64
% ./test_arm64
Hello ARM64 World!
Hello AArch64 World!
% ./test_arm64e
zsh: killed     ./test_arm64e
% ./test_x86_64 
Hello X86_64 World!

XQuartz

  • Release 2.8.0 で arm64 x86_64 の fat 化がなされる模様。ただ、 alpha4 (20210116)では、以下のように i386 x86_64 の fat が混じっている。

cairo が arm64 x86_64 に fat 化されれば gtk を arm64 x86_64 fat でビルドできるので、残りの rpm 化が進む。

% file /opt/X11/{bin,lib}/* |grep i386
...
/opt/X11/lib/libcairo.2.dylib:                    Mach-O universal binary with 2 architectures: [i386:
Mach-O dynamically linked shared library i386] [x86_64:Mach-O 64-bit dynamically linked shared library
 x86_64]
....

議論と要望

macOSWS 11.1 に対する要望などが御座いましたらコメントを戴ければ幸いです。 議論の上、必要であれば採用させて頂きます。

コメント: