# vim: set ts=2 sw=2 tw=99 noet ft=python : 
import os.path
import subprocess
import ambuild.command as command
import ambuild.osutil as osutil

def BuildCURL():
	curl = AMBuild.AddJob('curl')
	if AMBuild.target['platform'] in ['linux', 'darwin']:
		if not osutil.FileExists(os.path.join(AMBuild.outputFolder, 'curl', 'Makefile')):
			args = ['/bin/bash',
							os.path.join(AMBuild.sourceFolder, 'extensions', 'curl', 'curl-src', 'configure'),
							'--enable-static',
							'--disable-shared',
							'--disable-ldap',
							'--without-ssl',
							'--without-libidn',
							'--without-libssh2',
							'--without-zlib']
			env = os.environ.copy()
			env['CFLAGS'] = '-m32'
			if AMBuild.target['platform'] == 'darwin':
				env['CFLAGS'] += ' -isysroot /Developer/SDKs/MacOSX10.5.sdk'
				env['LDFLAGS'] = '-mmacosx-version-min=10.5'
			curl.AddCommand(command.DirectCommand(argv = args, env = env))
			curl.AddCommand(command.ShellCommand('cd lib && make'))
	else:
		args = ''
		projpath = os.path.join(AMBuild.sourceFolder, 'extensions', 'curl', 'curl-src', 'lib',
		                    'build_libcurl.vcproj')
		try:
			subprocess.Popen('vcbuild')
		except:
			xprojpath = os.path.join(AMBuild.sourceFolder, 'extensions', 'curl', 'curl-src', 'lib',
		                    'build_libcurl.vcxproj')
			if not os.path.isfile(xprojpath):
				curl.AddCommand(command.DirectCommand(['vcupgrade', projpath]))
			args = ['msbuild', xprojpath, '/p:Configuration=LIB Release']
			
		if not args:
			args = ['vcbuild', projpath, 'LIB Release']
		
		curl.AddCommand(command.DirectCommand(args))
		#die "Unable to find libcurl.lib!\n" unless (-f "LIB-Release\\libcurl.lib");

BuildCURL()

compiler = SM.DefaultExtCompiler('extensions/curl')
extension = AMBuild.AddJob('webternet.ext')
binary = Cpp.LibraryBuilder('webternet.ext', AMBuild, extension, compiler)

curlPath = [AMBuild.sourceFolder, 'extensions', 'curl', 'curl-src', 'include']
compiler['CXXINCLUDES'].append(os.path.join(*curlPath))
compiler['CDEFINES'].append('CURL_STATICLIB')
                                          
binary.AddSourceFiles('extensions/curl', [
	'extension.cpp',
	'curlapi.cpp',
	'sdk/smsdk_ext.cpp',
	])

if AMBuild.target['platform'] == 'linux' or AMBuild.target['platform'] == 'darwin':
	path = os.path.join(AMBuild.outputFolder,
                      'curl',
                      'lib',
                      '.libs',
                      'libcurl.a')
	if AMBuild.target['platform'] == 'linux':
		binary['POSTLINKFLAGS'].append('-lrt')
	binary.AddObjectFiles([path])
elif AMBuild.target['platform'] == 'windows':
	path = os.path.join(AMBuild.sourceFolder,
	                    'extensions',
	                    'curl',
	                    'curl-src',
	                    'lib',
	                    'LIB-Release',
	                    'libcurl.lib')
	if os.path.isfile(path):
		binary.RelinkIfNewer(path)
	binary['POSTLINKFLAGS'].extend([path, 'ws2_32.lib'])

SM.AutoVersion('extensions/curl', binary)
binary.SendToJob()