print "Using Microsoft tools configuration"

Import('defenv')

### flags

defenv['ENTRY_FLAG'] = lambda x: '/entry:' + x
defenv['MAP_FLAG'] = '/map'
defenv['EXCEPTION_FLAG'] = '/GX'
defenv['NODEFLIBS_FLAG'] = '/NODEFAULTLIB'
defenv['C_FLAG'] = '/TC'
defenv['CPP_FLAG'] = '/TP'
defenv['CPP_REQUIRES_STDLIB'] = 0

### debug

if defenv['DEBUG']:
	defenv.Append(CCFLAGS = '/Zi')
	defenv.Append(CCFLAGS = '/Fd${TARGET.dir}\\${TARGET.dir.file}.pdb')
	defenv.Append(LINKFLAGS = '/debug')

### stub environment

stub_env = defenv.Copy()

if not defenv['DEBUG']:
	stub_env.Append(CCFLAGS = '/O1')               # optimize for size
stub_env.Append(CCFLAGS = '/W3')                 # level 3 warnings

stub_env.Append(LINKFLAGS = '/opt:nowin98')      # 512 bytes align
stub_env.Append(LINKFLAGS = '/entry:WinMain')    # entry point
stub_env.Append(LINKFLAGS = '/NODEFAULTLIB')     # no default libraries
stub_env.Append(LINKFLAGS = '$MAP_FLAG')         # generate map file

### makensis environment

makensis_env = defenv.Copy()

if not defenv['DEBUG']:
	makensis_env.Append(CCFLAGS = '/O2')           # optimize for speed
makensis_env.Append(CCFLAGS = '/GX')             # enable exceptions
makensis_env.Append(CCFLAGS = '/W3')             # level 3 warnings

makensis_env.Append(LINKFLAGS = '/opt:nowin98')  # 512 bytes align
makensis_env.Append(LINKFLAGS = '$MAP_FLAG')     # generate map file

### plugin environment

plugin_env = defenv.Copy(no_import_lib = 1)

if not defenv['DEBUG']:
	plugin_env.Append(CCFLAGS = '/O1')             # optimize for size
plugin_env.Append(CCFLAGS = '/W3')               # level 3 warnings

plugin_env.Append(LINKFLAGS = '/opt:nowin98')    # 512 bytes align
plugin_env.Append(LINKFLAGS = '$MAP_FLAG')       # generate map file

### util environment

util_env = defenv.Copy()

if not defenv['DEBUG']:
	util_env.Append(CCFLAGS = '/O1')            # optimize for speed
util_env.Append(CCFLAGS = '/W3')              # level 3 warnings

util_env.Append(LINKFLAGS = '/opt:nowin98')   # 512 bytes align
util_env.Append(LINKFLAGS = '$MAP_FLAG')      # generate map file

### cross-platform util environment

cp_util_env = util_env.Copy()

# return

Return('stub_env makensis_env plugin_env util_env cp_util_env')
