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

Cross compile VOLK for iOS ARM targets maybe broken #635

Open
w1ebr opened this issue Oct 2, 2023 · 6 comments
Open

Cross compile VOLK for iOS ARM targets maybe broken #635

w1ebr opened this issue Oct 2, 2023 · 6 comments

Comments

@w1ebr
Copy link

w1ebr commented Oct 2, 2023

Cross compiling for iOS on macOS x86/64 just isn't working. I don't have an M1 Mac. Maybe I should try cross compiling on linux to produce the assembly files that I can then bring back to compile for iOS... Any ideas?

@jdemel
Copy link
Contributor

jdemel commented Oct 3, 2023

It seems like the developer experience to build for iOS is less than satisfactory.

The title of your issue seems to be misleading because I can't figure out what the description and the title have in common. Could you update the title and add more context to your question? I assume this is necessary to discuss the issue.

@w1ebr
Copy link
Author

w1ebr commented Oct 3, 2023

Hello Johannes, the title had to do with the first version of my comment, which was that I got to the point in the process where I had assembly language programs for NEON but they contained "@" signs in many places where it appeared to be a comment. I wondered if the presence of "@" indicated that the perl processing step had not completed.

Today I tried to create the library in linux, cross compiling for aarch64. The make test completed successfully. However, the assembly code files still look the same as running under Xcode. I can't figure out how the ".s" files are used. Is there any documentation that explains how the library is built using C code, perl templates and some assembly code?

If not, I am in way over my head...

Thanks for the help!

@jdemel jdemel changed the title Assembly code ".s files" have "@" in them Cross compile VOLK for iOS ARM targets maybe broken Jan 7, 2024
@jdemel
Copy link
Contributor

jdemel commented Jan 7, 2024

We try to minimize assembly code usage. In most cases, the assembly exists for new targets that are not well supported in compilers at the time.

I don't know if this is still relevant. Did you find a way to compile for a iOS target? My lack of hardware etc. make it difficult to reproduce the issue.

@w1ebr
Copy link
Author

w1ebr commented Jan 8, 2024

Yes, I did. I was able to edit the set of files to force it to compile for an M1 processor and iOS. In the meantime, I bought an M3 MacBook Pro and that allows me to run the optimization test cases (under MacOS).

The biggest challenges at this point are the restrictions iOS imposes on USB access and the deprecation of OpenGLES (to get an SDR running).

Gene

@jdemel
Copy link
Contributor

jdemel commented Jan 12, 2024

@w1ebr are you able to share your changes? This might be interesting for others.

Do I understand correctly that an Apple Silicon machine enables you to compile for iOS etc. without any hiccups?

@w1ebr
Copy link
Author

w1ebr commented Jan 12, 2024

I will revisit what I did. I know I didn't leave things in a cleaned-up state but I still got it to compile.

The Volk package checks to see what processor is compiling the code and that's one area that was difficult for me (using a MBP with an Intel processor, it wouldn't create the right configuration. With the Apple silicon being just a couple of generations different, that became a non-issue. However, since iOS does not have a command line interface, I didn't test the compilation.

Sorry I didn't leave things in a better state. I will go back and see what I can do in case anyone else wants to brave app writing on iPadOS for M1 chips (or newer M processors)

Gene

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

2 participants