model {
	components {
		ActiveMethod(NativeExecutableSpec) {
			sources {
				cpp.source { srcDir 'ActiveMethod/src' include '**/*.cpp' }
				cpp.lib project: ':Foundation', library: 'Foundation'				
			}
		}
		Activity(NativeExecutableSpec) {
			sources {
				cpp.source { srcDir 'ActiveMethod/src' include '**/*.cpp' }
				cpp.lib project: ':Foundation', library: 'Foundation'				
			}
		}
		base64decode(NativeExecutableSpec) {
			sources {
				cpp.source { srcDir 'base64decode/src' include '**/*.cpp' }
				cpp.lib project: ':Foundation', library: 'Foundation'				
			}
		}
		base64encode(NativeExecutableSpec) {
			sources {
				cpp.source { srcDir 'base64encode/src' include '**/*.cpp' }
				cpp.lib project: ':Foundation', library: 'Foundation'				
			}
		}
		Benchmark(NativeExecutableSpec) {
			sources {
				cpp.source { srcDir 'Benchmark/src' include '**/*.cpp' }
				cpp.lib project: ':Foundation', library: 'Foundation'				
			}
		}
		BinaryReaderWriter(NativeExecutableSpec) {
			sources {
				cpp.source { srcDir 'BinaryReaderWriter/src' include '**/*.cpp' }
				cpp.lib project: ':Foundation', library: 'Foundation'				
			}
		}
		DateTime(NativeExecutableSpec) {
			sources {
				cpp.source { srcDir 'DateTime/src' include '**/*.cpp' }
				cpp.lib project: ':Foundation', library: 'Foundation'				
			}
		}
		deflate(NativeExecutableSpec) {
			sources {
				cpp.source { srcDir 'deflate/src' include '**/*.cpp' }
				cpp.lib project: ':Foundation', library: 'Foundation'				
			}
		}
		dir(NativeExecutableSpec) {
			sources {
				cpp.source { srcDir 'dir/src' include '**/*.cpp' }
				cpp.lib project: ':Foundation', library: 'Foundation'				
			}
		}
		grep(NativeExecutableSpec) {
			sources {
				cpp.source { srcDir 'grep/src' include '**/*.cpp' }
				cpp.lib project: ':Foundation', library: 'Foundation'				
			}
		}
		hmacmd5(NativeExecutableSpec) {
			sources {
				cpp.source { srcDir 'hmacmd5/src' include '**/*.cpp' }
				cpp.lib project: ':Foundation', library: 'Foundation'				
			}
		}
		inflate(NativeExecutableSpec) {
			sources {
				cpp.source { srcDir 'inflate/src' include '**/*.cpp' }
				cpp.lib project: ':Foundation', library: 'Foundation'				
			}
		}
		LineEndingConverter(NativeExecutableSpec) {
			sources {
				cpp.source { srcDir 'LineEndingConverter/src' include '**/*.cpp' }
				cpp.lib project: ':Foundation', library: 'Foundation'				
			}
		}
		Logger(NativeExecutableSpec) {
			sources {
				cpp.source { srcDir 'Logger/src' include '**/*.cpp' }
				cpp.lib project: ':Foundation', library: 'Foundation'				
			}
		}
		LogRotation(NativeExecutableSpec) {
			sources {
				cpp.source { srcDir 'LogRotation/src' include '**/*.cpp' }
				cpp.lib project: ':Foundation', library: 'Foundation'				
			}
		}
		md5(NativeExecutableSpec) {
			sources {
				cpp.source { srcDir 'md5/src' include '**/*.cpp' }
				cpp.lib project: ':Foundation', library: 'Foundation'				
			}
		}
		NotificationQueue(NativeExecutableSpec) {
			sources {
				cpp.source { srcDir 'NotificationQueue/src' include '**/*.cpp' }
				cpp.lib project: ':Foundation', library: 'Foundation'				
			}
		}
		StringTokenizer(NativeExecutableSpec) {
			sources {
				cpp.source { srcDir 'StringTokenizer/src' include '**/*.cpp' }
				cpp.lib project: ':Foundation', library: 'Foundation'				
			}
		}
		Timer(NativeExecutableSpec) {
			sources {
				cpp.source { srcDir 'Timer/src' include '**/*.cpp' }
				cpp.lib project: ':Foundation', library: 'Foundation'				
			}
		}
		URI(NativeExecutableSpec) {
			sources {
				cpp.source { srcDir 'URI/src' include '**/*.cpp' }
				cpp.lib project: ':Foundation', library: 'Foundation'				
			}
		}
		uuidgen(NativeExecutableSpec) {
			sources {
				cpp.source { srcDir 'uuidgen/src' include '**/*.cpp' }
				cpp.lib project: ':Foundation', library: 'Foundation'				
			}
		}
	}
	binaries {
		all {
		}
		withType(SharedLibraryBinarySpec) {
			lib project: ':Foundation', library: 'Foundation', linkage: 'shared'
		}
		withType(StaticLibraryBinarySpec) {
			lib project: ':Foundation', library: 'Foundation', linkage: 'static'
		}
		withType(NativeExecutableSpec) {
			lib project: ':Foundation', library: 'Foundation', linkage: 'static'
		}
	}
}
task samples { dependsOn "assemble" }


