Cross Compile OpenSceneGraph for arm processor running embedded linux? - cmake

I am trying to build OpenSceneGraph(Version 3.6.5) for arm processor running embedded linux.
cmake throws different errors, can someone help ? What needs to be added in CMakeLists.txt for these errors specifically ?
1. /mnt/sdk8_2/OpenSceneGraph/build/CMakeFiles/CMakeTmp/src.cxx:2:17: fatal error: cstdlib: No such file or directory
2 | #include
but it is there at /opt/arago/sysroots/aarch64-linux/usr/include/c++/9.2.1/cstdlib
2. atomic.h: No such file or directory
but following files are there
/opt/arago/sysroots/aarch64-linux/usr/include/tbb/atomic.h
/opt/arago/sysroots/aarch64-linux/lib/modules/5.10.41-g4c2eade9f7/build/arch/arm64/include/asm/atomic.h
/opt/arago/sysroots/aarch64-linux/lib/modules/5.10.41-g4c2eade9f7/build/include/linux/atomic.h
3. /mnt/sdk8_2/OpenSceneGraph/build/CMakeFiles/CMakeTmp/src.cxx:2:17: fatal error: windows.h: No such file or directory
But it's there at
/opt/arago/sysroots/aarch64-linux/usr/include/boost/predef/os/windows.h
/opt/arago/sysroots/aarch64-linux/lib/modules/5.10.41-g4c2eade9f7/build/include/asm-generic/atomic.h
/opt/arago/sysroots/aarch64-linux/lib/modules/5.10.41-g4c2eade9f7/build/include/asm-generic/bitops/atomic.h
/opt/arago/sysroots/aarch64-linux/lib/modules/5.10.100-g7a7a3af903/build/arch/arm64/include/asm/atomic.h
/opt/arago/sysroots/aarch64-linux/lib/modules/5.10.100-g7a7a3af903/build/include/linux/atomic.h
/opt/arago/sysroots/aarch64-linux/lib/modules/5.10.100-g7a7a3af903/build/include/asm-generic/atomic.h
/opt/arago/sysroots/aarch64-linux/lib/modules/5.10.100-g7a7a3af903/build/include/asm-generic/bitops/atomic.h

Related

Custom build command does not work with `cargo publish` because CMake says the path would exceed CMAKE_OBJECT_PATH_MAX

My project can be built and run locally, but when running cargo publish I get an error:
PS C:\Users\jonat\Projects\vulkano_blas> cargo publish
Updating crates.io index
Packaging vulkano_blas v0.1.0 (C:\Users\jonat\Projects\vulkano_blas)
Verifying vulkano_blas v0.1.0 (C:\Users\jonat\Projects\vulkano_blas)
Compiling autocfg v1.0.0
Compiling lazy_static v1.4.0
Compiling maybe-uninit v2.0.0
Compiling libc v0.2.73
Compiling cfg-if v0.1.10
Compiling cc v1.0.58
Compiling proc-macro2 v1.0.19
Compiling scopeguard v1.1.0
Compiling unicode-xid v0.2.1
Compiling syn v1.0.35
Compiling vulkano v0.19.0
Compiling either v1.5.3
Compiling smallvec v1.4.1
Compiling vk-sys v0.5.2
Compiling half v1.6.0
Compiling fnv v1.0.7
Compiling itertools v0.9.0
Compiling crossbeam-utils v0.7.2
Compiling memoffset v0.5.5
Compiling crossbeam-epoch v0.8.2
Compiling shared_library v0.1.9
Compiling cmake v0.1.44
Compiling quote v1.0.7
Compiling shaderc-sys v0.6.2
Compiling crossbeam-queue v0.2.3
Compiling crossbeam-channel v0.4.3
Compiling crossbeam-deque v0.7.3
Compiling crossbeam v0.7.3
The following warnings were emitted during compilation:
warning: System installed library not found. Falling back to build from source
error: failed to verify package tarball
Caused by:
failed to run custom build command for `shaderc-sys v0.6.2`
Middle part removed due to its size
--- stderr
CMake Warning in spirv-tools/source/reduce/CMakeLists.txt:
The object file directory
C:/Users/jonat/Projects/vulkano_blas/target/package/vulkano_blas-0.1.0/target/debug/build/shaderc-sys-81aff4f7b9007197/out/build/spirv-tools/source/reduce/CMakeFiles/SPIRV-Tools-reduce.dir/./
has 191 characters. The maximum full path to an object file is 250
characters (see CMAKE_OBJECT_PATH_MAX). Object file
remove_unreferenced_instruction_reduction_opportunity_finder.cpp.obj
cannot be safely placed under this directory. The build may not work
correctly.
CMake Warning:
Manually-specified variables were not used by the project:
CMAKE_ASM_COMPILER
CMAKE_ASM_FLAGS
thread 'main' panicked at '
command did not execute successfully, got: exit code: 1
build script failed, must exit now', C:\Users\jonat\.cargo\registry\src\github.com-1ecc6299db9ec823\cmake-0.1.44\src\lib.rs:885:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Where does the problem lie? And how could I approach fixing this?
As the error says, the path is too long for CMake / Windows.
You might try to enable Long Paths support in Windows, or put your project in a shallower path.
Building in a shallower directory worked for me:
#.cargo/config.toml
[build]
# fixes CMAKE_OBJECT_PATH_MAX
target-dir = "C:/temp/crate_name"
While this can also be done with a compiler flag, that is not recommended because cargo clean etc will not work as expected.
A side note, Ive had some runtime linker errors using this method with embuild and an esp32. The solution there was to move the entire repo closer to root and keep the default target dir, its a bummer but no two ways about it.

