We put up a pull request for the changes here:

  https://github.com/grpc/grpc/pull/16527

On Thursday, August 30, 2018 at 4:35:54 PM UTC-7, Nicolas Noble wrote:
>
> That's... more than reasonable actually, yes.
>
>
> On Thu, Aug 30, 2018 at 3:54 PM Mark Fine <[email protected] <javascript:>> 
> wrote:
>
>> We've had some luck with patching grpc's Makefile to update host flags:
>>
>> diff -ur grpc_custom-v1.12.0/Makefile grpc_custom-v1.12.0.new/Makefile
>> --- grpc_custom-v1.12.0/Makefile        2018-05-15 17:10:37.000000000 +0000
>> +++ grpc_custom-v1.12.0.new/Makefile    2018-08-30 20:28:31.357410038 +0000
>> @@ -439,11 +439,11 @@
>>  DEFINES += $(EXTRA_DEFINES)
>>  LDLIBS += $(EXTRA_LDLIBS)
>>
>> -HOST_CPPFLAGS = $(CPPFLAGS)
>> -HOST_CFLAGS = $(CFLAGS)
>> -HOST_CXXFLAGS = $(CXXFLAGS)
>> -HOST_LDFLAGS = $(LDFLAGS)
>> -HOST_LDLIBS = $(LDLIBS)
>> +HOST_CPPFLAGS += $(CPPFLAGS)
>> +HOST_CFLAGS += $(CFLAGS)
>> +HOST_CXXFLAGS += $(CXXFLAGS)
>> +HOST_LDFLAGS += $(LDFLAGS)
>> +HOST_LDLIBS += $(LDLIBS)
>>
>> does that sound reasonable? Thanks!
>>
>> Mark
>>
>> On Thu, Aug 30, 2018 at 10:00 AM, Mark Fine <[email protected] 
>> <javascript:>> wrote:
>>
>>> Hi, thanks for the reply - we've got a simple buildroot mk file down to:
>>>
>>>
>>> ################################################################################
>>> #
>>> # grpc
>>> #
>>>
>>> ################################################################################
>>>
>>> GRPC_CUSTOM_VERSION = v1.12.0
>>> GRPC_CUSTOM_SITE = https://github.com/grpc/grpc.git
>>> GRPC_CUSTOM_SITE_METHOD = git
>>> GRPC_CUSTOM_LICENSE = BSD-3-Clause
>>> GRPC_CUSTOM_LICENSE_FILES = LICENSE
>>>
>>> GRPC_CUSTOM_DEPENDENCIES = gflags gtest c-ares openssl protobuf zlib
>>>
>>> GRPC_CUSTOM_INSTALL_STAGING = YES
>>>
>>> GRPC_CUSTOM_MAKE_ENV = \
>>> $(TARGET_MAKE_ENV) \
>>> CC="$(TARGET_CC)" \
>>> CXX="$(TARGET_CXX)" \
>>> LD="$(TARGET_CC)" \
>>> CFLAGS="$(TARGET_CFLAGS)" \
>>> LDFLAGS="$(TARGET_LDFLAGS)" \
>>> STRIP="$(TARGET_STRIP)"
>>>
>>> GRPC_CUSTOM_MAKE_OPTS = \
>>> PROTOC="$(HOST_DIR)/usr/bin/protoc"
>>>
>>> GRPC_CUSTOM_INSTALL_TARGET_OPTS = \
>>> prefix="$(TARGET_DIR)/usr"
>>>
>>> GRPC_CUSTOM_INSTALL_STAGING_OPTS = \
>>> prefix="$(STAGING_DIR)/usr"
>>>
>>> define GRPC_CUSTOM_BUILD_CMDS
>>> $(GRPC_CUSTOM_MAKE_ENV) $(MAKE) $(GRPC_CUSTOM_MAKE_OPTS) -C $(@D) \
>>>   static
>>> endef
>>>
>>> define GRPC_CUSTOM_INSTALL_STAGING_CMDS
>>> $(GRPC_CUSTOM_MAKE_ENV) $(MAKE) $(GRPC_CUSTOM_INSTALL_STAGING_OPTS) -C 
>>> $(@D) \
>>>   install-headers install-static_c install-static_cxx
>>> endef
>>>
>>> define GRPC_CUSTOM_INSTALL_TARGET_CMDS
>>> $(GRPC_CUSTOM_MAKE_ENV) $(MAKE) $(GRPC_CUSTOM_INSTALL_TARGET_OPTS) -C 
>>> $(@D) \
>>>   install-static_c install-static_cxx
>>> endef
>>>
>>> $(eval $(generic-package))
>>>
>>> My understanding is that this should be calling *make static* against 
>>> grpc's root Makefile with the env setup. The target compiling seems to go 
>>> fine:
>>>
>>> /piksi_buildroot/buildroot/output/host/bin/arm-linux-g++ 
>>> -I/piksi_buildroot/buildroot/output/host/bin/../arm-buildroot-linux-gnueabihf/sysroot/usr/include
>>>  
>>> -pthread   -Ithird_party/googletest/googletest/include 
>>> -Ithird_party/googletest/googlemock/include 
>>> -I/piksi_buildroot/buildroot/output/host/bin/../arm-buildroot-linux-gnueabihf/sysroot/usr/include
>>>   
>>>  -Ithird_party/address_sorting/include -g -Wall -Wextra -Werror 
>>> -Wno-long-long -Wno-unused-parameter -DOSATOMIC_USE_INLINED=1 
>>> -Wno-deprecated-declarations -O2 -Wframe-larger-than=16384 -fPIC -I. 
>>> -Iinclude 
>>> -I/piksi_buildroot/buildroot/output/build/grpc_custom-v1.12.0/gens 
>>> -DPB_FIELD_16BIT -DNDEBUG -DINSTALL_PREFIX=\"/usr/local\"  
>>>  
>>> -I/piksi_buildroot/buildroot/output/host/bin/../arm-buildroot-linux-gnueabihf/sysroot/usr/include
>>>   
>>>  
>>> -I/piksi_buildroot/buildroot/output/host/bin/../arm-buildroot-linux-gnueabihf/sysroot/usr/include
>>>   
>>>  -std=c++11   -MMD -MF 
>>> /piksi_buildroot/buildroot/output/build/grpc_custom-v1.12.0/objs/opt/src/cpp/common/auth_property_iterator.dep
>>>  
>>> -c -o 
>>> /piksi_buildroot/buildroot/output/build/grpc_custom-v1.12.0/objs/opt/src/cpp/common/auth_property_iterator.o
>>>  
>>> src/cpp/common/auth_property_iterator.cc
>>>
>>> But then we end up running into issues once we move to host compiling 
>>> around the plugins
>>>
>>> [HOSTCXX] Compiling src/compiler/cpp_plugin.cc
>>> [HOSTCXX] Compiling src/compiler/node_plugin.cc
>>> [HOSTCXX] Compiling src/compiler/csharp_plugin.cc
>>> [HOSTCXX] Compiling src/compiler/objective_c_plugin.cc
>>> [HOSTCXX] Compiling src/compiler/php_plugin.cc
>>> [HOSTCXX] Compiling src/compiler/python_plugin.cc
>>> [HOSTCXX] Compiling src/compiler/ruby_plugin.cc
>>> [HOSTLD]  Linking 
>>> /piksi_buildroot/buildroot/output/build/grpc_custom-v1.12.0/bins/opt/grpc_cpp_plugin
>>>
>>> And have tried any number of settings get them to work. For instance, 
>>> with the above configuration we error on host linking:
>>>
>>> c++ 
>>> -L/piksi_buildroot/buildroot/output/host/bin/../arm-buildroot-linux-gnueabihf/sysroot/usr//lib
>>>   
>>>  
>>> -Wl,-rpath,/piksi_buildroot/buildroot/output/host/bin/../arm-buildroot-linux-gnueabihf/sysroot/usr//lib
>>>   
>>>  -flto -flto -g  -fPIC -Llibs/opt -pthread  
>>>  
>>> -L/piksi_buildroot/buildroot/output/host/bin/../arm-buildroot-linux-gnueabihf/sysroot/usr/lib
>>>   
>>>  
>>> -L/piksi_buildroot/buildroot/output/host/bin/../arm-buildroot-linux-gnueabihf/sysroot/usr/lib
>>>   
>>>  
>>> /piksi_buildroot/buildroot/output/build/grpc_custom-v1.12.0/objs/opt/src/compiler/cpp_plugin.o
>>>  
>>> /piksi_buildroot/buildroot/output/build/grpc_custom-v1.12.0/libs/opt/libgrpc_plugin_support.a
>>>   
>>> -lprotoc -lprotobuf -ldl -lrt -lm -lpthread -lz -lcares  -lprotoc 
>>> -lprotobuf -o 
>>> /piksi_buildroot/buildroot/output/build/grpc_custom-v1.12.0/bins/opt/grpc_cpp_plugin
>>>
>>> is there some ENV we're missing here or should add to help things out? 
>>> Thanks for any help or advice!
>>>
>>> Mark
>>>
>>> On Thu, Aug 30, 2018 at 9:34 AM, Nicolas Noble <[email protected] 
>>> <javascript:>> wrote:
>>>
>>>> Yes, it's definitely doable to cross compile for ARM - in fact we do it 
>>>> regularly for some of our prebuilt binaries.
>>>>
>>>> Now each environment and case is different. What steps are you 
>>>> following exactly?
>>>>
>>>> On Thu, Aug 30, 2018 at 9:05 AM Mark Fine <[email protected] 
>>>> <javascript:>> wrote:
>>>>
>>>>> Hi!
>>>>>
>>>>> We're having issues cross compiling gRPC in buildroot. There's been 
>>>>> some prior work on getting gRPC into buildroot:
>>>>>
>>>>>
>>>>> https://gfiber.googlesource.com/buildroot/+/refs/heads/master/package/grpc
>>>>> http://lists.busybox.net/pipermail/buildroot/2017-April/189714.html
>>>>> https://patchwork.ozlabs.org/patch/917779/
>>>>>
>>>>> but nothing seems to have made it to upstream. In particular, we're 
>>>>> running into issues around host compiling having target libraries 
>>>>> included 
>>>>> and linked against. Here's an example of host linking against target 
>>>>> libraries:
>>>>>
>>>>> c++ 
>>>>> -L/piksi_buildroot/buildroot/output/host/bin/../arm-buildroot-linux-gnueabihf/sysroot/usr//lib
>>>>>   
>>>>>  
>>>>> -Wl,-rpath,/piksi_buildroot/buildroot/output/host/bin/../arm-buildroot-linux-gnueabihf/sysroot/usr//lib
>>>>>   
>>>>>  -flto -flto -g  -fPIC -Llibs/opt -pthread    
>>>>>  
>>>>> -L/piksi_buildroot/buildroot/output/host/bin/../arm-buildroot-linux-gnueabihf/sysroot/usr/lib
>>>>>   
>>>>>  
>>>>> -L/piksi_buildroot/buildroot/output/host/bin/../arm-buildroot-linux-gnueabihf/sysroot/usr/lib
>>>>>   
>>>>>  
>>>>> /piksi_buildroot/buildroot/output/build/grpc_custom-v1.12.0/objs/opt/src/compiler/cpp_plugin.o
>>>>>  
>>>>> /piksi_buildroot/buildroot/output/build/grpc_custom-v1.12.0/libs/opt/libgrpc_plugin_support.a
>>>>>   
>>>>> -lprotoc -lprotobuf -ldl -lrt -lm -lpthread -lz -lcares  -lprotoc 
>>>>> -lprotobuf -o 
>>>>> /piksi_buildroot/buildroot/output/build/grpc_custom-v1.12.0/bins/opt/grpc_cpp_plugin
>>>>>
>>>>> Here's an example of host including target libraries:
>>>>>
>>>>> /usr/bin/g++ -std=c++11  
>>>>>  
>>>>> -I/piksi_buildroot/buildroot/output/host/bin/../arm-buildroot-linux-gnueabihf/sysroot/usr/include
>>>>>  
>>>>> -pthread   -Ithird_party/googletest/googletest/include 
>>>>> -Ithird_party/googletest/googlemock/include 
>>>>> -I/piksi_buildroot/buildroot/output/host/bin/../arm-buildroot-linux-gnueabihf/sysroot/usr/include
>>>>>   
>>>>>  -Ithird_party/address_sorting/include -g -Wall -Wextra -Werror 
>>>>> -Wno-long-long -Wno-unused-parameter -DOSATOMIC_USE_INLINED=1 
>>>>> -Wno-deprecated-declarations -O2 -Wframe-larger-than=16384 -fPIC -I. 
>>>>> -Iinclude 
>>>>> -I/piksi_buildroot/buildroot/output/build/grpc_custom-v1.12.0/gens 
>>>>> -DPB_FIELD_16BIT -DNDEBUG -DINSTALL_PREFIX=\"/usr/local\"  
>>>>>  
>>>>> -I/piksi_buildroot/buildroot/output/host/bin/../arm-buildroot-linux-gnueabihf/sysroot/usr/include
>>>>>   
>>>>>  
>>>>> -I/piksi_buildroot/buildroot/output/host/bin/../arm-buildroot-linux-gnueabihf/sysroot/usr/include
>>>>>   
>>>>>  -MMD -MF 
>>>>> /piksi_buildroot/buildroot/output/build/grpc_custom-v1.12.0/objs/opt/src/compiler/cpp_generator.dep
>>>>>  
>>>>> -c -o 
>>>>> /piksi_buildroot/buildroot/output/build/grpc_custom-v1.12.0/objs/opt/src/compiler/cpp_generator.o
>>>>>  
>>>>> src/compiler/cpp_generator.cc
>>>>> In file included from 
>>>>> /piksi_buildroot/buildroot/output/host/bin/../arm-buildroot-linux-gnueabihf/sysroot/usr/include/features.h:447:0,
>>>>>                  from 
>>>>> /usr/include/x86_64-linux-gnu/c++/6/bits/os_defines.h:39,
>>>>>                  from 
>>>>> /usr/include/x86_64-linux-gnu/c++/6/bits/c++config.h:507,
>>>>>                  from /usr/include/c++/6/bits/stl_algobase.h:59,
>>>>>                  from /usr/include/c++/6/bits/stl_tree.h:63,
>>>>>                  from /usr/include/c++/6/map:60,
>>>>>                  from src/compiler/cpp_generator.cc:19:
>>>>> /piksi_buildroot/buildroot/output/host/bin/../arm-buildroot-linux-gnueabihf/sysroot/usr/include/gnu/stubs.h:7:29:
>>>>>  
>>>>> fatal error: gnu/stubs-soft.h: No such file or directory
>>>>>  # include <gnu/stubs-soft.h>
>>>>>                              ^
>>>>>
>>>>> Has anyone had success cross compiling gRPC on buildroot? Or just 
>>>>> cross compiling gRPC on ARM? The interactions between the host and target 
>>>>> compiling with and without the GRPC_CROSS_COMPILE flag are causing us 
>>>>> issues, especially around the host plugins. Thanks for any help!
>>>>>
>>>>> Mark
>>>>>
>>>>> -- 
>>>>> 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] <javascript:>.
>>>>> To post to this group, send email to [email protected] 
>>>>> <javascript:>.
>>>>> 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/6ef7f44c-60f9-4afe-92ff-2ba139febf12%40googlegroups.com
>>>>>  
>>>>> <https://groups.google.com/d/msgid/grpc-io/6ef7f44c-60f9-4afe-92ff-2ba139febf12%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>>
>>>
>> -- 
>> 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] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> 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/CANRZ_fmNKqZXZE-8Yx%2Bgu%3DWKpouDw6c32o_nrSUm_WH4pOHjcw%40mail.gmail.com
>>  
>> <https://groups.google.com/d/msgid/grpc-io/CANRZ_fmNKqZXZE-8Yx%2Bgu%3DWKpouDw6c32o_nrSUm_WH4pOHjcw%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 
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/9a7589ca-10e4-40ac-ada0-4af10e5ed03b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to