Skip to content

Build arm64 on macOS with Xcode 12.2#2179

Closed
metsma wants to merge 6 commits intoOpenSC:masterfrom
metsma:arm64
Closed

Build arm64 on macOS with Xcode 12.2#2179
metsma wants to merge 6 commits intoOpenSC:masterfrom
metsma:arm64

Conversation

@metsma
Copy link
Copy Markdown
Contributor

@metsma metsma commented Dec 8, 2020

Signed-off-by: Raul Metsma raul@metsma.ee

Checklist
  • Documentation is added or updated
  • New files have a LGPL 2.1 license statement
  • PKCS#11 module is tested
  • Windows minidriver is tested
  • macOS tokend is tested

Signed-off-by: Raul Metsma <raul@metsma.ee>
@frankmorgner
Copy link
Copy Markdown
Member

ideally, the xcode version check should also catch all versions starting with xcode 12...

Are the pure xcode projects built with arm support as well i.e. Are the cflags/ldflags propagated to the CTK module opensctoken?

@frankmorgner
Copy link
Copy Markdown
Member

related to #2163

@metsma
Copy link
Copy Markdown
Contributor Author

metsma commented Dec 9, 2020

Arm64 support can used only with Xcode 12.2 and forward.
If Xcode projects are with default settings they should produce already universal binaries.

@ghost

This comment has been minimized.

@frankmorgner

This comment has been minimized.

@frankmorgner
Copy link
Copy Markdown
Member

A bit more patience, please. I forgot to trigger a newer version of XCode...

@frankmorgner
Copy link
Copy Markdown
Member

Unfortunately, this didn't go through as expected. I've stumbled across three independent problems...

Locally, I'm experiencing the following problem when building OpenSCToken (this directory needs to be checked out in the OpenSC directory so that it is built):

