source_dir . '/build-dir'); shell()->cd($this->source_dir . '/build-dir') ->setEnv(['CFLAGS' => $this->getLibExtraCFlags(), 'LDFLAGS' => $this->getLibExtraLdFlags(), 'LIBS' => $this->getLibExtraLibs()]) ->execWithEnv( 'cmake ' . '-DCMAKE_BUILD_TYPE=Release ' . "-DCMAKE_TOOLCHAIN_FILE={$this->builder->cmake_toolchain_file} " . '-DCMAKE_INSTALL_PREFIX=' . BUILD_ROOT_PATH . ' ' . '-DCMAKE_INSTALL_LIBDIR=lib ' . '-DSHARE_INSTALL_PREFIX=' . BUILD_ROOT_PATH . ' ' . '-DBUILD_SHARED_LIBS=OFF ' . '..' ) ->execWithEnv("cmake --build . -j {$this->builder->concurrency}") ->execWithEnv('make install'); $this->patchPkgconfPrefix(['libbrotlicommon.pc', 'libbrotlidec.pc', 'libbrotlienc.pc']); shell()->cd(BUILD_ROOT_PATH . '/lib')->exec('ln -sf libbrotlicommon.a libbrotli.a'); foreach (FileSystem::scanDirFiles(BUILD_ROOT_PATH . '/lib/', false, true) as $filename) { if (str_starts_with($filename, 'libbrotli') && (str_contains($filename, '.so') || str_ends_with($filename, '.dylib'))) { unlink(BUILD_ROOT_PATH . '/lib/' . $filename); } } if (file_exists(BUILD_BIN_PATH . '/brotli')) { unlink(BUILD_BIN_PATH . '/brotli'); } } }