target = 'makensis' pch = 'Platform.h' makensis_files = Split(""" build.cpp clzma.cpp crc32.c DialogTemplate.cpp dirreader.cpp fileform.cpp growbuf.cpp icon.cpp lang.cpp lineparse.cpp makenssi.cpp manifest.cpp mmap.cpp Plugins.cpp ResourceEditor.cpp ResourceVersionInfo.cpp BinInterop.cpp script.cpp scriptpp.cpp ShConstants.cpp strlist.cpp tokens.cpp tstring.cpp utf.cpp util.cpp winchar.cpp writer.cpp """) bzip2_files = Split(""" bzip2/blocksort.c bzip2/bzlib.c bzip2/compress.c bzip2/huffman.c """) lzma_files = Split(""" 7zip/7zGuids.cpp 7zip/7zip/Common/OutBuffer.cpp 7zip/7zip/Common/StreamUtils.cpp 7zip/7zip/Compress/LZ/LZInWindow.cpp 7zip/7zip/Compress/LZMA/LZMAEncoder.cpp 7zip/7zip/Compress/RangeCoder/RangeCoderBit.cpp 7zip/Common/Alloc.cpp 7zip/Common/CRC.cpp """) libs = Split(""" gdi32 user32 pthread iconv shlwapi oleaut32 """) Import('env AddAvailableLibs AddZLib') ##### Use available libraries if env['PLATFORM'] == 'win32': # XXX will cause problems if makensis is cross compiled # on freebsd, libversion.a exists and gives trouble if linked libs += ['version'] AddAvailableLibs(env, libs) AddZLib(env, env['PLATFORM'], 'install-compiler') ##### Defines env.Append(CPPDEFINES = ['MAKENSIS']) env.Append(CPPDEFINES = ['_WIN32_IE=0x0500']) ##### Set PCH # XXX doesn't work #env['PCH'] = env.PCH(pch)[0] #env['PCHSTOP'] = pch ##### LZMA specific defines lzma_env = env.Clone() lzma_env.Append(CPPDEFINES = ['COMPRESS_MF_BT']) lzma_files = lzma_env.Object(lzma_files) ##### Compile makensis files = makensis_files + bzip2_files + lzma_files makensis = env.Program(target, files) Return('makensis')