If you don't care about gyp or cross-compiling, you can skip this message. I've been experimenting with adding host support for cross-compiling into gyp. By this, I mean being able to use the cross-compiler to build Chrome, but still using the host compiler for build tools. "Regular" Chrome, with v8 snapshotting and nacl disabled doesn't currently need this but for example if you enable nacl, or compile the chromeos version you end up building tools necessary to generate headers or source files needed for the target (e.g. protocol buffer compiler). Currently if you use a cross-compiler, those tools are built for the target, so you can't run them.
What I've done is tweak the make generator to add an option on every target to compile it for host, target or both. Here are the CLs: - chrome side: http://codereview.chromium.org/265031 - gyp side: http://codereview.chromium.org/271019 Basically on the make generator side, every rule can be duplicated, for the host version and the target version, based on a parameter on the gyp rule (default is target only). Furthermore, cflags, ldflags and libraries are cut into a common part, a host-specific part and a target-specific part. It keeps target objects and host objects in separate trees. It's very crude, but it solves the problem for the protobuf compiler, which is promising. Also, it makes the changes to the gyp definitions extremely simple an non-intrusive (see chrome-side patch) - one of the simplest methods I've ever seen for this sort of things. I think this solution should also fix the nacl issues. I'm not yet sure about v8 snapshotting. Several issues: 1- It's basically a big hack. The level of control between host and target compiles boils down to compile and link flags (and compiler/linker). No way to have different dependencies, different files to compile etc. 2- Generally, target rules depend on other target rules, host rules depend on other host rules. The way you make the bridge (when you need a target rule to depend on executing the host tool) is by having the host tool installed at a particular location, and have the target rule depend on that file (which is the way the protobuf compiler is called now, but that's very limited). 3- Well, it only works for the make build. The current patch probably breaks the scons one. XCode and MSVS should be mostly unaffected - but won't supposrt this, which I don't think is a big deal. Anyway I'm looking for feedback on the above, and guidance on the following: What I'd like to do is find a way to keep a similar syntax for host vs target selection, but change the way cflags etc. differences are dealt with into something that looks more like conditions which would allow more control over deps, sources, etc. which would make it I think a very powerful and general way of dealing with this whole thing. To you gyp gurus, do you see a simple way of doing this ? Thanks, Antoine --~--~---------~--~----~------------~-------~--~----~ Chromium Developers mailing list: [email protected] View archives, change email options, or unsubscribe: http://groups.google.com/group/chromium-dev -~----------~----~----~----~------~----~------~--~---