Xcode GoogleCast problem with CFBundleExecutable at Archieve App

Hello I'm Making a Sound App integrated with ChromeCast in Obj-C. I use ChromeCast 4.4.7 dynamic SDK.
I use the manual method adding the SDK, and everything works fine. The app Connects with Chromecast and sends info.
The problem is what I want to Achieve the Project, using the strip_unused_archs.sh joined with the SDK. I've got 6 errors.
I Paste them
The domain/default pair of (/Users/juanjocontreras/Library/Developer/Xcode/DerivedData/WMYA_Radio-fzjavmckasiwebglravdbxefwoel/Build/Intermediates.noindex/ArchiveIntermediates/WMYA/Info.plist, CFBundleExecutable) does not exist
Removing unused architectures from framework:
fatal error: lipo: can't open input file: /Users/juanjocontreras/Library/Developer/Xcode/DerivedData/WMYA_Radio-fzjavmckasiwebglravdbxefwoel/Build/Intermediates.noindex/ArchiveIntermediates/WMYA/ (No such file or directory)
fatal error: lipo: can't open input file: /Users/juanjocontreras/Library/Developer/Xcode/DerivedData/WMYA_Radio-fzjavmckasiwebglravdbxefwoel/Build/Intermediates.noindex/ArchiveIntermediates/WMYA/_armv7 (No such file or directory)
mv: rename /Users/juanjocontreras/Library/Developer/Xcode/DerivedData/WMYA_Radio-fzjavmckasiwebglravdbxefwoel/Build/Intermediates.noindex/ArchiveIntermediates/WMYA/_thinned to /Users/juanjocontreras/Library/Developer/Xcode/DerivedData/WMYA_Radio-fzjavmckasiwebglravdbxefwoel/Build/Intermediates.noindex/ArchiveIntermediates/WMYA/: No such file or directory
2020-05-18 16:11:30.130 defaults[10081:96863]
The domain/default pair of (Radio/InstallationBuildProductsLocation/Applications//Ibiza1Radio.app/Frameworks/GoogleCast.framework/Info.plist, CFBundleExecutable) does not exist
Removing unused architectures from framework:
fatal error: lipo: can't open input file: Radio/InstallationBuildProductsLocation/Applications//Ibiza1Radio.app/Frameworks/GoogleCast.framework/ (No such file or directory)
fatal error: lipo: can't open input file: Radio/InstallationBuildProductsLocation/Applications//Ibiza1Radio.app/Frameworks/GoogleCast.framework/_armv7 (No such file or directory)
mv: rename Radio/InstallationBuildProductsLocation/Applications//Ibiza1Radio.app/Frameworks/GoogleCast.framework/_thinned to Radio/InstallationBuildProductsLocation/Applications//Ibiza1Radio.app/Frameworks/GoogleCast.framework/: No such file or directory
Any idea of what can I do to Archive and publish the app?
Thnx to all of U

Can't build Nokia HEIF library with make

I'm trying to build the HEIF library in https://github.com/nokiatech/heif, but I'm having no luck.
I have CMake and the latest version of MinGW installed. I'm following the steps to build the library but I'm getting an error.
The first step, which is this:
cd heif/build
cmake --help
cmake ../srcs -G"<Generator listed by above command for your target platform>"
works, but the second step, which is this:
cmake --build .
seems to be working but when it gets to 41% done I get this error:
C:\Users\dantelo\Documents\heif-master\srcs\reader\heifstreamfile.cpp: In constructor 'HEIF::FileStream::FileStream(const char*)':
C:\Users\dantelo\Documents\heif-master\srcs\reader\heifstreamfile.cpp:44:9: error: 'fopen_s' was not declared in this scope
fopen_s(&m_file, filename, "rb");
^~~~~~~
C:\Users\dantelo\Documents\heif-master\srcs\reader\heifstreamfile.cpp:44:9: note: suggested alternative: 'fopen'
fopen_s(&m_file, filename, "rb");
^~~~~~~
fopen
reader\CMakeFiles\heif_static.dir\build.make:93: recipe for target 'reader/CMakeFiles/heif_static.dir/heifstreamfile.cpp.obj' failed
mingw32-make.exe[2]: *** [reader/CMakeFiles/heif_static.dir/heifstreamfile.cpp.obj] Error 1
mingw32-make.exe[2]: Leaving directory 'C:/Users/dantelo/Documents/heif-master/build'
CMakeFiles\Makefile2:233: recipe for target 'reader/CMakeFiles/heif_static.dir/all' failed
mingw32-make.exe[1]: *** [reader/CMakeFiles/heif_static.dir/all] Error 2
mingw32-make.exe[1]: Leaving directory 'C:/Users/dantelo/Documents/heif-master/build'
Makefile:85: recipe for target 'all' failed
mingw32-make.exe: *** [all] Error 2
I'm on Windows 10 in case that's relevant. I have no idea why this is happening. Any help appreciated
It seems that fopen_s is only present in the C library provided by Microsoft, i.e. in MSVC. Source: Is there a way to use fopen_s() with GCC or at least create a #define about it?
Your best bet is then switching to MSVC, because the code you have was apparently never tested with MinGW, as it cannot be compiled by the latter.
Alternatively, if you are feeling lucky, you can just use some #define tricks to convert fopen_s to the standard fopen (see the answers in the linked question) and hope that this is the only incompatibility in the code.

Connecting HTTPKit to a Theos application project. Undefined symbols error

Aim
I am trying to build the simplest Theos application that is acting like HTTP server.
I have no specific preferences on what libraries to use, but I tried by best using HTTPKit this time. I will appreciate any comments and/or links on how to build such applications.
Question in a couple of words
Failed to use HTTPKit in Theos application project. Getting "Undefined symbols" when using any of the HTTPKit classes.
Personal thoughts
I am sure the "Undefined symbols" error is caused by wrong linking. And I am almost sure that it has to do something with the dependencies folder since I have no idea where to put it and how to link it.
It's not completely neccessary to use HTTPKit, but I am having quite the same troubles trying to implement CocoaHTTPServer in Theos application.
I will also appreciate any comments on what I am doing wrong while installing Theos and making applications.
How I installed and configured Theos
Installed Theos using the following guide
Downloaded everything from one of the headers repository into
$(THEOS)/include
Downloaded (additionally) IOSurfaceAPI.h from here into
$(THEOS)/include/IOSurface
Making a simple project
1.Created a Theos application using NIC
cd ~
$THEOS/bin/nic.pl
NIC 2.0 - New Instance Creator
------------------------------
[1.] iphone/application
[2.] iphone/library
[3.] iphone/preference_bundle
[4.] iphone/tool
[5.] iphone/tweak
Choose a Template (required): 1
Project Name (required): name
Package Name [com.yourcompany.name]:
Author/Maintainer Name [***]:
Instantiating iphone/application in name/...
Done.
2.Put the whole repository HTTPKit into newly created folder
~/name/HTTPSources
3.Added the following line
name_FILES += $(foreach ext, c cpp m mm x xm xi xmi, $(wildcard
HTTPSources/*.$(ext)))
into the Makefile, so it looks like this
4.Put all files from here into newly created
$THEOS/include/HTTPKit
5.Now the $(THEOS) folder looks like this
6.Calling make now doesnot cause fatal errors (except ldid command, which I guess is not vital) resulting in
~/name/theos/makefiles/targets/Darwin/iphone.mk:41: Deploying to iOS 3.0 while building for 6.0 will generate armv7-only binaries.
Making all for application name...
Copying resource directories into the application wrapper...
Compiling main.m...
Compiling nameApplication.mm...
Compiling RootViewController.mm...
Linking application name...
Stripping name...
Signing name...
/bin/sh: ldid: command not found
Trying to use HTTPKit, getting errors
1.Added HTTPKit import and a few simple lines from the example
HTTPServer * serv = [[HTTPServer alloc] init];
[serv handleGET:#"/hello/*"
with:^(HTTPConnection *connection, NSString *name) {
return [NSString stringWithFormat:#"Hello %#!", name];
}];
into ~/name/main.m so it looks like this
2.Now calling make causes "Undefined symbols for architecture armv7" error
~/name/theos/makefiles/targets/Darwin/iphone.mk:41: Deploying to iOS 3.0 while building for 6.0 will generate armv7-only binaries.
Making all for application name...
Copying resource directories into the application wrapper...
Compiling main.m...
Linking application name...
Undefined symbols for architecture armv7:
"_OBJC_CLASS_$_HTTPServer", referenced from:
objc-class-ref in main.m.f3071598.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [obj/name.app/name.ba964c90.unsigned] Error 1
make[1]: *** [internal-application-all_] Error 2
make: *** [name.all.application.variables] Error 2
Additional info
find ~/name
make clean all messages=yes
Try adding
export ARCHS = armv7 arm64
export TARGET = iphone:clang:7.0:7.0
to your makefile.
That fixed a similar error for me. If the error is different would you be so kind as to post the output?
I think you missing library. You only have HTTPServer header but lack of implement. Compile HTTPKit and put it on $THEOS/lib. Then add name_LIBRARIES = nameoflibHTTKit in Makefile

arm-none-symbianelf-ld throwing "No Such File or Directory" error looking for file [...].GCCE.UREL.objects.via when building project

Im using Carbide C++ 2.3.0 to build a Flash Stub project with S60)5th_Edition_SDK-v1.0 Phone Release (GCCE) set as build configuration. I have installed Perl and JRE and the CSL toolchain (GCCE), and Ive manually updated the Windows PATH variable to point to GCCE/bin.
When I create my project according to - this article and click build I get only the following error message -
#\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\Symbian\Carbide\workspace\*[name]\*group\*[NAME]*\GCCE\*[name]*_0xECB9C23A.GCCE.UREL.objects.via: No such file: No such file or directory
The console output is -
arm-none-symbianelf-ld: #\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\Symbian\Carbide\workspace\name\group\NAME\GCCE\name_0xECB9C23A.GCCE.UREL.objects.via: No such file: No such file or directory
make[1]: *** [\S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\release\gcce\urel\name_0xECB9C23A.exe] Error 1
make: *** [TARGETCUEMEMMOB] Error 2
My errors log panel shows that Perlv5.6.1 was not detected (i installed strawberry perl 5.10.1) should this matter?
I have checked that the EPOCROOT is set correctly and navigated in windows explorer to the file that cannot be found and I can see it there.
I cannot find any help with this on the nokia forums.
Yes, it matters.
The recommended perl implementation is ActivePerl 5.6.1, available from activestate.com