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

building OAM fails #14

Open
EliasVansteenkiste opened this issue Aug 2, 2023 · 0 comments
Open

building OAM fails #14

EliasVansteenkiste opened this issue Aug 2, 2023 · 0 comments

Comments

@EliasVansteenkiste
Copy link

...
-- Performing Test HAVE_CXX_FLAG - Success
Checking C compiler flag support for: -mavx2
-- Performing Test HAVE_C_FLAG
-- Performing Test HAVE_C_FLAG - Success
Checking C compiler flag support for: -mavx2
-- Performing Test HAVE_CXX_FLAG
-- Performing Test HAVE_CXX_FLAG - Success
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    LIBTYPE


-- Build files have been written to: /Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_build
+ make -j 12
Scanning dependencies of target aom_version_check
[  1%] Updating version info if necessary.
[  1%] Built target aom_version_check
Scanning dependencies of target aom_version
[  1%] Building C object CMakeFiles/aom_version.dir/gen_src/aom_version_dummy.c.o
[  1%] Linking C static library libaom_version.a
[  2%] Built target aom_version
[  3%] Writing aom.pc
Scanning dependencies of target aom_rtcd
Scanning dependencies of target aom_pc
[  3%] Building C object CMakeFiles/aom_pc.dir/gen_src/aom_pc_dummy.c.o
[  3%] Building C object CMakeFiles/aom_rtcd.dir/aom_scale/aom_scale_rtcd.c.o
[  3%] Building C object CMakeFiles/aom_rtcd.dir/aom_dsp/aom_dsp_rtcd.c.o
[  4%] Building C object CMakeFiles/aom_rtcd.dir/av1/common/av1_rtcd.c.o
In file included from /Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_scale/aom_scale_rtcd.c:14:
In file included from /Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_build/config/aom_scale_rtcd.h:86:
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:187:3: error: invalid output constraint '=a' in asm
  cpuid(0, 0, max_cpuid_val, reg_ebx, reg_ecx, reg_edx);
  ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:50:26: note: expanded from macro 'cpuid'
                       : "=a"(ax), "=b"(bx), "=c"(cx), "=d"(dx) \
                         ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:192:3: error: invalid output constraint '=a' in asm
  cpuid(1, 0, reg_eax, reg_ebx, reg_ecx, reg_edx);
  ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:50:26: note: expanded from macro 'cpuid'
                       : "=a"(ax), "=b"(bx), "=c"(cx), "=d"(dx) \
                         ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:215:9: error: invalid output constraint '=a' in asm
        cpuid(7, 0, reg_eax, reg_ebx, reg_ecx, reg_edx);
        ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:50:26: note: expanded from macro 'cpuid'
                       : "=a"(ax), "=b"(bx), "=c"(cx), "=d"(dx) \
                         ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:248:38: error: invalid output constraint '=a' in asm
  __asm__ __volatile__("rdtsc\n\t" : "=a"(tsc) :);
                                     ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:266:34: error: invalid output constraint '=a' in asm
  __asm__ __volatile__("rdtsc" : "=a"(lo), "=d"(hi));
                                 ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:285:39: error: invalid output constraint '=a' in asm
  __asm__ __volatile__("rdtscp\n\t" : "=a"(tscp) :);
                                      ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:305:3: error: invalid output constraint '=a' in asm
  cpuid(0, 0, reg_eax, reg_ebx, reg_ecx, reg_edx);
  ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:50:26: note: expanded from macro 'cpuid'
                       : "=a"(ax), "=b"(bx), "=c"(cx), "=d"(dx) \
                         ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:312:3: error: invalid output constraint '=a' in asm
  cpuid(0, 0, reg_eax, reg_ebx, reg_ecx, reg_edx);
  ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:50:26: note: expanded from macro 'cpuid'
                       : "=a"(ax), "=b"(bx), "=c"(cx), "=d"(dx) \
                         ^