Making all in libopensc
/bin/sh ../../libtool  --tag=CC --tag CC  --mode=compile gcc -DHAVE_CONFIG_H -I. -I../..  -D'OPENSC_CONF_PATH="/Applications/Utilities/OpenSCTokenApp.app/Contents/PlugIns/OpenSCToken.appex/Contents/Resources/opensc.conf"' -D'DEFAULT_SM_MODULE_PATH="//lib"' -D'DEFAULT_SM_MODULE="libsmm-local.so"' -I../../src  -I/Users/morgenfra/Documents/OpenSC/openpace_bin/Library/OpenSC/include -I/Users/morgenfra/Documents/OpenSC/openssl_bin/Library/OpenSC/include -I/Users/morgenfra/Documents/OpenSC/openssl_bin/Library/OpenSC/include    -Wall -Wextra -Wno-unused-parameter -Werror  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk -arch x86_64 -arch arm64 -MT libopensc_la-ctx.lo -MD -MP -MF .deps/libopensc_la-ctx.Tpo -c -o libopensc_la-ctx.lo `test -f 'ctx.c' || echo './'`ctx.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../.. -DOPENSC_CONF_PATH=\"/Applications/Utilities/OpenSCTokenApp.app/Contents/PlugIns/OpenSCToken.appex/Contents/Resources/opensc.conf\" -DDEFAULT_SM_MODULE_PATH=\"//lib\" -DDEFAULT_SM_MODULE=\"libsmm-local.so\" -I../../src -I/Users/morgenfra/Documents/OpenSC/openpace_bin/Library/OpenSC/include -I/Users/morgenfra/Documents/OpenSC/openssl_bin/Library/OpenSC/include -I/Users/morgenfra/Documents/OpenSC/openssl_bin/Library/OpenSC/include -Wall -Wextra -Wno-unused-parameter -Werror -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk -arch x86_64 -arch arm64 -MT libopensc_la-ctx.lo -MD -MP -MF .deps/libopensc_la-ctx.Tpo -c ctx.c -o libopensc_la-ctx.o
mv -f .deps/libopensc_la-ctx.Tpo .deps/libopensc_la-ctx.Plo
/bin/sh ../../libtool  --tag CC  --mode=compile gcc -DHAVE_CONFIG_H -I. -I../..  -D'OPENSC_CONF_PATH="/Applications/Utilities/OpenSCTokenApp.app/Contents/PlugIns/OpenSCToken.appex/Contents/Resources/opensc.conf"' -D'DEFAULT_SM_MODULE_PATH="//lib"' -D'DEFAULT_SM_MODULE="libsmm-local.so"' -I../../src  -I/Users/morgenfra/Documents/OpenSC/openpace_bin/Library/OpenSC/include -I/Users/morgenfra/Documents/OpenSC/openssl_bin/Library/OpenSC/include -I/Users/morgenfra/Documents/OpenSC/openssl_bin/Library/OpenSC/include    -g -O2 -MT libopensc_la-reader-cryptotokenkit.lo -MD -MP -MF .deps/libopensc_la-reader-cryptotokenkit.Tpo -c -o libopensc_la-reader-cryptotokenkit.lo `test -f 'reader-cryptotokenkit.m' || echo './'`reader-cryptotokenkit.m
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../.. -DOPENSC_CONF_PATH=\"/Applications/Utilities/OpenSCTokenApp.app/Contents/PlugIns/OpenSCToken.appex/Contents/Resources/opensc.conf\" -DDEFAULT_SM_MODULE_PATH=\"//lib\" -DDEFAULT_SM_MODULE=\"libsmm-local.so\" -I../../src -I/Users/morgenfra/Documents/OpenSC/openpace_bin/Library/OpenSC/include -I/Users/morgenfra/Documents/OpenSC/openssl_bin/Library/OpenSC/include -I/Users/morgenfra/Documents/OpenSC/openssl_bin/Library/OpenSC/include -g -O2 -MT libopensc_la-reader-cryptotokenkit.lo -MD -MP -MF .deps/libopensc_la-reader-cryptotokenkit.Tpo -c reader-cryptotokenkit.m -o libopensc_la-reader-cryptotokenkit.o
mv -f .deps/libopensc_la-reader-cryptotokenkit.Tpo .deps/libopensc_la-reader-cryptotokenkit.Plo
/bin/sh ../../libtool  --tag CC  --mode=link gcc -I/Users/morgenfra/Documents/OpenSC/openpace_bin/Library/OpenSC/include -I/Users/morgenfra/Documents/OpenSC/openssl_bin/Library/OpenSC/include -I/Users/morgenfra/Documents/OpenSC/openssl_bin/Library/OpenSC/include    -g -O2  -version-info 7:0:0 -export-symbols "./libopensc.exports" -no-undefined -arch x86_64 -arch arm64 -framework CryptoTokenKit -framework Foundation -o libopensc.la -rpath //lib libopensc_la-sc.lo libopensc_la-ctx.lo libopensc_la-log.lo libopensc_la-errors.lo libopensc_la-asn1.lo libopensc_la-base64.lo libopensc_la-sec.lo libopensc_la-card.lo libopensc_la-iso7816.lo libopensc_la-dir.lo libopensc_la-ef-atr.lo libopensc_la-ef-gdo.lo libopensc_la-padding.lo libopensc_la-apdu.lo libopensc_la-simpletlv.lo libopensc_la-gp.lo libopensc_la-pkcs15.lo libopensc_la-pkcs15-cert.lo libopensc_la-pkcs15-data.lo libopensc_la-pkcs15-pin.lo libopensc_la-pkcs15-prkey.lo libopensc_la-pkcs15-pubkey.lo libopensc_la-pkcs15-skey.lo libopensc_la-pkcs15-sec.lo libopensc_la-pkcs15-algo.lo libopensc_la-pkcs15-cache.lo libopensc_la-pkcs15-syn.lo libopensc_la-muscle.lo libopensc_la-muscle-filesystem.lo libopensc_la-ctbcs.lo libopensc_la-reader-ctapi.lo libopensc_la-reader-pcsc.lo libopensc_la-reader-openct.lo libopensc_la-reader-tr03119.lo libopensc_la-card-setcos.lo libopensc_la-card-miocos.lo libopensc_la-card-flex.lo libopensc_la-card-gpk.lo libopensc_la-card-cardos.lo libopensc_la-card-tcos.lo libopensc_la-card-default.lo libopensc_la-card-mcrd.lo libopensc_la-card-starcos.lo libopensc_la-card-openpgp.lo libopensc_la-card-jcop.lo libopensc_la-card-oberthur.lo libopensc_la-card-belpic.lo libopensc_la-card-atrust-acos.lo libopensc_la-card-entersafe.lo libopensc_la-card-epass2003.lo libopensc_la-card-coolkey.lo libopensc_la-card-incrypto34.lo libopensc_la-card-piv.lo libopensc_la-card-cac-common.lo libopensc_la-card-cac.lo libopensc_la-card-cac1.lo libopensc_la-card-muscle.lo libopensc_la-card-asepcos.lo libopensc_la-card-akis.lo libopensc_la-card-gemsafeV1.lo libopensc_la-card-rutoken.lo libopensc_la-card-rtecp.lo libopensc_la-card-westcos.lo libopensc_la-card-myeid.lo libopensc_la-card-itacns.lo libopensc_la-card-authentic.lo libopensc_la-card-iasecc.lo libopensc_la-iasecc-sdo.lo libopensc_la-iasecc-sm.lo libopensc_la-card-sc-hsm.lo libopensc_la-card-dnie.lo libopensc_la-cwa14890.lo libopensc_la-cwa-dnie.lo libopensc_la-card-isoApplet.lo libopensc_la-card-masktech.lo libopensc_la-card-gids.lo libopensc_la-card-jpki.lo libopensc_la-card-npa.lo libopensc_la-card-esteid2018.lo libopensc_la-card-idprime.lo libopensc_la-card-edo.lo libopensc_la-pkcs15-openpgp.lo libopensc_la-pkcs15-starcert.lo libopensc_la-pkcs15-cardos.lo libopensc_la-pkcs15-tcos.lo libopensc_la-pkcs15-esteid.lo libopensc_la-pkcs15-gemsafeGPK.lo libopensc_la-pkcs15-actalis.lo libopensc_la-pkcs15-atrust-acos.lo libopensc_la-pkcs15-tccardos.lo libopensc_la-pkcs15-piv.lo libopensc_la-pkcs15-cac.lo libopensc_la-pkcs15-esinit.lo libopensc_la-pkcs15-westcos.lo libopensc_la-pkcs15-pteid.lo libopensc_la-pkcs15-oberthur.lo libopensc_la-pkcs15-itacns.lo libopensc_la-pkcs15-gemsafeV1.lo libopensc_la-pkcs15-sc-hsm.lo libopensc_la-pkcs15-coolkey.lo libopensc_la-pkcs15-din-66291.lo libopensc_la-pkcs15-idprime.lo libopensc_la-pkcs15-dnie.lo libopensc_la-pkcs15-gids.lo libopensc_la-pkcs15-iasecc.lo libopensc_la-pkcs15-jpki.lo libopensc_la-pkcs15-esteid2018.lo libopensc_la-compression.lo libopensc_la-p15card-helper.lo libopensc_la-sm.lo libopensc_la-aux-data.lo libopensc_la-reader-cryptotokenkit.lo  -L/Users/morgenfra/Documents/OpenSC/openpace_bin/Library/OpenSC/lib -leac -lcrypto -L/Users/morgenfra/Documents/OpenSC/openssl_bin/Library/OpenSC/lib -lcrypto -L/Users/morgenfra/Documents/OpenSC/openssl_bin/Library/OpenSC/lib -lcrypto  -lz ../../src/pkcs15init/libpkcs15init.la ../../src/scconf/libscconf.la ../../src/common/libscdl.la ../../src/ui/libnotify.la ../../src/ui/libstrings.la ../../src/sm/libsmeac.la ../../src/common/libcompat.la  
libtool: warning: library '/Users/morgenfra/Documents/OpenSC/openpace_bin/Library/OpenSC/lib/libeac.la' was moved.
libtool: link: rm -fr  .libs/libopensc.a .libs/libopensc.la .libs/libopensc.lai
libtool: link: (cd /Users/morgenfra/Documents/OpenSC/OpenSCToken/OpenSC/src/libopensc/.libs/libopensc.lax/libpkcs15init.a/unfat-73726/libpkcs15init.a-x86_64 && ar x "libpkcs15init.a")
libtool: link: (cd /Users/morgenfra/Documents/OpenSC/OpenSCToken/OpenSC/src/libopensc/.libs/libopensc.lax/libpkcs15init.a/unfat-73726/libpkcs15init.a-arm64 && ar x "libpkcs15init.a")
libtool: link: (cd /Users/morgenfra/Documents/OpenSC/OpenSCToken/OpenSC/src/libopensc/.libs/libopensc.lax/libscconf.a/unfat-73726/libscconf.a-x86_64 && ar x "libscconf.a")
libtool: link: (cd /Users/morgenfra/Documents/OpenSC/OpenSCToken/OpenSC/src/libopensc/.libs/libopensc.lax/libscconf.a/unfat-73726/libscconf.a-arm64 && ar x "libscconf.a")
libtool: link: (cd /Users/morgenfra/Documents/OpenSC/OpenSCToken/OpenSC/src/libopensc/.libs/libopensc.lax/libscdl.a/unfat-73726/libscdl.a-x86_64 && ar x "libscdl.a")
libtool: link: (cd /Users/morgenfra/Documents/OpenSC/OpenSCToken/OpenSC/src/libopensc/.libs/libopensc.lax/libscdl.a/unfat-73726/libscdl.a-arm64 && ar x "libscdl.a")
libtool: link: (cd /Users/morgenfra/Documents/OpenSC/OpenSCToken/OpenSC/src/libopensc/.libs/libopensc.lax/libnotify.a/unfat-73726/libnotify.a-x86_64 && ar x "libnotify.a")
libtool: link: (cd /Users/morgenfra/Documents/OpenSC/OpenSCToken/OpenSC/src/libopensc/.libs/libopensc.lax/libnotify.a/unfat-73726/libnotify.a-arm64 && ar x "libnotify.a")
libtool: link: (cd /Users/morgenfra/Documents/OpenSC/OpenSCToken/OpenSC/src/libopensc/.libs/libopensc.lax/libstrings.a/unfat-73726/libstrings.a-x86_64 && ar x "libstrings.a")
libtool: link: (cd /Users/morgenfra/Documents/OpenSC/OpenSCToken/OpenSC/src/libopensc/.libs/libopensc.lax/libstrings.a/unfat-73726/libstrings.a-arm64 && ar x "libstrings.a")
libtool: link: (cd /Users/morgenfra/Documents/OpenSC/OpenSCToken/OpenSC/src/libopensc/.libs/libopensc.lax/libsmeac.a/unfat-73726/libsmeac.a-x86_64 && ar x "libsmeac.a")
libtool: link: (cd /Users/morgenfra/Documents/OpenSC/OpenSCToken/OpenSC/src/libopensc/.libs/libopensc.lax/libsmeac.a/unfat-73726/libsmeac.a-arm64 && ar x "libsmeac.a")
libtool: link: (cd /Users/morgenfra/Documents/OpenSC/OpenSCToken/OpenSC/src/libopensc/.libs/libopensc.lax/libcompat.a/unfat-73726/libcompat.a-x86_64 && ar x "libcompat.a")
libtool: link: (cd /Users/morgenfra/Documents/OpenSC/OpenSCToken/OpenSC/src/libopensc/.libs/libopensc.lax/libcompat.a/unfat-73726/libcompat.a-arm64 && ar x "libcompat.a")
libtool: link: ar cru .libs/libopensc.a  libopensc_la-sc.o libopensc_la-ctx.o libopensc_la-log.o libopensc_la-errors.o libopensc_la-asn1.o libopensc_la-base64.o libopensc_la-sec.o libopensc_la-card.o libopensc_la-iso7816.o libopensc_la-dir.o libopensc_la-ef-atr.o libopensc_la-ef-gdo.o libopensc_la-padding.o libopensc_la-apdu.o libopensc_la-simpletlv.o libopensc_la-gp.o libopensc_la-pkcs15.o libopensc_la-pkcs15-cert.o libopensc_la-pkcs15-data.o libopensc_la-pkcs15-pin.o libopensc_la-pkcs15-prkey.o libopensc_la-pkcs15-pubkey.o libopensc_la-pkcs15-skey.o libopensc_la-pkcs15-sec.o libopensc_la-pkcs15-algo.o libopensc_la-pkcs15-cache.o libopensc_la-pkcs15-syn.o libopensc_la-muscle.o libopensc_la-muscle-filesystem.o libopensc_la-ctbcs.o libopensc_la-reader-ctapi.o libopensc_la-reader-pcsc.o libopensc_la-reader-openct.o libopensc_la-reader-tr03119.o libopensc_la-card-setcos.o libopensc_la-card-miocos.o libopensc_la-card-flex.o libopensc_la-card-gpk.o libopensc_la-card-cardos.o libopensc_la-card-tcos.o libopensc_la-card-default.o libopensc_la-card-mcrd.o libopensc_la-card-starcos.o libopensc_la-card-openpgp.o libopensc_la-card-jcop.o libopensc_la-card-oberthur.o libopensc_la-card-belpic.o libopensc_la-card-atrust-acos.o libopensc_la-card-entersafe.o libopensc_la-card-epass2003.o libopensc_la-card-coolkey.o libopensc_la-card-incrypto34.o libopensc_la-card-piv.o libopensc_la-card-cac-common.o libopensc_la-card-cac.o libopensc_la-card-cac1.o libopensc_la-card-muscle.o libopensc_la-card-asepcos.o libopensc_la-card-akis.o libopensc_la-card-gemsafeV1.o libopensc_la-card-rutoken.o libopensc_la-card-rtecp.o libopensc_la-card-westcos.o libopensc_la-card-myeid.o libopensc_la-card-itacns.o libopensc_la-card-authentic.o libopensc_la-card-iasecc.o libopensc_la-iasecc-sdo.o libopensc_la-iasecc-sm.o libopensc_la-card-sc-hsm.o libopensc_la-card-dnie.o libopensc_la-cwa14890.o libopensc_la-cwa-dnie.o libopensc_la-card-isoApplet.o libopensc_la-card-masktech.o libopensc_la-card-gids.o libopensc_la-card-jpki.o libopensc_la-card-npa.o libopensc_la-card-esteid2018.o libopensc_la-card-idprime.o libopensc_la-card-edo.o libopensc_la-pkcs15-openpgp.o libopensc_la-pkcs15-starcert.o libopensc_la-pkcs15-cardos.o libopensc_la-pkcs15-tcos.o libopensc_la-pkcs15-esteid.o libopensc_la-pkcs15-gemsafeGPK.o libopensc_la-pkcs15-actalis.o libopensc_la-pkcs15-atrust-acos.o libopensc_la-pkcs15-tccardos.o libopensc_la-pkcs15-piv.o libopensc_la-pkcs15-cac.o libopensc_la-pkcs15-esinit.o libopensc_la-pkcs15-westcos.o libopensc_la-pkcs15-pteid.o libopensc_la-pkcs15-oberthur.o libopensc_la-pkcs15-itacns.o libopensc_la-pkcs15-gemsafeV1.o libopensc_la-pkcs15-sc-hsm.o libopensc_la-pkcs15-coolkey.o libopensc_la-pkcs15-din-66291.o libopensc_la-pkcs15-idprime.o libopensc_la-pkcs15-dnie.o libopensc_la-pkcs15-gids.o libopensc_la-pkcs15-iasecc.o libopensc_la-pkcs15-jpki.o libopensc_la-pkcs15-esteid2018.o libopensc_la-compression.o libopensc_la-p15card-helper.o libopensc_la-sm.o libopensc_la-aux-data.o libopensc_la-reader-cryptotokenkit.o  .libs/libopensc.lax/libpkcs15init.a/pkcs15-asepcos.o .libs/libopensc.lax/libpkcs15init.a/pkcs15-authentic.o .libs/libopensc.lax/libpkcs15init.a/pkcs15-cardos.o .libs/libopensc.lax/libpkcs15init.a/pkcs15-cflex.o .libs/libopensc.lax/libpkcs15init.a/pkcs15-entersafe.o .libs/libopensc.lax/libpkcs15init.a/pkcs15-epass2003.o .libs/libopensc.lax/libpkcs15init.a/pkcs15-gids.o .libs/libopensc.lax/libpkcs15init.a/pkcs15-gpk.o .libs/libopensc.lax/libpkcs15init.a/pkcs15-iasecc.o .libs/libopensc.lax/libpkcs15init.a/pkcs15-incrypto34.o .libs/libopensc.lax/libpkcs15init.a/pkcs15-isoApplet.o .libs/libopensc.lax/libpkcs15init.a/pkcs15-jcop.o .libs/libopensc.lax/libpkcs15init.a/pkcs15-lib.o .libs/libopensc.lax/libpkcs15init.a/pkcs15-miocos.o .libs/libopensc.lax/libpkcs15init.a/pkcs15-muscle.o .libs/libopensc.lax/libpkcs15init.a/pkcs15-myeid.o .libs/libopensc.lax/libpkcs15init.a/pkcs15-oberthur-awp.o .libs/libopensc.lax/libpkcs15init.a/pkcs15-oberthur.o .libs/libopensc.lax/libpkcs15init.a/pkcs15-openpgp.o .libs/libopensc.lax/libpkcs15init.a/pkcs15-rtecp.o .libs/libopensc.lax/libpkcs15init.a/pkcs15-rutoken.o .libs/libopensc.lax/libpkcs15init.a/pkcs15-sc-hsm.o .libs/libopensc.lax/libpkcs15init.a/pkcs15-setcos.o .libs/libopensc.lax/libpkcs15init.a/pkcs15-starcos.o .libs/libopensc.lax/libpkcs15init.a/pkcs15-westcos.o .libs/libopensc.lax/libpkcs15init.a/profile.o  .libs/libopensc.lax/libscconf.a/parse.o .libs/libopensc.lax/libscconf.a/scconf.o .libs/libopensc.lax/libscconf.a/sclex.o .libs/libopensc.lax/libscconf.a/write.o  .libs/libopensc.lax/libscdl.a/libscdl.o  .libs/libopensc.lax/libnotify.a/notify.o  .libs/libopensc.lax/libstrings.a/strings.o  .libs/libopensc.lax/libsmeac.a/libsmeac_la-sm-eac.o .libs/libopensc.lax/libsmeac.a/sm-iso.o  .libs/libopensc.lax/libcompat.a/compat___iob_func.o .libs/libopensc.lax/libcompat.a/compat_dummy.o .libs/libopensc.lax/libcompat.a/compat_getopt.o .libs/libopensc.lax/libcompat.a/compat_getpass.o .libs/libopensc.lax/libcompat.a/compat_report_rangecheckfailure.o .libs/libopensc.lax/libcompat.a/compat_strlcat.o .libs/libopensc.lax/libcompat.a/compat_strlcpy.o .libs/libopensc.lax/libcompat.a/compat_strnlen.o .libs/libopensc.lax/libcompat.a/simclist.o 
libtool: link: ranlib .libs/libopensc.a
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: for architecture: x86_64 file: .libs/libopensc.a(libopensc_la-reader-ctapi.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: for architecture: x86_64 file: .libs/libopensc.a(libopensc_la-reader-pcsc.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: for architecture: x86_64 file: .libs/libopensc.a(libopensc_la-reader-openct.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: for architecture: x86_64 file: .libs/libopensc.a(compat___iob_func.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: for architecture: x86_64 file: .libs/libopensc.a(compat_getpass.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: for architecture: x86_64 file: .libs/libopensc.a(compat_report_rangecheckfailure.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: for architecture: x86_64 file: .libs/libopensc.a(compat_strlcat.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: for architecture: x86_64 file: .libs/libopensc.a(compat_strlcpy.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: for architecture: x86_64 file: .libs/libopensc.a(compat_strnlen.o) has no symbols
libtool: link: rm -fr .libs/libopensc.lax
libtool: link: ( cd ".libs" && rm -f "libopensc.la" && ln -s "../libopensc.la" "libopensc.la" )
Making all in pkcs11
/bin/sh ../../libtool  --tag=CC   --mode=link gcc -I/Users/morgenfra/Documents/OpenSC/openpace_bin/Library/OpenSC/include -I/Users/morgenfra/Documents/OpenSC/openssl_bin/Library/OpenSC/include -I/Users/morgenfra/Documents/OpenSC/openssl_bin/Library/OpenSC/include -pthread -DPKCS11_THREAD_LOCKING -Wall -Wextra -Wno-unused-parameter -Werror  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk -arch x86_64 -arch arm64  -export-symbols "./pkcs11.exports" -module -shared -avoid-version -no-undefined -arch x86_64 -arch arm64 -framework CryptoTokenKit -framework Foundation -o opensc-pkcs11.la -rpath //lib opensc_pkcs11_la-pkcs11-global.lo opensc_pkcs11_la-pkcs11-session.lo opensc_pkcs11_la-pkcs11-object.lo opensc_pkcs11_la-misc.lo opensc_pkcs11_la-slot.lo opensc_pkcs11_la-mechanism.lo opensc_pkcs11_la-openssl.lo opensc_pkcs11_la-framework-pkcs15.lo opensc_pkcs11_la-framework-pkcs15init.lo opensc_pkcs11_la-debug.lo opensc_pkcs11_la-pkcs11-display.lo   ../../src/libopensc/libopensc.la ../../src/common/libscdl.la ../../src/common/libcompat.la -L/Users/morgenfra/Documents/OpenSC/openpace_bin/Library/OpenSC/lib -leac -lcrypto -L/Users/morgenfra/Documents/OpenSC/openssl_bin/Library/OpenSC/lib -lcrypto -L/Users/morgenfra/Documents/OpenSC/openssl_bin/Library/OpenSC/lib -lcrypto  
../../libtool: line 2639: func__fatal_error: command not found
libtool: warning: '/Users/morgenfra/Documents/OpenSC/openpace_bin/Library/OpenSC/lib/libeac.la' seems to be moved
libtool: warning: library '/Users/morgenfra/Documents/OpenSC/openpace_bin/Library/OpenSC/lib/libeac.la' was moved.
libtool: link: rm -fr  .libs/opensc-pkcs11.la .libs/opensc-pkcs11.lai
libtool: link: ( cd ".libs" && rm -f "opensc-pkcs11.la" && ln -s "../opensc-pkcs11.la" "opensc-pkcs11.la" )
/bin/sh ../../libtool  --tag=CC   --mode=link gcc -DMODULE_APP_NAME=\"onepin-opensc-pkcs11\" -I/Users/morgenfra/Documents/OpenSC/openpace_bin/Library/OpenSC/include -I/Users/morgenfra/Documents/OpenSC/openssl_bin/Library/OpenSC/include -I/Users/morgenfra/Documents/OpenSC/openssl_bin/Library/OpenSC/include -pthread -DPKCS11_THREAD_LOCKING -Wall -Wextra -Wno-unused-parameter -Werror  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk -arch x86_64 -arch arm64  -export-symbols "./pkcs11.exports" -module -shared -avoid-version -no-undefined -arch x86_64 -arch arm64 -framework CryptoTokenKit -framework Foundation -o onepin-opensc-pkcs11.la -rpath //lib onepin_opensc_pkcs11_la-pkcs11-global.lo onepin_opensc_pkcs11_la-pkcs11-session.lo onepin_opensc_pkcs11_la-pkcs11-object.lo onepin_opensc_pkcs11_la-misc.lo onepin_opensc_pkcs11_la-slot.lo onepin_opensc_pkcs11_la-mechanism.lo onepin_opensc_pkcs11_la-openssl.lo onepin_opensc_pkcs11_la-framework-pkcs15.lo onepin_opensc_pkcs11_la-framework-pkcs15init.lo onepin_opensc_pkcs11_la-debug.lo onepin_opensc_pkcs11_la-pkcs11-display.lo  ../../src/libopensc/libopensc.la ../../src/common/libscdl.la ../../src/common/libcompat.la -L/Users/morgenfra/Documents/OpenSC/openpace_bin/Library/OpenSC/lib -leac -lcrypto -L/Users/morgenfra/Documents/OpenSC/openssl_bin/Library/OpenSC/lib -lcrypto -L/Users/morgenfra/Documents/OpenSC/openssl_bin/Library/OpenSC/lib -lcrypto  
../../libtool: line 2639: func__fatal_error: command not found
libtool: warning: '/Users/morgenfra/Documents/OpenSC/openpace_bin/Library/OpenSC/lib/libeac.la' seems to be moved
libtool: warning: library '/Users/morgenfra/Documents/OpenSC/openpace_bin/Library/OpenSC/lib/libeac.la' was moved.
libtool: link: rm -fr  .libs/onepin-opensc-pkcs11.la .libs/onepin-opensc-pkcs11.lai
libtool: link: ( cd ".libs" && rm -f "onepin-opensc-pkcs11.la" && ln -s "../onepin-opensc-pkcs11.la" "onepin-opensc-pkcs11.la" )
/bin/sh ../../libtool  --tag=CC   --mode=link gcc -I/Users/morgenfra/Documents/OpenSC/openpace_bin/Library/OpenSC/include -I/Users/morgenfra/Documents/OpenSC/openssl_bin/Library/OpenSC/include -I/Users/morgenfra/Documents/OpenSC/openssl_bin/Library/OpenSC/include -pthread -DPKCS11_THREAD_LOCKING -Wall -Wextra -Wno-unused-parameter -Werror  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk -arch x86_64 -arch arm64  -arch x86_64 -arch arm64 -framework CryptoTokenKit -framework Foundation -o libopensc-pkcs11.la  libopensc_pkcs11_la-pkcs11-global.lo libopensc_pkcs11_la-pkcs11-session.lo libopensc_pkcs11_la-pkcs11-object.lo libopensc_pkcs11_la-misc.lo libopensc_pkcs11_la-slot.lo libopensc_pkcs11_la-mechanism.lo libopensc_pkcs11_la-openssl.lo libopensc_pkcs11_la-framework-pkcs15.lo libopensc_pkcs11_la-framework-pkcs15init.lo libopensc_pkcs11_la-debug.lo libopensc_pkcs11_la-pkcs11-display.lo  ../../src/libopensc/libopensc.la ../../src/common/libscdl.la ../../src/common/libcompat.la -L/Users/morgenfra/Documents/OpenSC/openpace_bin/Library/OpenSC/lib -leac -lcrypto -L/Users/morgenfra/Documents/OpenSC/openssl_bin/Library/OpenSC/lib -lcrypto -L/Users/morgenfra/Documents/OpenSC/openssl_bin/Library/OpenSC/lib -lcrypto  
libtool: warning: '/Users/morgenfra/Documents/OpenSC/openpace_bin/Library/OpenSC/lib/libeac.la' seems to be moved
libtool: warning: library '/Users/morgenfra/Documents/OpenSC/openpace_bin/Library/OpenSC/lib/libeac.la' was moved.
libtool: link: rm -fr  .libs/libopensc-pkcs11.a .libs/libopensc-pkcs11.la
libtool: link: (cd /Users/morgenfra/Documents/OpenSC/OpenSCToken/OpenSC/src/pkcs11/.libs/libopensc-pkcs11.lax/libscdl.a/unfat-75150/libscdl.a-x86_64 && ar x "libscdl.a")
libtool: link: (cd /Users/morgenfra/Documents/OpenSC/OpenSCToken/OpenSC/src/pkcs11/.libs/libopensc-pkcs11.lax/libscdl.a/unfat-75150/libscdl.a-arm64 && ar x "libscdl.a")
libtool: link: (cd /Users/morgenfra/Documents/OpenSC/OpenSCToken/OpenSC/src/pkcs11/.libs/libopensc-pkcs11.lax/libcompat.a/unfat-75150/libcompat.a-x86_64 && ar x "libcompat.a")
libtool: link: (cd /Users/morgenfra/Documents/OpenSC/OpenSCToken/OpenSC/src/pkcs11/.libs/libopensc-pkcs11.lax/libcompat.a/unfat-75150/libcompat.a-arm64 && ar x "libcompat.a")
libtool: link: ar cru .libs/libopensc-pkcs11.a  libopensc_pkcs11_la-pkcs11-global.o libopensc_pkcs11_la-pkcs11-session.o libopensc_pkcs11_la-pkcs11-object.o libopensc_pkcs11_la-misc.o libopensc_pkcs11_la-slot.o libopensc_pkcs11_la-mechanism.o libopensc_pkcs11_la-openssl.o libopensc_pkcs11_la-framework-pkcs15.o libopensc_pkcs11_la-framework-pkcs15init.o libopensc_pkcs11_la-debug.o libopensc_pkcs11_la-pkcs11-display.o  .libs/libopensc-pkcs11.lax/libscdl.a/libscdl.o  .libs/libopensc-pkcs11.lax/libcompat.a/compat___iob_func.o .libs/libopensc-pkcs11.lax/libcompat.a/compat_dummy.o .libs/libopensc-pkcs11.lax/libcompat.a/compat_getopt.o .libs/libopensc-pkcs11.lax/libcompat.a/compat_getpass.o .libs/libopensc-pkcs11.lax/libcompat.a/compat_report_rangecheckfailure.o .libs/libopensc-pkcs11.lax/libcompat.a/compat_strlcat.o .libs/libopensc-pkcs11.lax/libcompat.a/compat_strlcpy.o .libs/libopensc-pkcs11.lax/libcompat.a/compat_strnlen.o .libs/libopensc-pkcs11.lax/libcompat.a/simclist.o 
libtool: link: ranlib .libs/libopensc-pkcs11.a
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: for architecture: x86_64 file: .libs/libopensc-pkcs11.a(compat___iob_func.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: for architecture: x86_64 file: .libs/libopensc-pkcs11.a(compat_getpass.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: for architecture: x86_64 file: .libs/libopensc-pkcs11.a(compat_report_rangecheckfailure.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: for architecture: x86_64 file: .libs/libopensc-pkcs11.a(compat_strlcat.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: for architecture: x86_64 file: .libs/libopensc-pkcs11.a(compat_strlcpy.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: for architecture: x86_64 file: .libs/libopensc-pkcs11.a(compat_strnlen.o) has no symbols
libtool: link: rm -fr .libs/libopensc-pkcs11.lax
libtool: link: ( cd ".libs" && rm -f "libopensc-pkcs11.la" && ln -s "../libopensc-pkcs11.la" "libopensc-pkcs11.la" )
Making all in tools
/bin/sh ../../libtool  --tag=CC   --mode=link gcc -I/Users/morgenfra/Documents/OpenSC/openssl_bin/Library/OpenSC/include  -pthread -Wall -Wextra -Wno-unused-parameter -Werror  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk -arch x86_64 -arch arm64  -arch x86_64 -arch arm64 -framework CryptoTokenKit -framework Foundation -o opensc-tool opensc-tool.o util.o   ../../src/libopensc/libopensc.la ../../src/common/libscdl.la ../../src/common/libcompat.la
libtool: warning: library '/Users/morgenfra/Documents/OpenSC/openpace_bin/Library/OpenSC/lib/libeac.la' was moved.
libtool: warning: library '/Users/morgenfra/Documents/OpenSC/openpace_bin/Library/OpenSC/lib/libeac.la' was moved.
libtool: link: gcc -I/Users/morgenfra/Documents/OpenSC/openssl_bin/Library/OpenSC/include -pthread -Wall -Wextra -Wno-unused-parameter -Werror -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk -arch x86_64 -arch arm64 -arch x86_64 -arch arm64 -o opensc-tool opensc-tool.o util.o  ../../src/libopensc/.libs/libopensc.a -L/Users/morgenfra/Documents/OpenSC/openpace_bin/Library/OpenSC/lib -L/Users/morgenfra/Documents/OpenSC/openssl_bin/Library/OpenSC/lib -lz /Users/morgenfra/Documents/OpenSC/openpace_bin/Library/OpenSC/lib/libeac.a -lcrypto ../../src/common/.libs/libscdl.a ../../src/common/.libs/libcompat.a -framework Foundation -framework CryptoTokenKit -pthread
Undefined symbols for architecture arm64:
  "_sc_get_cryptotokenkit_driver", referenced from:
      _sc_context_create in libopensc.a(libopensc_la-ctx.o)
ld: symbol(s) not found for architecture arm64

Note that

  • -arch x86_64 -arch arm64 are specified when compiling reader-cryptotokenkit.m
  • PC/SC backend compiles, CTK backend does not. Without OpenSCToken, you may trigger the same error with the following change:
diff --git a/MacOSX/build-package.in b/MacOSX/build-package.in
index bea6d0046..d5d57f207 100755
--- a/MacOSX/build-package.in
+++ b/MacOSX/build-package.in
@@ -85,7 +85,7 @@ if ! test -e ${BUILDPATH}/target/$PREFIX/lib/pkgconfig; then
                --enable-static \
                --enable-strict \
                --disable-assert \
-               --enable-sm # TODO: remove this (must be sensible default in master)
+               --enable-sm --disable-pcsc  --enable-cryptotokenkit # TODO: remove this (must be sensible default in master)
 
        # always make clean
        make clean

I'm not sure how to fix this problem.

In Travis CI, the build already fails when compiling OpenSSL for arm64:

In file included from apps/apps.c:18:

In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/stdio.h:64:

In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_stdio.h:68:

/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h:807:2: error: Unsupported architecture

#error Unsupported architecture

 ^

Last, but not least, there's a corner case when building on M1 (arm64). In this case, no fat (universal) binary is created for OpenSC. Instead, it is built twice for arm64...

@metsma
Copy link
Copy Markdown
Contributor Author

metsma commented Feb 8, 2021

 | Last, but not least, there's a corner case when building on M1 (arm64). In this case, no fat (universal) binary is created for OpenSC. Instead, it is built twice for arm64...

can you please explain more?

@alsoszaa

This comment has been minimized.

@frankmorgner
Copy link
Copy Markdown
Member

| Last, but not least, there's a corner case when building on M1 (arm64). In this case, no fat (universal) binary is created for OpenSC. Instead, it is built twice for arm64...

can you please explain more?

Sorry, I missed your response.

Actually, I meant OpenSSL, not OpenSC. If built on M1, the first build of OpenSSL produces native libraries (arm, I assume):

KERNEL_BITS=64 ./config no-shared --prefix=$PREFIX

Next, the config script is fed with MACHINE=arm64, which builds arm libraries, again:
MACHINE=arm64 KERNEL_BITS=64 ./config no-shared --prefix=$PREFIX

@metsma
Copy link
Copy Markdown
Contributor Author

metsma commented Feb 25, 2021

forced first build to be always x86_64

@frankmorgner
Copy link
Copy Markdown
Member

frankmorgner commented Mar 4, 2021

I've added some minor commits on top to build the CI binaries. Does anyone want to test?

# Get name of branch in Nightly which corresponds to the latest commit in OpenSC
BRANCH=2021-03-04_634e963a

# Download the build
curl https://github.com/OpenSC/Nightly/archive/${BRANCH}.zip -L --output ${BRANCH}.zip

# Unpack the build
unzip ${BRANCH}.zip

# Recreate the macOS image with arm64
cat OpenSC-0.21.0.dmg.* > OpenSC-0.21.0.dmg

# Recreate the macOS image without arm64, but with tokend
cat OpenSC-0.21.0-tokend.dmg.* > OpenSC-0.21.0-tokend.dmg

@frankmorgner
Copy link
Copy Markdown
Member

@alsoszaa @jcaminamartin, would you mind testing the new binaries on your m1 computer?

@alsoszaa
Copy link
Copy Markdown

alsoszaa commented Mar 9, 2021

@alsoszaa @jcaminamartin, would you mind testing the new binaries on your m1 computer?

Okay. after running through your instructions you posted here 6 days ago (minus the last part to recreate the image without arm64), I have tested with the same exact ssh keygen command that gave me the error message I posted in this thread. It works! no message about incompatible arch! If you give me a day, I can test my other requirements and get back to you on this same thread.
Thanks a ton guys!

@alsoszaa
Copy link
Copy Markdown

alsoszaa commented Mar 11, 2021

Okay, so after testing, I am able to do all my necessary work and the PKCS11 issues I had before, don't exist anymore! Great job on getting it to work on the newer Mac M1 (ARM64 architecture).
I am very thankful that now I can move from my PC back to my MacBook! Since you fixed my issue, I'd love to repay the favor by helping you where I can. Just send me a simple step-by-step for anything you need me to try and I will do so! The email address in my profile works to send me these.
Congratulations on a great build and thanks again!

@frankmorgner
Copy link
Copy Markdown
Member

Great, thanks for your feedback!

@frankmorgner
Copy link
Copy Markdown
Member

merged with 85c5610 and the CI integration on top

@metsma metsma deleted the arm64 branch March 16, 2021 10:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants