Difference between GNU Make builder and FSL Make builder - makefile

I have the 2 options above in the IDE I'm using - S32 Design Studio. What is the difference between the two?

The Builders in the IDE are not just selection of an external tool, they actually create the makefiles out of the configuration settings in the preference / settings dialogs.
In the end, both call just make.
But the FSL Make Builder takes much more into consideration:
processor expert settings
processor cores and hw-accelerator (e.g. SPT) build configs and tooling
additional SDKs
Flash / RAM configurations (e.g. create different linker scripts for the memory layout)
create launch configs

Related

Distribution of an application that uses OpenCL

I would like to distribute a Windows/Linux application that uses openCL, but I can't find the best way to do it.
For the moment my problem are only on Windows:
1- I'm using Intel CPU, how can I manage Intel AND AMD (CPU of final users) ?
2- For distribution of application that uses Visual Studio DLL, we have Visual Studio Redistributable to manage this easily and to avoid a big installation of Visual Studio. Is there a package like this for openCL ?
3- Finally, I don't know if I must provide OpenCL.dll or not (example of different point of view here)
I read several topics on the web about this problem without clear solution.
Thank you for your help.
1) You write to the OpenCL API and it works with whatever hardware your user has. User the header for the lower version you want to support (e.g., use cl.h from 1.1 if you want to target 1.1 and higher).
2) The OpenCL runtime is installed on the user's machine when they install a graphics driver. You don't need to (and should not) redistribute anything.
3) Please don't redistribute OpenCL.dll
The one problem you may need to deal with is if your user does not have any OpenCL installed on their machine. In this case, the call to clGetPlatformIDs will fail. There are various ways to deal with this, all platform specific. Dynamically linking to OpenCL.dll is one way, or running a helper process to test for OpenCL is another. An elegant solution on Windows is to delay load OpenCL.dll and hook that API to return 0 if the late binding fails.
1- I'm using Intel CPU, how can I manage Intel AND AMD (CPU of final users)
Are you talking about running OpenCL kernels on CPU, or just host-side code while kernels run on GPU ? because if the former (on CPU), your users will need to install their respective OpenCL CPU implementation, IIRC the Intel CPU implementation does not run on AMDs (or at least that used to be the case, perhaps it's now different..)
3- Finally, I don't know if I must provide OpenCL.dll
You don't have to, but you should, IMO. The way OpenCL works (usually), OpenCL.dll is just an ICD loader - a small library (a few dozen KB) that loads the actual OpenCL implementation(s) by looking into a few predefined places. It should be safe to include on Windows, and it simplifies your program logic - you can always build with OpenCL enabled, and if there's no OpenCL implementation installed, the loader will return CL_PLATFORM_NOT_FOUND_KHR - you just handle that error by asking user to install an OpenCL implementation, or fallback to non-OpenCL code path if you have it, whatever suits you more.
There's no need to complicate your life with delayed DLL loads or helper processes. In fact that's the entire point of the ICD concept - you don't need to look for the platforms and DLLs yourself, you let the ICD loader do it. It's pretty absurd to write helper code to load a helper library (ICD) which then loads the actual implementation DLLs...

Gdb GUI front-end which support gdb CLI

I have tried various front-ends for gdb but I did not notice in any of them an option to interact with gdb directly (issuing CLI commands).
Is there a gdb front-end which supports this? I am mainly interested in memory examining functionality.
Eclipse is of course much more than GDB front-end, but it does provide a console view, where you can interact with GDB directly.
It also provides (at least) two different memory views, plus third party plug-ins that allow you to examine "bare metal" peripheral registers - if this is what you want to do.
You can do all this with Eclipse for C/C++ developers. There is now also a standalone debugger build of Eclipse which I did not try yet, but should be lighter version of above focused only on debugging.
Once you start Eclipse (for which you will need Java 7) you will need to create a launch configuration for C/C++ application, then launch it in Eclipse.
Or even better import you project into eclipse and create launch configuration for that project.

Multi platform build & CI server

we use UrbanCode's AnthillPro build and CI server to build our C++ multi platform applications in a number of environments: linux, windows, solaris, hp-ux and aix. Yes, I know that AnthillPro was initially not designed to build C++ applications - rather for Java applications, but we've managed to make it do what we need :).
Now, UrbanCode belongs to IBM and it looks like they're about to discontinue AnthillPro. That's why we're now looking for an alternative solution.
The key features we appreciate in Anthill / expect to be supported by the new solution:
support of multiple C/C++ compilers (see above)
good and efficient dependency management and resolving
support of JavaC (very important in the future)
own "artifactory" / Anthill's CodeStation anologon
work distribution between build stations (Anthill's Agents concept)
logging and reporting tools (obvoius)
Can anybody recommend a solution, which complies to this feature list? If one or two features are not supported out of the box, but can be implemented with on-board tools or with help of unix' shell and other admin-tools, that's OK!

Visual / RAD APL?

Are there any Visual / Rapid Application Deployment implementations of APL?
If not, what would be needed to implement such a tool?
If it doesn't exist, what would the libraries/interfaces look like for handling standard GUI controls and system calls (file handling, etc)?
APL2000's APL+WIN system claims to be a RAD product. It surely includes extensive support for "handling standard GUI controls and system calls". So does Dyalog APL.
I suppose what systems count that depends on what you think of as "RAD" and "Visual". Ther is also a product called VisualAPL but I haven't used it.

How to leverage multicore CPUs when compiling C# projects in a large solution?

As far as I know, VS2008/MSBuild do not suport multithreaded compilation of C# projets. I don't know if VS2010 supports it. Do you know a 3rd party product or an open source projet that does that?
Indeed MSBuild does support multiple cores; though it's a bit of a hack with some limitations.
It's easier from the commandline.
Likewise, some build servers (teamcity is one if I recall) can have build runners on multiple machines to further reduce build times.

Resources