Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.
Announcements
The Intel sign-in experience has changed to support enhanced security controls. If you sign in, click here for more information.

MacOS universal binaries

Matthieu_Brucher
Beginner
651 Views

Hi,

I just got update 3 installed on my Mac. I need to build a universal binary for an app/plugin that requires it per Apple requirements (GarageBand).

Unfortunately, it seems that the free/community edition is only 64bits. This is not mentioned in any documentation, so is it an oversight?

 

0 Kudos
6 Replies
Matthieu_Brucher
Beginner
651 Views

Just saw this:

  • Installation on IA-32 architecture hosts is no longer supported, and the Intel IPP packages for Intel® 64 architecture hosts include both 64-bit and 32-bit Intel IPP libraries.

But it's not true, the 32bits are not there on MacOS.

Jing_Xu
Employee
651 Views

Installation on IA-32 architecture hosts is no longer supported, 32bit IPP apps are suggested to be developed on 64bit hosts.

Matthieu_Brucher
Beginner
651 Views

Jing X. (Intel) wrote:

Installation on IA-32 architecture hosts is no longer supported, 32bit IPP apps are suggested to be developed on 64bit hosts.

Strange, I tried with the static version, it failed:

Ld /Users/matthieu/src/AudioTK-build32/ATK/Utility/Release/libATKUtility.dylib normal i386

    cd /Users/matthieu/src/AudioTK

    export MACOSX_DEPLOYMENT_TARGET=10.11

    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch i386 -dynamiclib -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -L/Users/matthieu/src/AudioTK-build32/ATK/Utility/Release -F/Users/matthieu/src/AudioTK-build32/ATK/Utility/Release -filelist /Users/matthieu/src/AudioTK-build32/ATK/Utility/AudioTK.build/Release/ATKUtility.build/Objects-normal/i386/ATKUtility.LinkFileList -install_name /Users/matthieu/src/AudioTK-build32/ATK/Utility/Release/libATKUtility.dylib -mmacosx-version-min=10.11 -pthread -dynamiclib -Wl,-headerpad_max_install_names /Users/matthieu/src/AudioTK-build32/ATK/Core/Release/libATKCore.dylib /opt/intel/ipp/lib/libipps.a /opt/intel/ipp/lib/libippcore.a -single_module -Xlinker -dependency_info -Xlinker /Users/matthieu/src/AudioTK-build32/ATK/Utility/AudioTK.build/Release/ATKUtility.build/Objects-normal/i386/ATKUtility_dependency_info.dat -o /Users/matthieu/src/AudioTK-build32/ATK/Utility/Release/libATKUtility.dylib

 

clang: warning: argument unused during compilation: '-pthread'

Undefined symbols for architecture i386:

  "_g9_ippsCos_64f_A53", referenced from:

      _g9_owns_initTabTwdBase_64f in libipps.a(psfftdblkcn_g9---owns_initTabTwdBase_64f.o)

  "_g9_ippsSin_64f_A53", referenced from:

      _g9_owns_initTabTwdBase_64f in libipps.a(psfftdblkcn_g9---owns_initTabTwdBase_64f.o)

  "_h9_ippsCos_64f_A53", referenced from:

      _h9_owns_initTabTwdBase_64f in libipps.a(psfftdblkcn_h9---owns_initTabTwdBase_64f.o)

  "_h9_ippsSin_64f_A53", referenced from:

      _h9_owns_initTabTwdBase_64f in libipps.a(psfftdblkcn_h9---owns_initTabTwdBase_64f.o)

  "_p8_ippsCos_64f_A53", referenced from:

      _p8_owns_initTabTwdBase_64f in libipps.a(psfftdblkcn_p8---owns_initTabTwdBase_64f.o)

  "_p8_ippsSin_64f_A53", referenced from:

      _p8_owns_initTabTwdBase_64f in libipps.a(psfftdblkcn_p8---owns_initTabTwdBase_64f.o)

  "_s8_ippsCos_64f_A53", referenced from:

      _s8_owns_initTabTwdBase_64f in libipps.a(psfftdblkcn_s8---owns_initTabTwdBase_64f.o)

  "_s8_ippsSin_64f_A53", referenced from:

      _s8_owns_initTabTwdBase_64f in libipps.a(psfftdblkcn_s8---owns_initTabTwdBase_64f.o)

ld: symbol(s) not found for architecture i386

clang: error: linker command failed with exit code 1 (use -v to see invocation)

 

 

It seems that the shared version doesn't have these link issues (yet?). The inconvenience is that my app now relies on an external library... Unless there is already an official IPP framework object for Xcode?

Pavel_V_Intel
Employee
651 Views

Hi Matthieu, 

Try to add VM library in the linking order like this:

/opt/intel/ipp/lib/libipps.a  /opt/intel/ipp/lib/libippvm.a /opt/intel/ipp/lib/libippcore.a

Matthieu_Brucher
Beginner
651 Views

Excellent! Thanks a lot!

I still had to copy the libraries to a custom place so that Xcode doesn't pick up the shared library version, as with them I can't redistribute the app. But now I can move forward :)

Pavel_V_Intel
Employee
651 Views

If you add libraries to "Other Linker Flags" in XCode with full path it should work

/opt/intel/ipp/lib/libipps.a
/opt/intel/ipp/lib/libippvm.a
/opt/intel/ipp/lib/libippcore.a

or

${IPPROOT}/lib/libipps.a
${IPPROOT}/lib/libippvm.a
${IPPROOT}/lib/libippcore.a

But then IPPROOT should be set in Preferences -> Locations -> Custom Paths

We use this approach in IPP examples. They have XCode projects and you can check it.

Reply