On Sat, Apr 1, 2017 at 7:45 AM, Helmut Grohne <hel...@subdivi.de> wrote:
>> That being said generating them live is probably a good approach, it >> seems to be mostly a question of mangling the output of >> dpkg-architecture. > > Yes. That's also essentially how the command line parameters for CMake > are constructed[1]. Attached is a simple script that generates a cross file that works for me when using a simple project. Use it like this: ./debcrossgen.py armhf generated_cross.txt And then pass --libdir=lib/archdir_here --cross-file generated_cross.txt to Meson to use it. It only takes care of host, not target. Consider it an MVP. :)
#!/usr/bin/env python3 # Copyright 2017 Jussi Pakkanen # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # http://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import sys, os, subprocess def run(arch, ofilename): output = subprocess.check_output(['dpkg-architecture', '-a' + arch], universal_newlines=True) data = {} for line in output.split('\n'): line = line.strip() if line == '': continue k, v = line.split('=', 1) data[k] = v host_arch = data['DEB_HOST_GNU_TYPE'] host_os = data['DEB_HOST_ARCH_OS'] host_cpu_family = data['DEB_HOST_GNU_CPU'] host_cpu = data['DEB_HOST_ARCH'] # Not really correct, should be arm7hlf etc but it is not exposed. host_endian = data['DEB_HOST_ARCH_ENDIAN'] ofile = open(ofilename, 'w') ofile.write('[binaries]\n') ofile.write("c = '/usr/bin/%s-gcc-6'\n" % host_arch) ofile.write("cpp = '/usr/bin/%s-g++-6'\n" % host_arch) ofile.write("ar = '/usr/bin/%s-ar'\n" % host_arch) ofile.write("strip = '/usr/bin/%s-strip'\n" % host_arch) ofile.write("pkgconfig = '/usr/bin/%s-pkg-config'\n" % host_arch) ofile.write('\n[properties]\n') ofile.write('\n[host_machine]\n') ofile.write("system = '%s'\n" % host_os) ofile.write("cpu_family = '%s'\n" % host_cpu_family) ofile.write("cpu = '%s'\n" % host_cpu) ofile.write("endian = '%s'\n" % host_endian) ofile.close() if __name__ == '__main__': if len(sys.argv) != 3: print(sys.argv[0], 'host-arch outputfile') sys.exit(1) arch = sys.argv[1] outfile = sys.argv[2] run(arch, outfile) print('Remember to add the proper --libdir arg to Meson invocation.')