import org.doomedsociety.gradlecpp.cfg.ToolchainConfigUtils import org.doomedsociety.gradlecpp.msvc.MsvcToolchainConfig import org.doomedsociety.gradlecpp.toolchain.icc.Icc import org.doomedsociety.gradlecpp.toolchain.icc.IccCompilerPlugin import org.gradle.nativeplatform.NativeBinarySpec import org.gradle.nativeplatform.NativeLibrarySpec import org.gradle.nativeplatform.toolchain.VisualCpp apply plugin: 'c' apply plugin: IccCompilerPlugin void setupToolchain(NativeBinarySpec b) { def cfg = rootProject.createToolchainConfig(b) if (cfg instanceof MsvcToolchainConfig) { cfg.compilerOptions.pchConfig = new MsvcToolchainConfig.PrecompiledHeadersConfig( enabled: true, pchHeader: 'bzlib_private.h', pchSourceSet: 'bz2_pch' ) } ToolchainConfigUtils.apply(project, cfg, b) } model { buildTypes { debug release } platforms { x86 { architecture "x86" } } toolChains { visualCpp(VisualCpp) { } icc(Icc) { } } components { bzip2(NativeLibrarySpec) { targetPlatform 'x86' sources { bz2_main(CSourceSet) { source { srcDir "src" include "**/*.c" exclude "precompiled.c" } exportedHeaders { srcDir "include" } } bz2_pch(CSourceSet) { source { srcDir "src" include "precompiled.c" } exportedHeaders { srcDir "include" } } } binaries.all { NativeBinarySpec b -> project.setupToolchain(b) } } } }