Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.

MacOS universal binaries

Matthieu_Brucher
Beginner
1,000 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
1,000 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.

0 Kudos
Jing_Xu
Employee
1,000 Views

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

0 Kudos
Matthieu_Brucher
Beginner
1,000 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?

0 Kudos
Pavel_V_Intel
Employee
1,000 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

0 Kudos
Matthieu_Brucher
Beginner
1,000 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 :)

0 Kudos
Pavel_V_Intel
Employee
1,000 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.

0 Kudos
Reply