cinecert / asdcplib

AS-DCP and AS-02 File Access Library
Other
70 stars 54 forks source link

Apple M1 Silicon Big Sur buiding asdcplib fails #80

Open stereo3d opened 3 years ago

stereo3d commented 3 years ago

tried to build asdcplib on my mac mini M1 Silicon.

running:

make && sudo make install

I get the following error and output.

ld: symbol(s) not found for architecture arm64 Any help highly appreciated.

[ 50%] Linking CXX shared library libasdcp.dylib
Undefined symbols for architecture arm64:
  "ASDCP::HMACContext::Reset()", referenced from:
      ASDCP::IntegrityPack::CalcValues(ASDCP::FrameBuffer const&, unsigned char const*, unsigned int, ASDCP::HMACContext*) in AS_DCP_MXF.cpp.o
      ASDCP::IntegrityPack::TestValues(ASDCP::FrameBuffer const&, unsigned char const*, unsigned int, ASDCP::HMACContext*) in AS_DCP_MXF.cpp.o
  "ASDCP::HMACContext::Update(unsigned char const*, unsigned int)", referenced from:
      ASDCP::IntegrityPack::CalcValues(ASDCP::FrameBuffer const&, unsigned char const*, unsigned int, ASDCP::HMACContext*) in AS_DCP_MXF.cpp.o
      ASDCP::IntegrityPack::TestValues(ASDCP::FrameBuffer const&, unsigned char const*, unsigned int, ASDCP::HMACContext*) in AS_DCP_MXF.cpp.o
  "ASDCP::HMACContext::Finalize()", referenced from:
      ASDCP::IntegrityPack::CalcValues(ASDCP::FrameBuffer const&, unsigned char const*, unsigned int, ASDCP::HMACContext*) in AS_DCP_MXF.cpp.o
      ASDCP::IntegrityPack::TestValues(ASDCP::FrameBuffer const&, unsigned char const*, unsigned int, ASDCP::HMACContext*) in AS_DCP_MXF.cpp.o
  "ASDCP::AESDecContext::DecryptBlock(unsigned char const*, unsigned char*, unsigned int)", referenced from:
      ASDCP::DecryptFrameBuffer(ASDCP::FrameBuffer const&, ASDCP::FrameBuffer&, ASDCP::AESDecContext*) in AS_DCP_MXF.cpp.o
  "ASDCP::AESDecContext::SetIVec(unsigned char const*)", referenced from:
      ASDCP::DecryptFrameBuffer(ASDCP::FrameBuffer const&, ASDCP::FrameBuffer&, ASDCP::AESDecContext*) in AS_DCP_MXF.cpp.o
  "ASDCP::AESEncContext::EncryptBlock(unsigned char const*, unsigned char*, unsigned int)", referenced from:
      ASDCP::EncryptFrameBuffer(ASDCP::FrameBuffer const&, ASDCP::FrameBuffer&, ASDCP::AESEncContext*) in AS_DCP_MXF.cpp.o
  "ASDCP::HMACContext::GetHMACValue(unsigned char*) const", referenced from:
      ASDCP::IntegrityPack::CalcValues(ASDCP::FrameBuffer const&, unsigned char const*, unsigned int, ASDCP::HMACContext*) in AS_DCP_MXF.cpp.o
      ASDCP::IntegrityPack::TestValues(ASDCP::FrameBuffer const&, unsigned char const*, unsigned int, ASDCP::HMACContext*) in AS_DCP_MXF.cpp.o
  "ASDCP::HMACContext::TestHMACValue(unsigned char const*) const", referenced from:
      ASDCP::IntegrityPack::TestValues(ASDCP::FrameBuffer const&, unsigned char const*, unsigned int, ASDCP::HMACContext*) in AS_DCP_MXF.cpp.o
  "ASDCP::AESEncContext::GetIVec(unsigned char*) const", referenced from:
      ASDCP::EncryptFrameBuffer(ASDCP::FrameBuffer const&, ASDCP::FrameBuffer&, ASDCP::AESEncContext*) in AS_DCP_MXF.cpp.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [src/libasdcp.2.10.39.dylib] Error 1
make[1]: *** [src/CMakeFiles/libasdcp.dir/all] Error 2
make: *** [all] Error 2
ArnaudBienner commented 3 years ago

I faced the same issue with a recent version of the source code on my mac book pro (Intel, Mojave), where CMake didn't find openssl library location. You probably had the following line when running CMake: -- Building without encryption support It looks like some #ifdef HAVE_OPENSSL are missing AS_DCP_MXF.cpp.

Until this is fixed, and assuming you want to build with encryption support, you should re-run CMake, helping it find openssl: CMAKE_HINT=/usr/local/opt/openssl\@1.1/ cmake ..

Assuming openssl is installed under /usr/local/opt/openssl\@1.1/ which was the case for me after installing it with brew.

ArnaudBienner commented 3 years ago

@uwe22 FYI building without openssl support is fixed on latest master. I think this issue can be closed now.