Freebsd - include "machine" what is this? - header

Can someone explain me where the headers like
#include <machine/elf.h>
are located in the freebsd source tree?
I cannot find it anywhere..
Thanks

'machine' is a symlink created for the target architecture. You can find relevant elf.h files in sys//include/elf.h. You could have easily find out yourself if you built the kernel and inspected the tree.

Related

Path error in a header inclusion with Geany (C++)

I found many articles about the what I am about to ask but no precise answer. I wanted to compile a main file from a RSA library. However, this error appears and I don't know how to fix it:
The error in the image indicates that there's no such file or directory as ${workspaceFolder}boost/multiprecision/cpp_int.hpp.
The file boost/multiprecision/cpp_int.hpp is part of the Boost C++ Libraries. If Boost is not installed, as indicated in the comments above, it will be necessary to install Boost to provide the missing file and any related software to which it refers.
For information on installing Boost, take a look at the Boost Getting Started page.
Note that if you are using Linux, Boost is likely available in your system's repository (i.e. package manager, software manager, or whatever it's called on your system). If so, installing from there would probably be the easiest way to go.
If Boost did happen to be installed and the error was occuring, it would then be necessary to add the location of the Boost include files to the compilation command.

Where does bazel look for OSX SDKs (and what to do if it's not finding them)?

I have an objc_library rule that tells me that it can't find any SDK framework header (this problem is not specific to IOKit, I can't find any frameworks at all).
#import <IOKit/IOKitLib.h>
fatal error: 'IOKit/IOKitLib.h' file not found
I already have "IOKit" in my sdk_frameworks. If I take a peek in /System/Library/Frameworks/IOKit.framework, I find that there is no directory Headers which would contain this file. Perhaps no surprise if that's where Bazel is looking.
If I look a little harder, I find more results for the SDK.
$ find /Applications/Xcode.app/ -name IOKit.framework
/Applications/Xcode.app//Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator.sdk/System/Library/Frameworks/IOKit.framework
/Applications/Xcode.app//Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/IOKit.framework
/Applications/Xcode.app//Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/Frameworks/IOKit.framework
/Applications/Xcode.app//Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/IOKit.framework
/Applications/Xcode.app//Contents/Developer/Platforms/WatchSimulator.platform/Developer/SDKs/WatchSimulator.sdk/System/Library/Frameworks/IOKit.framework
/Applications/Xcode.app//Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-migrator/sdk/MacOSX.sdk/System/Library/Frameworks/IOKit.framework
I would think that this is the one I want, since I'm developing for MacOSX.
/Applications/Xcode.app//Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/IOKit.framework
Can I tell Bazel to use that SDK? Should I have to? How can I figure out where Bazel is looking for these things? I'm pretty familiar with using Bazel, but I'm really not sure how to debug when the most basic of things is failing.
Here is the simplest example that fails.
BUILD:
objc_library(
name = "test",
srcs = ["test.cpp"],
copts = ["-ObjC++"],
sdk_frameworks = ["IOKit"],
)
// test.cpp
#import <IOKit/IOKitLib.h>
I posted this on bazel-discuss, but it isn't getting much traction. I'm using Bazel 0.5.2.
https://groups.google.com/forum/#!topic/bazel-discuss/HhAjKblwHwk
Resolved in the bazel-discuss thread, but I'll summarize here:
The issue you are finding here is most likely because IOKIt is a MacOS-only SDK, and you're building this library for iPhoneSimulator.
(I think the former is the case, anyway. It looks like there is indeed an IOKit.framework directory under iPhoneSimulator9.3.sdk, but it doesn't include headers -- I'm not sure what the point of that is)
Correctly building the library for MacOS is key here and should fix your issues. You can either do that by depending on this library via an apple_binary with platform_type="macos", or you can tailor command line flags to this end. I believe --apple_platform_type=macos --cpu=darwin_x86_64 should do the trick

Add image sensor driver to linux kernel

I am working on a project that is using Leopardboard DM368 interfacing with LI-M024DUAL camera board for stereo vision. The camera uses Aptina's MT09M024 as its image sensor.
After spending a lot of time on the web searching for appropriate drivers I asked the OEM to provide me some support. They provided me with the driver source files. The problem is I am not able to include them to the kernel.
I also looked up for the method to build modules and am fairly comfortable with it. But with the current driver I have a bunch of *.c files that use non-existent header files (I am not able to find these linux header files in the /linux directory).
Now my question is if I have the source code for an image sensor driver and want to build it, what is the general procedure followed for the same.
Any help in this regard would be welcome.
-Kartik
There are two ways to build you module:
1. Statically linking to kernel image (inbuilt)
2. Creating dynamically loadable Modules
Statically linking to kernel image (inbuilt)
For this you must find a appropriate place in kernel folder (somewhere in drivers/) to copy your .c files. copy them there. Edit Kconfig and Makefiles refering to other kernel drivers. and enable the support using menuconfig. Compile.
Creating dynamically loadable Modules
You can built without copying them to Kernel source. Just create a Makefile and place rules in Makefile to compile your module. Here you must link your module to your kernel by providing the kernel source path.
For more google should help.

How to build several configurations at once with CMake?

E.g. how should I build release and debug version at the same time? I guess the answer make use of cache variables and some kind of "collection" of them.
Is it common way to get configuration params from cache params, isn'it ? If the answer is yes, how should I use several "collections" of them in a best way ?
Thanks a lot!
You don't specify the platform you are talking about. The Makefiles based generators will only build one configuration at a time, and the normal way to build several configurations is to use separate build trees, e.g. one for 64-bit Linux on Intel, one for 32-bit Windows, etc. Most CMake projects advise out of source builds, and assuming you wrote your CMakeLists files correctly you could have ~/src/YourProject, and ~/build/YourProject-Release, ~/build/YourProject-Debug.
This is the advised way to do it, assuming your source tree does not have any CMakeCache.txt etc in it. You can then run cmake -DCMAKE_BUILD_TYPE:STRING=Debug ~/src/YourProject in the debug directory, and similar for the release. This has the advantage that you can point dependent projects at the appropriate configuration.
The Boost CMake project has also explored building all configurations in the same build tree using library name mangling to differentiate. This may be worth looking at if you must build all configurations in the same build tree.
(for fellow googlers)
Be careful of not confusing build types and build configurations.
If you really mean "build types" such as debug and release and want to build them at the same time, then Cmake FAQ gives an answer : How can I build multiple modes without switching
Basically it involves using several out-of-source builds.

Installing systemc SCV library on x86-64 machine

When I tried to install the SCV library, I came accross with the following problem:
"checking build system type... Invalid configuration x86_64-unknown-linux-gnu': machine x86_64-unknown' not recognized "
I copied the 'config.guess' and 'config.sub' from /usr/share/libtool/config to overwrite the existing 'config.guess' and 'config.sub' of SCV. Then I can configure further, but new problem is:
"configure: error: Target CPU type not supported: "x86_64""
I think SCV should support x86_64 target, so how can I solve this problem?
Great thanks!
Kun
The SCV does not support x86_64 in its original configuration. Please see the patch at http://thawedoutnow.blogspot.tw/2013/02/scv-for-x8664-linux-patch.html. Your system might also need GNU automake, autoconf, m4, and some development tools to generate the new configure file.
Another one is directly modifying the configure file. Please see http://boyangdu.wordpress.com/2011/11/13/systemc-setup-on-f16-x86_64/ for details