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

Android support #92

Open
mboes opened this issue Aug 30, 2017 · 11 comments
Open

Android support #92

mboes opened this issue Aug 30, 2017 · 11 comments
Assignees

Comments

@mboes
Copy link
Member

mboes commented Aug 30, 2017

According to experiments by @angerman, building for Android is possible but Android does require slightly different linker flags when building. #70 has more about this, but we want to achieve the same effect using a configure script.

@mboes
Copy link
Member Author

mboes commented Aug 30, 2017

@angerman feel free to assign yourself once you've accepted the invite link to the project.

@nomeata
Copy link

nomeata commented Sep 8, 2019

If I could use jvm (or even inline-java) in Haskell reflex apps compiled to Android to access the full Android API, that would be very useful.

@mboes
Copy link
Member Author

mboes commented Sep 8, 2019

@nomeata would you like to commandeer the task? I doubt we'll have have to work on this ticket anytime soon, but would certainly welcome contributions.

@nomeata
Copy link

nomeata commented Sep 8, 2019

No, unfortunately not. My interest here is only for a side aspect of a side project of mine, so I’ll certainly only be uesful as a clueless user who may report if stuff doesn’t work…

@lambdadog
Copy link

lambdadog commented Sep 4, 2020

Starting to look into this -- looks like the way forward is using defaultMainWithHooks autoconfUserHooks in Setup.hs and using autoconf to write extra-libraries: jvm to jni.buildinfo conditionally based on whether we're building for android (or another non-ljvm target) or not.

I'm not any kind of autoconf wizard though, so it'll probably take me a couple of days to figure out how to actually write out the configure.ac itself to figure that information out.

@nomeata
Copy link

nomeata commented Sep 6, 2020

That’s amazing, thanks! I just published my first Haskell program via the Play Store, and one of the things missing is easy access to the Android API (Blog post will come soon)… :)

@lambdadog
Copy link

Currently cabal doesn't pass the build target to autoconf scripts, only --with-compiler= and CC=, which means we can't use target information directly from cabal. I've gone ahead and opened haskell/cabal#7038 for now and I plan to take a look at drafting up a PR for it when I have the chance, but even when changes are merged they'll be on cabal master, which will be a while out from actual, practical widespread use.

It should be possible to extract the target from ghc --info the same way that cabal does it in our autoconf script, using AC_CONFIG_COMMANDS and some kind of sed/grep/awk incantation, but it's definitely going to be a bit of cruft added doing something like that.

@angerman Should I go ahead and move forward with this solution, or would the original solution of using a flag be preferred to this kind of hacky shell incantation?

@user16332
Copy link

Android is now supported via haskell.nix, plus some minor gotchas.

#197
#198
#199

@angerman
Copy link
Collaborator

👌 Wow. 6 years. Time flies 😱

@nomeata
Copy link

nomeata commented Nov 24, 2023

exciting! Is there already a blog post or something that shows this in action?

@user16332
Copy link

exciting! Is there already a blog post or something that shows this in action?

Just getting started but I'll remember to ping you. Meanwhiile @angerman is the (somewhat involuntary) authority on all things haskell.nix and Android.

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

5 participants