Pagina1 van 1
Forum

Welkom bij de Tweaking4All gemeenschapsforums!
Voor je gaat deelnemen, bekijk de Forum Regels!

Specifieke onderwerpen: Start het onderwerp met de naam van het programma of systeem.
Bijvoorbeeld “MacOS X – Jouw vraag“, of bijvoorbeeld “MS Word – Jouw Tip of Truc“.

Merk op: Omschakelen naar een andere taal zal niet werken als je een post aan het lezen bent aangezien er waarschijnlijk geen vertaling beschikbaar is.



Deel:
Meldingen
Alles wissen

[Opgelost] Lazarus Pascal - macOS - Universal binary maken voor Apple Silicon (M1) en Intel Processoren

2 Berichten
1 Gebruikers
0 Reactions
1,189 Bekeken
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 12 jaar geleden
Berichten: 2835
Topic starter  

Er vanuitgaande dat je FPCUpDeluxe (gratis) gebruikt, en je dus FPC en Lazarus via FPCUpDeluxe hebt geinstalleerd;

1) In FPCUpDeluxe, installeren we de ARM compiler:

Klik op het tabblad "cross", vink "aarch64" en "darwin" aan en klik dan op de "Install Compiler" knop.
FPC installeerd nu de ARM compiler naast de Intel compiler.

2) In Lazarus, moeten we nu binaries maken voor zowel Intel als M1.

In Lazarus ga naar het menu "Project" - "Project Options". Onder "Compiler options" gaan we naar "Config and Target".
Voor zover ik heb ervaren hoef je alleen maar "CPU Family" op "aarch64" (M1) of "x86_64" (Intel) te zetten.
Kies er een en BUILD de binary. Hernoem de binary vervolgens en herhaal deze stappen voor de andere processor familie.

Voorbeeld: project1

Zet CPU target op Intel en Build the Intel (x86_64) binary, en hernoem het bestand naar b.v. "project1_x86".
Doe nu hetzelfde voor de M1 binary (aarch64) en build the M1 binary, en hernoem het naar zoiets als "project1_M1".

3) In Terminal maken we nu met lipo een Universal binary.

In Terminal:

lipo -create -output project1 project1_M1 project1_x86
strip project1

 

Je hebt nu een "project1" bestand welke we in de app bundle plaatsen.
 
Je kunt de universal binary testen met:
 
file project1
 
De output ziet er ongeveer zo uit:
 
project1: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64]
project1 (for architecture x86_64): Mach-O 64-bit executable x86_64
project1 (for architecture arm64): Mach-O 64-bit executable arm64

 

Merk op dat voor M1 hardware de binary gesigned MOET zijn anders werkt het gewoon niet.
Omdat ik zelf geen M1 hardware heb, kan ik het signen nog niet testen. Ik weet wel dat de standard sign methode (van de universal binary) prima werkt op Intel Macs.


   
BeantwoordenCiteren
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 12 jaar geleden
Berichten: 2835
Topic starter  

Let op:

Extra tools en bibliotheken moeten uiteraard, indien gebruikt, ook voor betreffende CPU families gecompileerd worden.


   
BeantwoordenCiteren
Deel: