conda-forge / ace-feedstock

A conda-smithy repository for ace.
BSD 3-Clause "New" or "Revised" License
5 stars 3 forks source link

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

Closed traversaro closed 4 months ago

traversaro commented 2 years ago

In IIT, we are investigating support for building packages for osx-arm64 (see https://github.com/robotology/robotology-superbuild/issues/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 commented 2 years ago

Very likely you need https://github.com/DOCGroup/ACE_TAO/pull/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 commented 2 years ago

Thanks @jwillemsen !

jwillemsen commented 2 years ago

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

jwillemsen commented 2 years ago

ACE 7.0.6 is now available, see https://github.com/conda-forge/ace-feedstock/pull/30

jwillemsen commented 1 year ago

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

mitza-oci commented 1 year ago

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

jwillemsen commented 1 year ago

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 commented 1 year ago

I just restarted the CI on https://github.com/conda-forge/ace-feedstock/pull/45, so we should be able to see the cross-compilation logs.

jwillemsen commented 1 year ago

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 commented 1 year ago

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 commented 1 year ago

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

traversaro commented 4 months ago

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

traversaro commented 4 months ago

I think https://github.com/conda-forge/ace-feedstock/pull/59 should be a good solution.