From kvasilye at justin.tv Fri May 26 02:22:30 2023 From: kvasilye at justin.tv (Kostya Vasilyev) Date: Thu, 25 May 2023 19:22:30 -0700 Subject: [opus] Cross-compiling Opus for Android arm64 Message-ID: Hello, I'm trying to compile Opus for Android arm64 (and ultimately other arch's) using the CMakeLists.txt file available in the repository. My cmake commands are like this: https://gist.github.com/kvasilye/9004332a5f3f90f2a6e868090d004d7b This produces an error: ld: error: undefined symbol: celt_pitch_xcorr_neon >>> referenced by pitch.c:347 (/home/ ANT.AMAZON.COM/kvasilye/opus/celt/pitch.c:347) >>> CMakeFiles/opus.dir/celt/pitch.c.o:(pitch_search) >>> referenced by celt_lpc.c:314 (/home/ ANT.AMAZON.COM/kvasilye/opus/celt/celt_lpc.c:314) >>> CMakeFiles/opus.dir/celt/celt_lpc.c.o:(_celt_autocorr) >>> referenced by burg_modified_FIX.c:98 (/home/ ANT.AMAZON.COM/kvasilye/opus/silk/fixed/burg_modified_FIX.c:98) >>> CMakeFiles/opus.dir/silk/fixed/burg_modified_FIX.c.o:(silk_burg_modified_c) >>> referenced 2 more times Next, I tried to write my own CMakeLists.txt and got stuck too - the undefined symbol above is defined in celt_pitch_xcorr_arm.s which as I understand uses ARM assembler syntax. I converted the file to GNU syntax using the provided Perl script. Trying to compile the output with aarch64-linux-gnu-as gives a whole bunch of errors like: third_party/cmake-build-opus-android-arm64-v8a-Debug/celt_pitch_xcorr_arm_gnu.S: Assembler messages: third_party/cmake-build-opus-android-arm64-v8a-Debug/celt_pitch_xcorr_arm_gnu.S:1: Error: unknown pseudo-op: `.syntax' third_party/cmake-build-opus-android-arm64-v8a-Debug/celt_pitch_xcorr_arm_gnu.S:2: Error: junk at end of line, first unrecognized character is `@' third_party/cmake-build-opus-android-arm64-v8a-Debug/celt_pitch_xcorr_arm_gnu.S:3: Error: junk at end of line, first unrecognized character is `@' third_party/cmake-build-opus-android-arm64-v8a-Debug/celt_pitch_xcorr_arm_gnu.S:4: Error: junk at end of line, first unrecognized character is `@' third_party/cmake-build-opus-android-arm64-v8a-Debug/celt_pitch_xcorr_arm_gnu.S:5: Error: junk at end of line, first unrecognized character is `@' So it looks unhappy with the syntax. Questions: 1 - What is the right way to compile Opus for Android on arm64-v8a? 2 - If I wanted to compile the asm file, how can I do that? 3 - Is this asm file for both armeabi-v7a and arm64-v8a or just for armeabi-v7a? The symbol is required for arm64-v8a, but there is a directive ".arch armv7-a" at the top of the file so I'm confused. I really don't know anything about arm assembly to figure these out on my own, any help would be appreciated! Thanks, -- K -------------- next part -------------- An HTML attachment was scrubbed... URL: From kvasilye at justin.tv Fri May 26 02:32:32 2023 From: kvasilye at justin.tv (Kostya Vasilyev) Date: Thu, 25 May 2023 19:32:32 -0700 Subject: [opus] Cross-compiling Opus for Android arm64 In-Reply-To: References: Message-ID: PS - I was able to compile the .S file converted to GNU syntax using arm-linux-gnueabi-as So I guess it's for arm v7 only? But the celt_pitch_xcorr_neon symbol is undefined also when building for arm64 v8a (with fixed point math), how to resolve? -- K On Thu, May 25, 2023 at 7:22?PM Kostya Vasilyev wrote: > Hello, > > I'm trying to compile Opus for Android arm64 (and ultimately other arch's) > using the CMakeLists.txt file available in the repository. > > My cmake commands are like this: > > https://gist.github.com/kvasilye/9004332a5f3f90f2a6e868090d004d7b > > This produces an error: > > ld: error: undefined symbol: celt_pitch_xcorr_neon > >>> referenced by pitch.c:347 (/home/ > ANT.AMAZON.COM/kvasilye/opus/celt/pitch.c:347) > >>> CMakeFiles/opus.dir/celt/pitch.c.o:(pitch_search) > >>> referenced by celt_lpc.c:314 (/home/ > ANT.AMAZON.COM/kvasilye/opus/celt/celt_lpc.c:314) > >>> CMakeFiles/opus.dir/celt/celt_lpc.c.o:(_celt_autocorr) > >>> referenced by burg_modified_FIX.c:98 (/home/ > ANT.AMAZON.COM/kvasilye/opus/silk/fixed/burg_modified_FIX.c:98) > >>> > CMakeFiles/opus.dir/silk/fixed/burg_modified_FIX.c.o:(silk_burg_modified_c) > >>> referenced 2 more times > > Next, I tried to write my own CMakeLists.txt and got stuck too - the > undefined symbol above is defined in celt_pitch_xcorr_arm.s which as I > understand uses ARM assembler syntax. > > I converted the file to GNU syntax using the provided Perl script. > > Trying to compile the output with aarch64-linux-gnu-as gives a whole bunch > of errors like: > > third_party/cmake-build-opus-android-arm64-v8a-Debug/celt_pitch_xcorr_arm_gnu.S: > Assembler messages: > third_party/cmake-build-opus-android-arm64-v8a-Debug/celt_pitch_xcorr_arm_gnu.S:1: > Error: unknown pseudo-op: `.syntax' > third_party/cmake-build-opus-android-arm64-v8a-Debug/celt_pitch_xcorr_arm_gnu.S:2: > Error: junk at end of line, first unrecognized character is `@' > third_party/cmake-build-opus-android-arm64-v8a-Debug/celt_pitch_xcorr_arm_gnu.S:3: > Error: junk at end of line, first unrecognized character is `@' > third_party/cmake-build-opus-android-arm64-v8a-Debug/celt_pitch_xcorr_arm_gnu.S:4: > Error: junk at end of line, first unrecognized character is `@' > third_party/cmake-build-opus-android-arm64-v8a-Debug/celt_pitch_xcorr_arm_gnu.S:5: > Error: junk at end of line, first unrecognized character is `@' > > So it looks unhappy with the syntax. > > Questions: > > 1 - What is the right way to compile Opus for Android on arm64-v8a? > > 2 - If I wanted to compile the asm file, how can I do that? > > 3 - Is this asm file for both armeabi-v7a and arm64-v8a or just > for armeabi-v7a? The symbol is required for arm64-v8a, but there is a > directive ".arch armv7-a" at the top of the file so I'm confused. > > I really don't know anything about arm assembly to figure these out on my > own, any help would be appreciated! > > Thanks, > -- K > > -------------- next part -------------- An HTML attachment was scrubbed... URL: