import org.doomedsociety.gradlecpp.cfg.BinaryKind
import org.doomedsociety.gradlecpp.gcc.GccToolchainConfig
import org.doomedsociety.gradlecpp.gcc.OptimizationLevel

rootProject.ext.createGccConfig = { boolean release, BinaryKind binKind ->
	GccToolchainConfig cfg
	if (release) {
		cfg = new GccToolchainConfig(
				compilerOptions: new GccToolchainConfig.CompilerOptions(
						optimizationLevel: OptimizationLevel.LEVEL_3,
						stackProtector: false,
						//interProceduralOptimizations: true,

						noBuiltIn: true,

						//intelExtensions: false,
						//asmBlocks: true,

						positionIndependentCode: false,

						extraDefines: [
							'_GLIBCXX_USE_CXX11_ABI': 0,
						]
				),

				linkerOptions: new GccToolchainConfig.LinkerOptions(
						//interProceduralOptimizations: true,
						stripSymbolTable: false,
						staticLibGcc: false,
						//staticIntel: true,
						staticLibStdCpp: false,
				),

				librarianOptions: new GccToolchainConfig.LibrarianOptions(

				)
		)
	} else {
		//debug
		cfg = new GccToolchainConfig(
				compilerOptions: new GccToolchainConfig.CompilerOptions(
						optimizationLevel: OptimizationLevel.DISABLE,
						stackProtector: true,
						//interProceduralOptimizations: false,

						noBuiltIn: true,
						//intelExtensions: false,
						//asmBlocks: true,

						extraDefines: [
							'_GLIBCXX_USE_CXX11_ABI': 0,
						]
				),

				linkerOptions: new GccToolchainConfig.LinkerOptions(
						//interProceduralOptimizations: false,
						stripSymbolTable: false,
						staticLibGcc: false,
						//staticIntel: true,
						staticLibStdCpp: false,
				),

				librarianOptions: new GccToolchainConfig.LibrarianOptions(

				)
		)
	}

	cfg.singleDefines('LINUX', '_LINUX')
	return cfg
}