How can I build ffts for XCode 5? - ios

Anthony Blake published a novel fft approach he calls the Fastest Fourier Transform in the South, and I'd like to use it in my iOS apps. He's also a user here on SO, so if he can answer this question, that would be great :) But if not, maybe another XCode/MacOS guru can point the way to solving the problem.
The issue is described in this github issue posting here. The short version, as I understand it, is that XCode is trying to build a 64 bit version of the library, but the code itself is 32 bit. I don't know if the ffts code as its posted there will work as part of a 64 bit app anyway (there's a lot of assembly there, and it's my understanding that assembly has to be hand-tuned to particular processors, and he may not have done such tuning for a 64 bit processor yet). What I want to know is:
How can I compile and use this library as part of an iOS app?
If I do so, can I make the app a 32 bit app on a 64 bit iOS device, so that I don't have to worry about compiling both 32 and 64 bit versions?
As a side note, I do believe that this question should be tagged 'ffts' (as 'fftw' is a tag), but meh.

I'd use the Accelerate framework, unless you measure things and can prove that it isn't fast enough. Apple has some pretty clever people working on these libraries (from personal knowledge, not just an assumption), so beating them in speed, especially on all kinds of different devices, would be quite a challenge.

Go to your project's target build settings and and leave only armv7 as build arhitecture and armv7 & armv7s as valid architectures.
This will build your project for both 32bit & 64bit devices but the app will run in 32bit mode.

Related

64 bit conversion iOS / How to handle 3rd party libraries like AFNetworking

I'm in the process of adapting an existing project to support 64 bit. How exactly should 3rd party libraries be handled? For example i'm using a relativly old AFNetworking version (1.1.0). What is the best practises? Do i just look for each library if there is a 64 bit optimized version and replace it within my project? I actually don't want to just replace every library because something else could potentially break this way. Would be nice to get some feedback on this issue.
Yes, you will have to look for 64-bit clean updates of these libraries. The only alternative is making those libraries 64-bit safe yourself. You can also try to make no changes and just compile for 64-bit too. But then you might have bugs introduced by that.

GCC 4.9.2 OpenMP and Neon

I am having some trouble understanding my current situation due to the fact that I spend most of my time coding x86 software.
Apple have released a new requirement that apps must support 64 bit architecture from february 2015. From what I understand I can make a 'fat' binary with 32 bit and 64 bit code inside it.
The part that I am confused about is the fact that my project uses OpenMP and inline neon assembler code (hand tuned math libraries), this compiles fine on 32 bit ARM and runs perfectly.
I need some advice on how to get my project ready for Apples new requirement.
How can I enable OpenMP for GCC 4.9.2? There is not even a omp.h in the folder
Is the neon instruction set supported?
My SDK (Marmalade) says it supports armv8-a and simd, what does that say in terms of supporting neon?
How much of my inline arm assembly do I need to edit? I have LOTS of it and I am kind of panicking right now.
I hope someone can help me.
Links:
https://gcc.gnu.org/gcc-4.9/changes.html
http://docs.madewithmarmalade.com/display/MD750/Release+Notes#ReleaseNotes-7.5BetaReleaseNotes

Can I code iPhone apps using Eclipse?

