That's... more than reasonable actually, yes.
On Thu, Aug 30, 2018 at 3:54 PM Mark Fine <[email protected]> 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]> 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]> 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]> 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]. >>>> 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/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]. > 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/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/CAOWnRi9%3DoxJLtkRe1nNFS4BZ%3DT0YKr4Hb%2BPDacLtLZGnhdoTkQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
smime.p7s
Description: S/MIME Cryptographic Signature
