class CMakeBuilder(Builder):
    def __init__(self, name, cfg, build_dir):
        super(CMakeBuilder, self).__init__(name, cfg, build_dir)
        self.cmake = CMake()

    def Build(self):
        with os_utils.Chdir(self.build_dir):
            self.cmake.setFlag("CMAKE_BUILD_TYPE", config.get("build-type"))
            cmake_opts = self.build_cfg.get("cmake", {})
            cmake_flags = cmake_opts.get("flags", {})
            for k, v in cmake_flags.items():
                self.cmake.setFlag(k, v)
            # self.cmake.setFlag('CMAKE_INSTALL_PREFIX', self.install_prefix)
            self.cmake.generator = "NMake Makefiles"
            self.cmake.run(CMAKE=EXECUTABLES["cmake"])
            if cmake_opts.get("build", False):
                target = ""
                if cmake_flags.get("CMAKE_INSTALL_PREFIX") is not None:
                    target = "install"
                target = cmake_opts.get("build-target", target)
                self.cmake.build(target=target, CMAKE=EXECUTABLES["cmake"])
        return True
Exemple #2
0
            'HHVMBUILD_DIR': HHVMBUILD_DIR
        })
        pbsteps = distro_cfg.get('prebuild', [])
        if pbsteps is None:
          pbsteps = []
        if len(pbsteps) > 0:
          log.info('Performing prebuild steps...')
          origpath = os.path.abspath(os.getcwd())
          RunCommandsIn(distro_cfg.get('prebuild', []), distro_cfg, {
              'SOURCE_DIR': SOURCE_DIR,
              'DISTRO_DIR': os.path.join(HHVMBUILD_DIR, 'hhvm', DISTRO_NAME, DISTRO_RELEASE),
              'HHVMBUILD_DIR': HHVMBUILD_DIR
          })
          os.chdir(origpath)

      if not cmake.run(cfg.get('bin.cmake', 'cmake')):
        sys.exit(1)

      if not cmd([cfg.get('bin.make', 'make')] + MAKE_FLAGS, critical=True, echo=True):
        sys.exit(1)

    if not os.path.isfile(hhvm_bin):
      log.critical(hhvm_bin + " doesn't exist")
      sys.exit(1)

  if cfg.get('env.packaging.enabled', False):
    stdout, stderr = cmd_output('dpkg-architecture -qDEB_BUILD_GNU_TYPE'.split(), critical=True, echo=False)
    ARCH = (stdout + stderr).strip()

    for build_type in ['main', 'dev']:
      if build_type == 'dev':
            cmake.build(CMAKE=EXECUTABLES['cmake'])
"""

asmjit_dir = os.path.join(script_dir, "build", "asmjit")
with log.info("Building asmjit..."):
    if not args.rebuild_all and filesAllExist(["asmjit.lib"], basedir="install/lib"):
        log.info("Skipping; All needed files built.")
    else:
        with os_utils.Chdir(asmjit_dir):
            cmake = CMake()
            cmake.setFlag("ASMJIT_STATIC", "TRUE")
            cmake.setFlag("ASMJIT_DISABLE_COMPILER", "TRUE")
            cmake.setFlag("CMAKE_BUILD_TYPE", config.get("cmake.build-type"))
            cmake.setFlag("CMAKE_INSTALL_PREFIX", os.path.join(script_dir, "install").replace("\\", "/"))
            cmake.generator = "NMake Makefiles"
            cmake.run(CMAKE=EXECUTABLES["cmake"])
            cmake.build(CMAKE=EXECUTABLES["cmake"], target="install")

# MUST be built with system Python because it includes pyexpat.
udis_dir = firstDirIn(os.path.join(script_dir, "build", "udis86"))
with log.info("Building udis..."):
    with os_utils.Chdir(udis_dir):
        os_utils.cmd(
            [EXECUTABLES["python"], "scripts/ud_itab.py", "docs/x86/optable.xml", "libudis86"],
            echo=True,
            show_output=True,
            critical=True,
        )
        cpp = WindowsCCompiler("libudis86.lib")
        cpp.files = [
            "libudis86/decode.c",