[  4%] Linking C static library libaom_pc.a
8 errors generated.
make[2]: *** [CMakeFiles/aom_rtcd.dir/aom_scale/aom_scale_rtcd.c.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from /Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/av1/common/av1_rtcd.c:14:
In file included from /Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_build/config/av1_rtcd.h:701:
/Users/elias_v//external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:187:3: error: invalid output constraint '=a' in asm
  cpuid(0, 0, max_cpuid_val, reg_ebx, reg_ecx, reg_edx);
  ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:50:26: note: expanded from macro 'cpuid'
                       : "=a"(ax), "=b"(bx), "=c"(cx), "=d"(dx) \
                         ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:192:3: error: invalid output constraint '=a' in asm
  cpuid(1, 0, reg_eax, reg_ebx, reg_ecx, reg_edx);
  ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:50:26: note: expanded from macro 'cpuid'
                       : "=a"(ax), "=b"(bx), "=c"(cx), "=d"(dx) \
                         ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:215:9: error: invalid output constraint '=a' in asm
        cpuid(7, 0, reg_eax, reg_ebx, reg_ecx, reg_edx);
        ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:50:26: note: expanded from macro 'cpuid'
                       : "=a"(ax), "=b"(bx), "=c"(cx), "=d"(dx) \
                         ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:248:38: error: invalid output constraint '=a' in asm
  __asm__ __volatile__("rdtsc\n\t" : "=a"(tsc) :);
                                     ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:266:34: error: invalid output constraint '=a' in asm
  __asm__ __volatile__("rdtsc" : "=a"(lo), "=d"(hi));
                                 ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:285:39: error: invalid output constraint '=a' in asm
  __asm__ __volatile__("rdtscp\n\t" : "=a"(tscp) :);
                                      ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:305:3: error: invalid output constraint '=a' in asm
  cpuid(0, 0, reg_eax, reg_ebx, reg_ecx, reg_edx);
  ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:50:26: note: expanded from macro 'cpuid'
                       : "=a"(ax), "=b"(bx), "=c"(cx), "=d"(dx) \
                         ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:312:3: error: invalid output constraint '=a' in asm
  cpuid(0, 0, reg_eax, reg_ebx, reg_ecx, reg_edx);
  ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:50:26: note: expanded from macro 'cpuid'
                       : "=a"(ax), "=b"(bx), "=c"(cx), "=d"(dx) \
                         ^
8 errors generated.
make[2]: *** [CMakeFiles/aom_rtcd.dir/av1/common/av1_rtcd.c.o] Error 1
In file included from /Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_dsp/aom_dsp_rtcd.c:14:
In file included from /Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_build/config/aom_dsp_rtcd.h:5967:
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:187:3: error: invalid output constraint '=a' in asm
  cpuid(0, 0, max_cpuid_val, reg_ebx, reg_ecx, reg_edx);
  ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:50:26: note: expanded from macro 'cpuid'
                       : "=a"(ax), "=b"(bx), "=c"(cx), "=d"(dx) \
                         ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:192:3: error: invalid output constraint '=a' in asm
  cpuid(1, 0, reg_eax, reg_ebx, reg_ecx, reg_edx);
  ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:50:26: note: expanded from macro 'cpuid'
                       : "=a"(ax), "=b"(bx), "=c"(cx), "=d"(dx) \
                         ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:215:9: error: invalid output constraint '=a' in asm
        cpuid(7, 0, reg_eax, reg_ebx, reg_ecx, reg_edx);
        ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:50:26: note: expanded from macro 'cpuid'
                       : "=a"(ax), "=b"(bx), "=c"(cx), "=d"(dx) \
                         ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:248:38: error: invalid output constraint '=a' in asm
  __asm__ __volatile__("rdtsc\n\t" : "=a"(tsc) :);
                                     ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:266:34: error: invalid output constraint '=a' in asm
  __asm__ __volatile__("rdtsc" : "=a"(lo), "=d"(hi));
                                 ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:285:39: error: invalid output constraint '=a' in asm
  __asm__ __volatile__("rdtscp\n\t" : "=a"(tscp) :);
                                      ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:305:3: error: invalid output constraint '=a' in asm
  cpuid(0, 0, reg_eax, reg_ebx, reg_ecx, reg_edx);
  ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:50:26: note: expanded from macro 'cpuid'
                       : "=a"(ax), "=b"(bx), "=c"(cx), "=d"(dx) \
                         ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:312:3: error: invalid output constraint '=a' in asm
  cpuid(0, 0, reg_eax, reg_ebx, reg_ecx, reg_edx);
  ^
/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:50:26: note: expanded from macro 'cpuid'
                       : "=a"(ax), "=b"(bx), "=c"(cx), "=d"(dx) \
                         ^
8 errors generated.
make[2]: *** [CMakeFiles/aom_rtcd.dir/aom_dsp/aom_dsp_rtcd.c.o] Error 1
make[1]: *** [CMakeFiles/aom_rtcd.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[  4%] Built target aom_pc
make: *** [all] Error 2

It appears that the version of the AOM (Alliance for Open Media) library I am trying to compile is expecting an x86 CPU.
The errors all originate from x86-specific inline assembly instructions in the x86.h file of the AOM (Alliance for Open Media) library, which is a part of FFmpeg.

Specifically, the errors are about the CPUID instruction, which is unique to x86 architecture and is used to identify the features supported by the CPU. For example, the line:

/Users/elias_v/external_repositories/ffmpeg-on-apple-silicon/workdir/compile/aom/aom_ports/x86.h:187:3: error: invalid output constraint '=a' in asm
  cpuid(0, 0, max_cpuid_val, reg_ebx, reg_ecx, reg_edx);
  ^

This line is part of a block of assembly code that's trying to execute the CPUID instruction. The error "invalid output constraint '=a' in asm" is complaining about the constraints on the assembly code, which are specifically written for x86 architecture.

On Apple's M1 and later chips, which use ARM architecture, this CPUID instruction is not available.

How can i fix this issue?

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

No branches or pull requests

1 participant