summaryrefslogtreecommitdiffstats
path: root/browser/app/winlauncher/freestanding/gen_ntdll_freestanding_lib.py
blob: d9fe86d78e62bc00a4fa028aff8ee018a8266a5b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

import os
import subprocess
import tempfile


def main(output_fd, def_file, llvm_dlltool, *llvm_dlltool_args):
    # llvm-dlltool can't output to stdout, so we create a temp file, use that
    # to write out the lib, and then copy it over to output_fd
    (tmp_fd, tmp_output) = tempfile.mkstemp()
    os.close(tmp_fd)

    try:
        cmd = [llvm_dlltool]
        cmd.extend(llvm_dlltool_args)
        cmd += ["-d", def_file, "-l", tmp_output]

        subprocess.check_call(cmd)

        with open(tmp_output, "rb") as tmplib:
            output_fd.write(tmplib.read())
    finally:
        os.remove(tmp_output)