As you can probably guess, my knowledge of coding is very limited. Nonetheless, I do know a little Java. I have Eclipse and was wondering if I could use it to code for iOS iPhone/iPad applications. I know that I would almost certainly have to use a language other than Java, but I'm clueless as to what packages or plugins I would need to install in Eclipse to use it to code for iOS. If you guys could answer this question in extreme detail or link me to a very good sequence of video tutorials, I would be extremely grateful.
Yes you can!
If you can live with coding ActionScript, which should be easy to learn with a Java background, you can use Eclipse & AIR to code for iOS (and Android at the same time)
Some resources:
http://flex.apache.org/
http://labs.adobe.com/technologies/flashruntimes/
http://blogs.adobe.com/flashplayer/
http://flashdaily.net/
Be aware that many apps in the store have been build on this platform, and the community is pretty alive and supportive.
The short answer is, "not natively."
Apple pretty much restricts "native" iOS development to XCode which, as #Bob said in his answer, is only available for OS X. So that means no Eclipse or Java-based development. However, there are several cross-platform development frameworks and tools that work to varying degrees of quality. Here are a few, in no particular order:
PhoneGap
Appcelerator
Corona
Adobe AIR (see answer by #dogsgod)
There are others, but those are ones that I've at least heard of and might have tried a little bit. Some, like Appcelerator, have IDEs built on Eclipse, so at least the dev environment would be familiar.
IOS apps are written in Objective-C or Swift using XCode. (This also means you'll need a Mac to do so. XCode is only available for OSX.)
So unfortunately this means the answer to your question is no. You cannot use Eclipse to write an iOS app.

Is PlayN on iOS possible without licensing MonoTouch?

Following the instructions on the PlayN wiki I was able to get the "hello" PlayN sample running on the iOS simulator. However, when using MonoStudio, I was told that I need to upgrade to an Indie license or higher to compile the code. (Apparently I was using 33+ features which required it.) When I activated a trial edition, the sample compiled and ran fine on the simulator.
The PlayN wiki seems to indicate the you'd only need a license if you plan on testing on a real device. Is it wrong or am I missing something?
Also, I thought the idea behind PlayN was to build a free, open source game engine on top of free, open-source technology. Mono is both, but MonoTouch is neither. Is there another option or am I stuck with shelling out $1000/year to use iOS (which so far seems far from fully implemented on the PlayN side of things)?
Right now, there isn't. Sorry its disappointing, but its the nature of iOS. Its a very non-free platform.
Perhaps you can try your hands at writing a cross compiler, and release it under an opensource license? You can try basing it on http://gcc.gnu.org/java/.

Building cross-platform Delphi applications

I downloaded Lazarus, but have worked with Embarcadero Delphi IDE too. I have a question about building cross-platform Delphi applications.
How can I build them under win32 environment? I read the wiki from Lazarus site, that explains how to do it, but I still do not understand it. Is is possible to build and compile application under win32 environment for Linux and MacOS? If it is possible, can someone explain ste-by-step how to do it exactly.
EDIT:
Now is the time for talking about the new XE2 version of the Delphi IDE I think :)
Thanks
What you're asking for already exists in the lazarus wiki site, you need to read these articles.
Multiplatform Programming Guide
Cross compiling
Cross compiling for Win32 under Linux
How to Write Portable Code (nice doc from Marco van de Voort)
Buildfaq
While crosscompiling to a non windows target is possible (and not that hard), getting used to fpc/lazarus and crosscompiling in one first step is a bridge too far. This because Linux is not a very homogenous target and dealing with this variation requires some understanding how libraries and linking works on Linux. This defeats one-button downloadable cross-compile setups to "general" linux. I know, such one-button thingies that work out of the box for everyone would be great, but it is just not going to happen (or only forvery limited distribution-version combinations)
Crosscompiling with FPC is not extremely difficult or rocket science, but the amount of jargon and details can flabbergast uninitiated people, and without background knowledge it is hard to diagnose problems as a result of minor misconfigurations
I recommend to first familiarize yourself with Lazarus/FPC, and only then make the crosscompilation leap. (and the already mentioned buildfaq names some reasons).
Bottomline: install lazarus on Windows and start porting your app. If that succeeds, start using a linux install (or VM) to familiarize yourself with Linux, and Lazarus under it. You'll need a linux install anyway to test.
Only then start thinking about crosscompiling to speed up the process.
CodeTyphon is a powerful Lazarus/FPC one click easy installation package for cross platform native development. It already supports 4 CPU/OS hosts (Win32, Win64, Linux32, Linux64), and 16 CPU/OS targets (arm-Wince, arm-Linux, arm-Embedded, arm-gba, arm-nds, i386-Win32, i386-Linux, i386-FreeBSD, i386-Haiku, x86_64-Win64, x86_64-Linux, x86_64-FreeBSD, powerpc-Linux, powerpc64-Linux, sparc-Linux, sparc-Solaris). More are supported in Lazarus/FreePascal, but others are not yet integrated in CodeTyphon. Did I mention that it is free? One code to rule them all ;-)
The point is that you don't have to waste days for setting up your cross platform environment, since someone has already done the hard work for you.

Resources