Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add build for macOS arm64 (osx-arm64) #29

Closed
traversaro opened this issue Jan 5, 2022 · 13 comments · Fixed by #59
Closed

Add build for macOS arm64 (osx-arm64) #29

traversaro opened this issue Jan 5, 2022 · 13 comments · Fixed by #59

Comments

@traversaro
Copy link
Contributor

In IIT, we are investigating support for building packages for osx-arm64 (see robotology/robotology-superbuild#916), and a dependency for this is ace. For doing this here, we need to:

@jwillemsen do you have any insight on this? Thanks in advance!

@jwillemsen
Copy link
Contributor

Very likely you need DOCGroup/ACE_TAO#1737 which will be part of ACE 7.0.6. There are some CI builds for MacOSX but very minimal, no idea whether it works. Cross compilation hasn't been tried as far as I know, so very likely you need to make some enhancements to ACE

@traversaro
Copy link
Contributor Author

Thanks @jwillemsen !

@jwillemsen
Copy link
Contributor

I would recommend to just try ACE with arm64 and report patches upstream

@jwillemsen
Copy link
Contributor

ACE 7.0.6 is now available, see #30

@jwillemsen
Copy link
Contributor

Could #40 maybe be because -m64 is used by our make files?

@mitza-oci
Copy link

What was the error when attempting to cross-compile ACE?

@jwillemsen
Copy link
Contributor

I can't find a log from the CI that has the error, maybe you can add here how you invoke the cross compiler in your build so that someone can compare that at some point @mitza-oci ? As far as I remember it appears to build a x64 version with the cross compiler. Maybe you can also paste your platform_macros.GNU here for the cross compile @mitza-oci ?

@traversaro
Copy link
Contributor Author

I just restarted the CI on #45, so we should be able to see the cross-compilation logs.

@jwillemsen
Copy link
Contributor

The compiler invocation from conda-forge, I think -m64 could be maybe be the issue

clang++ -Wnon-virtual-dtor -std=c++11 -g -m64 -Wall -Wextra -Wpointer-arith -D_FORTIFY_SOURCE=2 -isystem $PREFIX/include -mmacosx-version-min=11.0 -DACE_HAS_CUSTOM_EXPORT_MACROS=0  -I$SRC_DIR -D__ACE_INLINE__ -I.. -DACE_BUILD_DLL  -c  -o arm64/.shobj/ace_wchar.o $SRC_DIR/ace/ace_wchar.cpp
clang++ -dynamiclib -install_name @rpath/libACE.dylib -o arm64/libACE.dylib arm64/.shobj/ACE.o arm64/.shobj/ACE_crc32.o arm64/.shobj/ACE_crc_ccitt.o arm64/.shobj/ATM_Acceptor.o arm64/.shobj/ATM_Addr.o arm64/.shobj/ATM_Connector.o arm64/.shobj/ATM_Params.o arm64/.shobj/ATM_QoS.o arm64/.shobj/ATM_Stream.o arm64/.shobj/Activation_Queue.o arm64/.shobj/Active_Map_Manager.o arm64/.shobj/Addr.o arm64/.shobj/Argv_Type_Converter.o arm64/.shobj/Assert.o arm64/.shobj/Asynch_IO.o arm64/.shobj/Asynch_IO_Impl.o arm64/.shobj/Asynch_Pseudo_Task.o arm64/.shobj/Atomic_Op.o arm64/.shobj/Atomic_Op_Sparc.o arm64/.shobj/Barrier.o arm64/.shobj/Base_Thread_Adapter.o arm64/.shobj/Based_Pointer_Repository.o arm64/.shobj/Basic_Stats.o arm64/.shobj/Basic_Types.o arm64/.shobj/CDR_Base.o arm64/.shobj/CDR_Size.o arm64/.shobj/CDR_Stream.o arm64/.shobj/Capabilities.o arm64/.shobj/Cleanup.o arm64/.shobj/Codecs.o arm64/.shobj/Codeset_IBM1047.o arm64/.shobj/Codeset_Registry.o arm64/.shobj/Codeset_Registry_db.o arm64/.shobj/Condition_Attributes.o arm64/.shobj/Condition_Recursive_Thread_Mutex.o arm64/.shobj/Condition_Thread_Mutex.o arm64/.shobj/Configuration.o arm64/.shobj/Configuration_Import_Export.o arm64/.shobj/Connection_Recycling_Strategy.o arm64/.shobj/Containers.o arm64/.shobj/Copy_Disabled.o arm64/.shobj/DEV.o arm64/.shobj/DEV_Addr.o arm64/.shobj/DEV_Connector.o arm64/.shobj/DEV_IO.o arm64/.shobj/DLL.o arm64/.shobj/DLL_Manager.o arm64/.shobj/Date_Time.o arm64/.shobj/Dev_Poll_Reactor.o arm64/.shobj/Dirent.o arm64/.shobj/Dirent_Selector.o arm64/.shobj/Dump.o arm64/.shobj/Dynamic.o arm64/.shobj/Dynamic_Message_Strategy.o arm64/.shobj/Dynamic_Service_Base.o arm64/.shobj/Dynamic_Service_Dependency.o arm64/.shobj/Encoding_Converter.o arm64/.shobj/Encoding_Converter_Factory.o arm64/.shobj/Event_Base.o arm64/.shobj/Event_Handler.o arm64/.shobj/Event_Handler_Handle_Timeout_Upcall.o arm64/.shobj/FIFO.o arm64/.shobj/FIFO_Recv.o arm64/.shobj/FIFO_Recv_Msg.o arm64/.shobj/FIFO_Send.o arm64/.shobj/FIFO_Send_Msg.o arm64/.shobj/FILE.o arm64/.shobj/FILE_Addr.o arm64/.shobj/FILE_Connector.o arm64/.shobj/FILE_IO.o arm64/.shobj/File_Lock.o arm64/.shobj/Filecache.o arm64/.shobj/Flag_Manip.o arm64/.shobj/Framework_Component.o arm64/.shobj/Functor.o arm64/.shobj/Functor_String.o arm64/.shobj/Get_Opt.o arm64/.shobj/Handle_Ops.o arm64/.shobj/Handle_Set.o arm64/.shobj/Hashable.o arm64/.shobj/High_Res_Timer.o arm64/.shobj/ICMP_Socket.o arm64/.shobj/INET_Addr.o arm64/.shobj/IOStream.o arm64/.shobj/IO_Cntl_Msg.o arm64/.shobj/IO_SAP.o arm64/.shobj/IPC_SAP.o arm64/.shobj/Init_ACE.o arm64/.shobj/LSOCK.o arm64/.shobj/LSOCK_Acceptor.o arm64/.shobj/LSOCK_CODgram.o arm64/.shobj/LSOCK_Connector.o arm64/.shobj/LSOCK_Dgram.o arm64/.shobj/LSOCK_Stream.o arm64/.shobj/Lib_Find.o arm64/.shobj/Local_Memory_Pool.o arm64/.shobj/Local_Name_Space.o arm64/.shobj/Local_Tokens.o arm64/.shobj/Lock.o arm64/.shobj/Log_Category.o arm64/.shobj/Log_Msg.o arm64/.shobj/Log_Msg_Android_Logcat.o arm64/.shobj/Log_Msg_Backend.o arm64/.shobj/Log_Msg_Callback.o arm64/.shobj/Log_Msg_IPC.o arm64/.shobj/Log_Msg_NT_Event_Log.o arm64/.shobj/Log_Msg_UNIX_Syslog.o arm64/.shobj/Log_Record.o arm64/.shobj/Logging_Strategy.o arm64/.shobj/MEM_Acceptor.o arm64/.shobj/MEM_Addr.o arm64/.shobj/MEM_Connector.o arm64/.shobj/MEM_IO.o arm64/.shobj/MEM_SAP.o arm64/.shobj/MEM_Stream.o arm64/.shobj/MMAP_Memory_Pool.o arm64/.shobj/MQX_Filesystem.o arm64/.shobj/Malloc.o arm64/.shobj/Malloc_Allocator.o arm64/.shobj/Mem_Map.o arm64/.shobj/Message_Block.o arm64/.shobj/Message_Queue.o arm64/.shobj/Message_Queue_NT.o arm64/.shobj/Message_Queue_Vx.o arm64/.shobj/Method_Request.o arm64/.shobj/Monitor_Admin.o arm64/.shobj/Monitor_Admin_Manager.o arm64/.shobj/Monitor_Base.o arm64/.shobj/Monitor_Control_Action.o arm64/.shobj/Monitor_Control_Types.o arm64/.shobj/Monitor_Point_Registry.o arm64/.shobj/Monitor_Size.o arm64/.shobj/Monotonic_Time_Policy.o arm64/.shobj/Msg_WFMO_Reactor.o arm64/.shobj/Multihomed_INET_Addr.o arm64/.shobj/Mutex.o arm64/.shobj/NT_Service.o arm64/.shobj/Name_Proxy.o arm64/.shobj/Name_Request_Reply.o arm64/.shobj/Name_Space.o arm64/.shobj/Naming_Context.o arm64/.shobj/Netlink_Addr.o arm64/.shobj/Notification_Queue.o arm64/.shobj/Notification_Strategy.o arm64/.shobj/Null_Mutex.o arm64/.shobj/OS_Errno.o arm64/.shobj/OS_Log_Msg_Attributes.o arm64/.shobj/OS_NS_Thread.o arm64/.shobj/OS_NS_arpa_inet.o arm64/.shobj/OS_NS_ctype.o arm64/.shobj/OS_NS_devctl.o arm64/.shobj/OS_NS_dirent.o arm64/.shobj/OS_NS_dlfcn.o arm64/.shobj/OS_NS_errno.o arm64/.shobj/OS_NS_fcntl.o arm64/.shobj/OS_NS_math.o arm64/.shobj/OS_NS_netdb.o arm64/.shobj/OS_NS_poll.o arm64/.shobj/OS_NS_pwd.o arm64/.shobj/OS_NS_regex.o arm64/.shobj/OS_NS_signal.o arm64/.shobj/OS_NS_stdio.o arm64/.shobj/OS_NS_stdlib.o arm64/.shobj/OS_NS_string.o arm64/.shobj/OS_NS_strings.o arm64/.shobj/OS_NS_stropts.o arm64/.shobj/OS_NS_sys_mman.o arm64/.shobj/OS_NS_sys_msg.o arm64/.shobj/OS_NS_sys_resource.o arm64/.shobj/OS_NS_sys_select.o arm64/.shobj/OS_NS_sys_sendfile.o arm64/.shobj/OS_NS_sys_shm.o arm64/.shobj/OS_NS_sys_socket.o arm64/.shobj/OS_NS_sys_stat.o arm64/.shobj/OS_NS_sys_time.o arm64/.shobj/OS_NS_sys_uio.o arm64/.shobj/OS_NS_sys_utsname.o arm64/.shobj/OS_NS_sys_wait.o arm64/.shobj/OS_NS_time.o arm64/.shobj/OS_NS_unistd.o arm64/.shobj/OS_NS_wchar.o arm64/.shobj/OS_NS_wctype.o arm64/.shobj/OS_QoS.o arm64/.shobj/OS_TLI.o arm64/.shobj/OS_Thread_Adapter.o arm64/.shobj/OS_main.o arm64/.shobj/Obchunk.o arm64/.shobj/Object_Manager.o arm64/.shobj/Object_Manager_Base.o arm64/.shobj/Obstack.o arm64/.shobj/PI_Malloc.o arm64/.shobj/POSIX_Asynch_IO.o arm64/.shobj/POSIX_CB_Proactor.o arm64/.shobj/POSIX_Proactor.o arm64/.shobj/Pagefile_Memory_Pool.o arm64/.shobj/Parse_Node.o arm64/.shobj/Ping_Socket.o arm64/.shobj/Pipe.o arm64/.shobj/Priority_Reactor.o arm64/.shobj/Proactor.o arm64/.shobj/Proactor_Impl.o arm64/.shobj/Process.o arm64/.shobj/Process_Manager.o arm64/.shobj/Process_Mutex.o arm64/.shobj/Process_Semaphore.o arm64/.shobj/Profile_Timer.o arm64/.shobj/RW_Mutex.o arm64/.shobj/RW_Process_Mutex.o arm64/.shobj/RW_Thread_Mutex.o arm64/.shobj/Reactor.o arm64/.shobj/Reactor_Impl.o arm64/.shobj/Reactor_Notification_Strategy.o arm64/.shobj/Reactor_Timer_Interface.o arm64/.shobj/Read_Buffer.o arm64/.shobj/Recursive_Thread_Mutex.o arm64/.shobj/Recyclable.o arm64/.shobj/Registry.o arm64/.shobj/Registry_Name_Space.o arm64/.shobj/Remote_Name_Space.o arm64/.shobj/Remote_Tokens.o arm64/.shobj/Rtems_init.o arm64/.shobj/SOCK.o arm64/.shobj/SOCK_Acceptor.o arm64/.shobj/SOCK_CODgram.o arm64/.shobj/SOCK_Connector.o arm64/.shobj/SOCK_Dgram.o arm64/.shobj/SOCK_Dgram_Bcast.o arm64/.shobj/SOCK_Dgram_Mcast.o arm64/.shobj/SOCK_IO.o arm64/.shobj/SOCK_Netlink.o arm64/.shobj/SOCK_SEQPACK_Acceptor.o arm64/.shobj/SOCK_SEQPACK_Association.o arm64/.shobj/SOCK_SEQPACK_Connector.o arm64/.shobj/SOCK_Stream.o arm64/.shobj/SPIPE.o arm64/.shobj/SPIPE_Acceptor.o arm64/.shobj/SPIPE_Addr.o arm64/.shobj/SPIPE_Connector.o arm64/.shobj/SPIPE_Stream.o arm64/.shobj/SString.o arm64/.shobj/SUN_Proactor.o arm64/.shobj/SV_Message.o arm64/.shobj/SV_Message_Queue.o arm64/.shobj/SV_Semaphore_Complex.o arm64/.shobj/SV_Semaphore_Simple.o arm64/.shobj/SV_Shared_Memory.o arm64/.shobj/Sample_History.o arm64/.shobj/Sbrk_Memory_Pool.o arm64/.shobj/Sched_Params.o arm64/.shobj/Select_Reactor_Base.o arm64/.shobj/Semaphore.o arm64/.shobj/Service_Config.o arm64/.shobj/Service_Gestalt.o arm64/.shobj/Service_Manager.o arm64/.shobj/Service_Object.o arm64/.shobj/Service_Repository.o arm64/.shobj/Service_Types.o arm64/.shobj/Shared_Memory.o arm64/.shobj/Shared_Memory_MM.o arm64/.shobj/Shared_Memory_Pool.o arm64/.shobj/Shared_Memory_SV.o arm64/.shobj/Shared_Object.o arm64/.shobj/Sig_Adapter.o arm64/.shobj/Sig_Handler.o arm64/.shobj/Signal.o arm64/.shobj/Sock_Connect.o arm64/.shobj/Stack_Trace.o arm64/.shobj/Stats.o arm64/.shobj/String_Base_Const.o arm64/.shobj/Svc_Conf_Lexer.o arm64/.shobj/Svc_Conf_y.o arm64/.shobj/Synch_Options.o arm64/.shobj/System_Time.o arm64/.shobj/TLI.o arm64/.shobj/TLI_Acceptor.o arm64/.shobj/TLI_Connector.o arm64/.shobj/TLI_Stream.o arm64/.shobj/TP_Reactor.o arm64/.shobj/TSS_Adapter.o arm64/.shobj/TTY_IO.o arm64/.shobj/Task.o arm64/.shobj/Thread.o arm64/.shobj/Thread_Adapter.o arm64/.shobj/Thread_Control.o arm64/.shobj/Thread_Exit.o arm64/.shobj/Thread_Hook.o arm64/.shobj/Thread_Manager.o arm64/.shobj/Thread_Mutex.o arm64/.shobj/Thread_Semaphore.o arm64/.shobj/Throughput_Stats.o arm64/.shobj/Time_Policy.o arm64/.shobj/Time_Value.o arm64/.shobj/Timeprobe.o arm64/.shobj/Token.o arm64/.shobj/Token_Collection.o arm64/.shobj/Token_Invariants.o arm64/.shobj/Token_Manager.o arm64/.shobj/Token_Request_Reply.o arm64/.shobj/Trace.o arm64/.shobj/UNIX_Addr.o arm64/.shobj/UPIPE_Acceptor.o arm64/.shobj/UPIPE_Connector.o arm64/.shobj/UPIPE_Stream.o arm64/.shobj/UTF16_Encoding_Converter.o arm64/.shobj/UTF32_Encoding_Converter.o arm64/.shobj/UTF8_Encoding_Converter.o arm64/.shobj/UUID.o arm64/.shobj/WFMO_Reactor.o arm64/.shobj/WIN32_Asynch_IO.o arm64/.shobj/WIN32_Proactor.o arm64/.shobj/XML_Svc_Conf.o arm64/.shobj/XTI_ATM_Mcast.o arm64/.shobj/ace_wchar.o -Wl,-pie -Wl,-headerpad_max_install_names -Wl,-dead_strip_dylibs -Wl,-rpath,$PREFIX/lib -L$PREFIX/lib -m64 -flat_namespace -rpath @executable_path/. -rpath @executable_path/"../lib" -L../lib/arm64 -L. -L./arm64 -L../lib -L../lib/arm64  -Wl,-rpath,$PREFIX/lib   
ld: warning: -pie being ignored. It is only used when linking a main executable
ld: warning: ignoring file /Users/runner/miniforge3/conda-bld/ace_1676881526911/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_place/lib/libc++.dylib, building for macOS-x86_64 but attempting to link with file built for macOS-arm64
Undefined symbols for architecture x86_64:

@mitza-oci
Copy link

I have -m64 and it works. I'll try adding it to GitHub Actions.

clang++ -g -target arm64-apple-macos -m64 -W -Wall -Wno-deprecated-declarations -Wno-deprecated-register -DACE_HAS_CUSTOM_EXPORT_MACROS=0   -I/Users/taoadmin/arm-target/OpenDDS/build/target/ACE_wrappers -D__ACE_INLINE__ -I.. -DACE_BUILD_DLL  -c  -o .shobj/Local_Name_Space.o Local_Name_Space.cpp
clang++ -dynamiclib -install_name @rpath/libACE.dylib -o libACE.dylib .shobj/Local_Name_Space.o [... all .o files ...] -target arm64-apple-macos -m64 -flat_namespace -rpath @executable_path/. -rpath @executable_path/"../lib" -L../lib -L.  -L../lib

@jwillemsen
Copy link
Contributor

Ok, but on conda-forget -target arm64-apple-macos seems to be lacking

@traversaro
Copy link
Contributor Author

Unfortunately native osx-arm64 are still missing. Let's try to get cross-compilation to work again.

@traversaro traversaro mentioned this issue Jun 7, 2024
5 tasks
@traversaro
Copy link
Contributor Author

I think #59 should be a good solution.

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 a pull request may close this issue.

3 participants