I have no experience with MagicLeap, but from your description it looks 
like you're trying to do the right thing - basically you need to 
custom-build a version of grpc_csharp_ext  that targets LuminOS (and your 
steps to achieving so seem to be correct).
The build error with boringssl could be because it tries to build the 
assembly-optimized version of boringssl (see e.g. 
https://github.com/grpc/grpc/blob/master/doc/ssl-performance.md) and for 
some reason it fails.
You can try to disable the asm-optimized build by setting 
-DOPENSSL_NO_ASM=ON while invoking cmake (see FTR 
https://github.com/grpc/grpc/blob/f10596f0f3d6ab2dfe67b86d259a8d3effb73a99/cmake/ssl.cmake#L26
),
and maybe that will unblock your build.


On Sunday, March 31, 2019 at 1:06:12 AM UTC+1, [email protected] wrote:
>
> Self-updating...
>
> I've managed a little forward and done following:
>
> - Generate a cmake toolchain (using Magic Leap SDK v0.20.0: 
> https://creator.magicleap.com/learn/guides/sdk-mabu-ref-build-and-link-libraries#build-libraries-with-cmake
>  
> <https://www.google.com/url?q=https%3A%2F%2Fcreator.magicleap.com%2Flearn%2Fguides%2Fsdk-mabu-ref-build-and-link-libraries%23build-libraries-with-cmake&sa=D&sntz=1&usg=AFQjCNG6QA2x3BHGHxea3LzcwWtor1egUw>
> )
> - Run cmake (which succeeds) with a bash script as following:
>
> rmdir build
> mkdir -p build
> cd build
>
> cmake ../.. \
>     -DCMAKE_BUILD_TYPE=Release \
>     -DCMAKE_TOOLCHAIN_FILE=../magicleap.toolchain.cmake \
>     -DRUN_HAVE_POSIX_REGEX=0 \
>     -DRUN_HAVE_STD_REGEX=0 \
>     -DRUN_HAVE_STEADY_CLOCK=0 \
>
> Now I'm attempting to build the "grpc_csharp_ext" library as in:
>
> make grpc_csharp_ext
>
> which fails, with error output as following:
>
> ...
> [ 31%] Generating sha1-armv8.S
> [ 31%] Generating sha256-armv8.S
> Scanning dependencies of target fipsmodule
> [ 31%] Building C object third_party/boringssl/crypto/fipsmodule/
> CMakeFiles/fipsmodule.dir/bcm.c.o
> [ 31%] Building C object third_party/boringssl/crypto/fipsmodule/
> CMakeFiles/fipsmodule.dir/is_fips.c.o
> [ 31%] Building ASM object third_party/boringssl/crypto/fipsmodule/
> CMakeFiles/fipsmodule.dir/aesv8-armx.S.o
> /Users/ryoichirooka/projects/grpc/cmake/build/third_party/boringssl/crypto
> /fipsmodule/aesv8-armx.S:37:2: error: instruction requires: neon
>  eor v0.16b,v0.16b,v0.16b
>  ^
> /Users/ryoichirooka/projects/grpc/cmake/build/third_party/boringssl/crypto
> /fipsmodule/aesv8-armx.S:38:2: error: instruction requires: neon
>  ld1 {v3.16b},[x0],#16
>  ^
> /Users/ryoichirooka/projects/grpc/cmake/build/third_party/boringssl/crypto
> /fipsmodule/aesv8-armx.S:40:2: error: instruction requires: neon
>  ld1 {v1.4s,v2.4s},[x3],#32
>  ^
> ...
>
> Note "*error: instruction requires: neon*".
>
> I haven't figured out how to address this one and am actively looking for 
> solution. Please let me know if you have any directions
>
> Thank you,
> Ryo
>
> On Monday, March 25, 2019 at 11:17:47 PM UTC-7, [email protected] wrote:
>>
>> I'm trying to make streaming speech recognition (Google.Cloud.Speech.V1) 
>> work in Magic Leap app.
>>
>>
>> I've managed to make it work in Unity Editor (Windows x64) as in this 
>> video: 
>> https://twitter.com/ryoichirooka/status/1110313722826784768
>> But once I build it straight into Magic Leap runtime, I'll get this error:
>>
>> grpc_csharp_ext.dll not found
>>
>> ... since this DLL in the project is built for Windows x64 runtime (which 
>> I just copied & pasted from repo) which works in Editor but won't get 
>> carried to Magic Leap runtime.
>> So I'm trying to build "grpc_csharp_ext.dll" for Magic Leap myself. And 
>> I'm stuck :)
>>
>>
>> Magic Leap has its own Linux OS called LuminOS, which has its own C/C++ 
>> builder called "Mabu".
>> More info (you may need to log in or something): 
>> https://creator.magicleap.com/learn/guides/sdk-mabu-ug-build-a-sample-mabu-project
>> Build files (.mabu) in Mabu look like this:
>>
>> KIND = shared
>> OUTNAME = grpc_csharp_ext
>> SRCS = ../ext/grpc_csharp_ext.c
>> INCS = ../../../include
>>
>> Above I'm basically telling Mabu to build a shared library (DLL) named as 
>> "grpc_csharp_ext", using the source C file and any files in the include 
>> folder for references.
>> Following is the log when Mabu runs the build file:
>>
>> D:\Projects\_extern_\grpc\src\csharp\experimental>mabu grpc_csharp_ext.mabu 
>> -t release_win_msvc-2017_x64
>> [grpc_csharp_ext] Compiling grpc_csharp_ext.c...
>> grpc_csharp_ext.c
>> [grpc_csharp_ext] Linking DLL grpc_csharp_ext.dll...
>>    Creating library grpc_csharp_ext.lib and object grpc_csharp_ext.exp
>> grpc_csharp_ext.c-99b723c0f96300a2.o : error LNK2019: unresolved 
>> external symbol grpc_raw_byte_buffer_create referenced in function 
>> string_to_byte_buffer
>> grpc_csharp_ext.c-99b723c0f96300a2.o : error LNK2019: unresolved 
>> external symbol grpc_byte_buffer_length referenced in function 
>> grpcsharp_batch_context_recv_message_length
>> ***** BUNCH OF OTHER LINK ISSUES *****
>> grpc_csharp_ext.c-99b723c0f96300a2.o : error LNK2019: unresolved 
>> external symbol gpr_thd_currentid referenced in function 
>> grpcsharp_log_handler
>> grpc_csharp_ext.dll : fatal error LNK1120: 67 unresolved externals
>> make: *** [D:/Projects/_extern_/grpc/src/csharp/experimental/.out/
>> release_win_msvc-2017_x64/grpc_csharp_ext.mk:22: D:/Projects/_extern_/
>> grpc/src/csharp/experimental/.out/release_win_msvc-2017_x64/
>> grpc_csharp_ext.dll] Error
>>
>> Note "unresolved external symbol" errors.
>> I'm thinking the cause is that those .h files in the include folder don't 
>> have actual implementation .c files. 
>> For example, grpc/impl/codegen/byte_buffer.h goes like:
>>
>> #ifndef GRPC_IMPL_CODEGEN_BYTE_BUFFER_H
>> #define GRPC_IMPL_CODEGEN_BYTE_BUFFER_H
>>
>> #include <grpc/impl/codegen/port_platform.h>
>>
>> #include <grpc/impl/codegen/grpc_types.h>
>>
>> #ifdef __cplusplus
>> extern "C" {
>> #endif
>>
>> /** Returns a RAW byte buffer instance over the given slices (up to \a 
>> nslices).
>>  *
>>  * Increases the reference count for all \a slices processed. The user is
>>  * responsible for invoking grpc_byte_buffer_destroy on the returned 
>> instance.*/
>> GRPCAPI grpc_byte_buffer* grpc_raw_byte_buffer_create(grpc_slice* slices,
>>                                                       size_t nslices);
>>
>> /** Returns a *compressed* RAW byte buffer instance over the given slices 
>> (up to
>>  * \a nslices). The \a compression argument defines the compression 
>> algorithm
>>  * used to generate the data in \a slices.
>>  *
>>  * Increases the reference count for all \a slices processed. The user is
>>  * responsible for invoking grpc_byte_buffer_destroy on the returned 
>> instance.*/
>> GRPCAPI grpc_byte_buffer* grpc_raw_compressed_byte_buffer_create(
>>     grpc_slice* slices, size_t nslices, grpc_compression_algorithm 
>> compression);
>>
>> which defines grpc_raw_byte_buffer_create() but doesn't implement it, 
>> hense the "unresolved symbol" error above (1st one).
>> I couldn't find those implementation .c files anywhere in the repo 
>> (except PHP ones).
>>
>> I did read iOS/Android build files in Unity experimental folder in the 
>> repo, but failed to track down where the .c files are coming from.
>>
>>
>> So I'm stuck here. 
>>
>>    - Can someone explain where all the other builds (cmakes) are 
>>    fetching the implementation .c files from?
>>    - Or does it actually need to be implemented anew for LuminOS?
>>
>>
>> Thank you!
>> Ryo
>> How can
>>
>>
>>
>> .com/ryoichirooka/status/1110313722826784768
>>
>>
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/grpc-io.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/ac2b1136-a8d7-4fae-978b-5eb9fe95a8bf%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to