hi,
here is a patch for nsis for the latest version. it was a bit
complicated since i have to rewrite both patches. at the same time it's
a hg diff where i remove all old patches.
the resulted nsis can be run on linux (am i right?). but also contains
windows binary too so in this case it's a i386 + noarch rpm (as other
windows libs)?
but then how can we strip half of the binary with strip the others with
%{_mingw32_strip}?
that's why if you apply this patch, then it won't build since:
---------------------------------
+ /usr/lib/rpm/redhat/brp-compress
+ /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip
/usr/bin/strip: Unable to recognise the format of the input file
`/var/tmp/mingw32-nsis-2.42-1-root-lfarkas/usr/share/doc/mingw32-nsis-2.42/Examples/Plugin/pluginapi.lib(pluginapi.o)'
---------------------------------
what's the solution?
anyway please apply this patch to the hg.

-- 
  Levente                               "Si vis pacem para bellum!"
diff -r bc1c73331bcf nsis/mingw32-nsis.spec
--- a/nsis/mingw32-nsis.spec    Tue Jan 13 13:00:19 2009 +0000
+++ b/nsis/mingw32-nsis.spec    Wed Jan 14 18:30:14 2009 +0100
@@ -2,8 +2,8 @@
 %define _default_patch_fuzz 2
 
 Name:           mingw32-nsis
-Version:        2.39
-Release:        5%{?dist}
+Version:        2.42
+Release:        1%{?dist}
 Summary:        Nullsoft Scriptable Install System
 
 License:        zlib and CPL
@@ -13,13 +13,13 @@ BuildRoot:      %{_tmppath}/%{name}-%{ve
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 # Patches from Debian (mainly by Paul Wise).
-Patch0:         nsis-2.39-debian-64bit-fixes.patch
-Patch1:         nsis-2.39-debian-debug-opt.patch
+Patch0:         nsis-2.42-debian-64bit-fixes.patch
+Patch1:         nsis-2.42-debian-debug-opt.patch
 
 # This patch is required for NSIS to find the correct cross-compiler.
 Patch100:       nsis-2.39-mingw32-search.patch
 
-BuildRequires:  mingw32-filesystem >= 20
+BuildRequires:  mingw32-filesystem >= 40
 BuildRequires:  mingw32-gcc
 BuildRequires:  mingw32-gcc-c++
 BuildRequires:  mingw32-binutils
@@ -37,6 +37,8 @@ BuildRequires:  /usr/include/gnu/stubs-3
 # non-x86 architectures.
 BuildRequires:  /usr/lib/libwx_baseu-2.8.so
 
+# since the above two BR
+ExcludeArch:    ppc, ppc64
 
 %description
 NSIS, the Nullsoft Scriptable Install System, is a script-driven
@@ -51,8 +53,8 @@ assembler code.
 %prep
 %setup -q -n nsis-%{version}-src
 
-%patch0 -p1
-%patch1 -p1
+%patch0 -p1 -b .64bit
+%patch1 -p1 -b .debug
 
 %patch100 -p1
 
@@ -84,6 +86,10 @@ rm -rf $RPM_BUILD_ROOT
 
 
 %changelog
+* Wed Jan 14 2009 Levente Farkas <[email protected]> - 2.42-1
+- update to the latest upstream
+- a few small changes
+
 * Fri Oct 17 2008 Richard W.M. Jones <[email protected]> - 2.39-5
 - Fix the Summary line.
 
diff -r bc1c73331bcf nsis/nsis-2.19-debian-64bit-fixes.patch
--- a/nsis/nsis-2.19-debian-64bit-fixes.patch   Tue Jan 13 13:00:19 2009 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,218 +0,0 @@
-01_64bit_fixes.patch
-Andreas Jochens <[email protected]>, Andreas Barth <[email protected]>,
-Steve Langasek <[email protected]>, Paul Wise <[email protected]>
-Fix some issues with building and running makensis on 64-bit platforms
-Index: Source/DialogTemplate.cpp
-===================================================================
---- Source/DialogTemplate.cpp.orig     2007-01-30 09:03:35.000000000 +0100
-+++ Source/DialogTemplate.cpp  2007-01-30 09:03:56.000000000 +0100
-@@ -93,7 +93,7 @@
-     if (IS_INTRESOURCE(x)) { \
-       *(WORD*)seeker = 0xFFFF; \
-       seeker += sizeof(WORD); \
--      *(WORD*)seeker = ConvertEndianness(WORD(DWORD(x))); \
-+      *(WORD*)seeker = ConvertEndianness(WORD(long(x))); \
-       seeker += sizeof(WORD); \
-     } \
-     else { \
-@@ -629,7 +629,7 @@
-     }
-   }
- 
--  assert((DWORD) seeker - (DWORD) pbDlg == dwSize);
-+  assert((long) seeker - (long) pbDlg == dwSize);
- 
-   // DONE!
-   return pbDlg;
-Index: Source/Platform.h
-===================================================================
---- Source/Platform.h.orig     2007-01-30 09:03:35.000000000 +0100
-+++ Source/Platform.h  2007-01-30 09:05:35.000000000 +0100
-@@ -135,7 +135,7 @@
- #    define MAKEINTRESOURCE(i) (LPSTR)((DWORD)((WORD)(i)))
- #  endif
- #  ifndef IMAGE_FIRST_SECTION
--#    define IMAGE_FIRST_SECTION(h) ( PIMAGE_SECTION_HEADER( (DWORD) h + \
-+#    define IMAGE_FIRST_SECTION(h) ( PIMAGE_SECTION_HEADER( (long) h + \
-                                      FIELD_OFFSET(IMAGE_NT_HEADERS, 
OptionalHeader) + \
-                                      
FIX_ENDIAN_INT16(PIMAGE_NT_HEADERS(h)->FileHeader.SizeOfOptionalHeader) ) )
- #  endif
-@@ -147,7 +147,7 @@
- #  endif
- #endif
- #ifndef IS_INTRESOURCE
--#  define IS_INTRESOURCE(_r) (((ULONG_PTR)(_r) >> 16) == 0)
-+#  define IS_INTRESOURCE(_r) (((unsigned long)(_r) >> 16) == 0)
- #endif
- 
- // functions
-@@ -666,7 +666,7 @@
-   WORD e_oemid;
-   WORD e_oeminfo;
-   WORD e_res2[10];
--  LONG e_lfanew;
-+  DWORD e_lfanew;
- } IMAGE_DOS_HEADER,*PIMAGE_DOS_HEADER;
- #  pragma pack()
- #  pragma pack(4)
-Index: Source/ResourceEditor.cpp
-===================================================================
---- Source/ResourceEditor.cpp.orig     2007-01-30 09:03:35.000000000 +0100
-+++ Source/ResourceEditor.cpp  2007-01-30 09:03:56.000000000 +0100
-@@ -545,7 +545,7 @@
-     rdDir.NumberOfIdEntries = ConvertEndianness(rdDir.NumberOfIdEntries);
- 
-     CopyMemory(seeker, &rdDir, sizeof(IMAGE_RESOURCE_DIRECTORY));
--    crd->m_dwWrittenAt = DWORD(seeker);
-+    crd->m_dwWrittenAt = long(seeker);
-     seeker += sizeof(IMAGE_RESOURCE_DIRECTORY);
- 
-     for (int i = 0; i < crd->CountEntries(); i++) {
-@@ -566,7 +566,7 @@
-       rDirE.NameString.NameIsString = (crd->GetEntry(i)->HasName()) ? 1 : 0;
- 
-       CopyMemory(seeker, &rDirE, sizeof(MY_IMAGE_RESOURCE_DIRECTORY_ENTRY));
--      crd->GetEntry(i)->m_dwWrittenAt = DWORD(seeker);
-+      crd->GetEntry(i)->m_dwWrittenAt = long(seeker);
-       seeker += sizeof(MY_IMAGE_RESOURCE_DIRECTORY_ENTRY);
-     }
-     qDirs.pop();
-@@ -582,7 +582,7 @@
-     rDataE.Size = ConvertEndianness(cRDataE->GetSize());
- 
-     CopyMemory(seeker, &rDataE, sizeof(IMAGE_RESOURCE_DATA_ENTRY));
--    cRDataE->m_dwWrittenAt = DWORD(seeker);
-+    cRDataE->m_dwWrittenAt = long(seeker);
-     seeker += sizeof(IMAGE_RESOURCE_DATA_ENTRY);
- 
-     qDataEntries.pop();
-@@ -594,7 +594,7 @@
-   while (!qStrings.empty()) {
-     CResourceDirectoryEntry* cRDirE = qStrings.front();
- 
--    
PMY_IMAGE_RESOURCE_DIRECTORY_ENTRY(cRDirE->m_dwWrittenAt)->NameString.NameOffset
 = ConvertEndianness(DWORD(seeker) - DWORD(pbRsrcSec));
-+    
PMY_IMAGE_RESOURCE_DIRECTORY_ENTRY(cRDirE->m_dwWrittenAt)->NameString.NameOffset
 = ConvertEndianness(long(seeker) - long(pbRsrcSec));
- 
-     char* szName = cRDirE->GetName();
-     WORD iLen = strlen(szName) + 1;
-@@ -636,7 +636,7 @@
-   /*
-    * Set all of the directory entries offsets.
-    */
--  SetOffsets(m_cResDir, DWORD(pbRsrcSec));
-+  SetOffsets(m_cResDir, long(pbRsrcSec));
- }
- 
- // Sets the offsets in directory entries
-@@ -758,7 +758,7 @@
- // Returns -1 if can not be found
- int CResourceDirectory::Find(char* szName) {
-   if (IS_INTRESOURCE(szName))
--    return Find((WORD) (DWORD) szName);
-+    return Find((WORD) (long) szName);
-   else
-     if (szName[0] == '#')
-       return Find(WORD(atoi(szName + 1)));
-@@ -836,7 +836,7 @@
-   if (IS_INTRESOURCE(szName)) {
-     m_bHasName = false;
-     m_szName = 0;
--    m_wId = (WORD) (DWORD) szName;
-+    m_wId = (WORD) (long) szName;
-   }
-   else {
-     m_bHasName = true;
-@@ -851,7 +851,7 @@
-   if (IS_INTRESOURCE(szName)) {
-     m_bHasName = false;
-     m_szName = 0;
--    m_wId = (WORD) (DWORD) szName;
-+    m_wId = (WORD) (long) szName;
-   }
-   else {
-     m_bHasName = true;
-Index: Source/util.cpp
-===================================================================
---- Source/util.cpp.orig       2007-01-30 09:03:35.000000000 +0100
-+++ Source/util.cpp    2007-01-30 09:07:54.000000000 +0100
-@@ -57,9 +57,9 @@
-   }
- 
-   if (width != 0) {
--    LONG biWidth;
-+    DWORD biWidth;
-     fseek(f, 18, SEEK_SET); // Seek to the width member of the header
--    fread(&biWidth, sizeof(LONG), 1, f);
-+    fread(&biWidth, sizeof(DWORD), 1, f);
-     FIX_ENDIAN_INT32_INPLACE(biWidth);
-     if (width != biWidth) {
-       fclose(f);
-@@ -68,12 +68,12 @@
-   }
- 
-   if (height != 0) {
--    LONG biHeight;
-+    DWORD biHeight;
-     fseek(f, 22, SEEK_SET); // Seek to the height member of the header
--    fread(&biHeight, sizeof(LONG), 1, f);
-+    fread(&biHeight, sizeof(DWORD), 1, f);
-     FIX_ENDIAN_INT32_INPLACE(biHeight);
-     // Bitmap height can be negative too...
--    if (height != abs(biHeight)) {
-+    if (height != abs((long int)biHeight)) {
-       fclose(f);
-       return -3;
-     }
-@@ -312,7 +312,7 @@
-   FIX_ENDIAN_INT32_INPLACE(rdEntry.OffsetToData);
-   MY_ASSERT(!rdEntry.DirectoryOffset.DataIsDirectory, "bad resource 
directory");
- 
--  PRESOURCE_DIRECTORY rdIcons = 
PRESOURCE_DIRECTORY(rdEntry.DirectoryOffset.OffsetToDirectory + DWORD(rdRoot));
-+  PRESOURCE_DIRECTORY rdIcons = 
PRESOURCE_DIRECTORY(rdEntry.DirectoryOffset.OffsetToDirectory + long(rdRoot));
- 
-   MY_ASSERT((size_t)rdIcons - (size_t)exeHeader > exeHeaderSize, "corrupted 
EXE - invalid pointer");
- 
-@@ -325,7 +325,7 @@
-     FIX_ENDIAN_INT32_INPLACE(icoEntry.OffsetToData);
- 
-     MY_ASSERT(!icoEntry.DirectoryOffset.DataIsDirectory, "bad resource 
directory");
--    PRESOURCE_DIRECTORY rd = 
PRESOURCE_DIRECTORY(icoEntry.DirectoryOffset.OffsetToDirectory + DWORD(rdRoot));
-+    PRESOURCE_DIRECTORY rd = 
PRESOURCE_DIRECTORY(icoEntry.DirectoryOffset.OffsetToDirectory + long(rdRoot));
-     
-     MY_ASSERT((size_t)rd - (size_t)exeHeader > exeHeaderSize, "corrupted EXE 
- invalid pointer");
- 
-@@ -334,7 +334,7 @@
- 
-     MY_ASSERT(datEntry.DirectoryOffset.DataIsDirectory, "bad resource 
directory");
-     
--    PIMAGE_RESOURCE_DATA_ENTRY rde = 
PIMAGE_RESOURCE_DATA_ENTRY(datEntry.OffsetToData + DWORD(rdRoot));
-+    PIMAGE_RESOURCE_DATA_ENTRY rde = 
PIMAGE_RESOURCE_DATA_ENTRY(datEntry.OffsetToData + long(rdRoot));
- 
-     MY_ASSERT((size_t)rde - (size_t)exeHeader > exeHeaderSize, "corrupted EXE 
- invalid pointer");
- 
-@@ -355,10 +355,10 @@
-     }
- 
-     // Set offset
--    DWORD dwOffset = FIX_ENDIAN_INT32(rde->OffsetToData) + DWORD(rdRoot) - 
dwResourceSectionVA - DWORD(exeHeader);
-+    DWORD dwOffset = FIX_ENDIAN_INT32(rde->OffsetToData) + long(rdRoot) - 
dwResourceSectionVA - long(exeHeader);
-     *(LPDWORD) seeker = FIX_ENDIAN_INT32(dwOffset);
- 
--    MY_ASSERT(dwOffset > exeHeaderSize || dwOffset < (DWORD)rdRoot - 
(DWORD)exeHeader, "invalid data offset - icon resource probably compressed");
-+    MY_ASSERT(dwOffset > exeHeaderSize || dwOffset < (long)rdRoot - 
(long)exeHeader, "invalid data offset - icon resource probably compressed");
-   }
- 
-   LPBYTE seeker = uninstIconData;
-Index: Source/Plugins.cpp
-===================================================================
---- Source/Plugins.cpp.orig    2007-01-30 09:05:50.000000000 +0100
-+++ Source/Plugins.cpp 2007-01-30 09:07:05.000000000 +0100
-@@ -120,7 +120,7 @@
-         DWORD prd = FIX_ENDIAN_INT32(sections[i].PointerToRawData);
-         PIMAGE_EXPORT_DIRECTORY exports = PIMAGE_EXPORT_DIRECTORY(&dlldata[0] 
+ prd + ExportDirVA - va);
-         DWORD na = FIX_ENDIAN_INT32(exports->AddressOfNames);
--        unsigned long *names = (unsigned long*)((unsigned long) exports + 
(char *) na - ExportDirVA);
-+        unsigned int *names = (unsigned int*)((unsigned long) exports + (char 
*) na - ExportDirVA);
-         for (unsigned long j = 0; j < 
FIX_ENDIAN_INT32(exports->NumberOfNames); j++)
-         {
-           const string name = string((char*)exports + 
FIX_ENDIAN_INT32(names[j]) - ExportDirVA);
diff -r bc1c73331bcf nsis/nsis-2.19-debian-debug-opt.patch
--- a/nsis/nsis-2.19-debian-debug-opt.patch     Tue Jan 13 13:00:19 2009 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-02_debug_symbols.patch
-Paul Wise <[email protected]>
-Add an option to generate debugging symbols
-without side-effects on optimisation flags
-and an option to enable/disable optimisation
-Index: SCons/Config/gnu
-===================================================================
---- SCons/Config/gnu.orig      2007-02-02 20:34:33.000000000 +1100
-+++ SCons/Config/gnu   2007-02-08 15:33:51.000000000 +1100
-@@ -81,13 +81,16 @@
- 
- makensis_env = defenv.Copy()
- 
--if not defenv['DEBUG']:
--      makensis_env.Append(CCFLAGS = '-O2')            # optimize
-+if defenv['DEBUG_SYMBOLS']:
-+      makensis_env.Append(CCFLAGS = '-g')            # debugging
-+      makensis_env.Append(LINKFLAGS = '-g')            # debugging
-+if not defenv['DEBUG'] and defenv['OPT']:
-+              makensis_env.Append(CCFLAGS = '-O2')            # optimize
- makensis_env.Append(CCFLAGS = '-Wall')            # all warnings
- 
- conf = FlagsConfigure(makensis_env)
- conf.CheckLinkFlag('$MAP_FLAG')                   # generate map file
--if not defenv['DEBUG']:
-+if not defenv['DEBUG'] and not defenv['DEBUG_SYMBOLS']:
-       TestStrip(conf)                                 # strip
- conf.Finish()
- 
-@@ -110,13 +113,16 @@
- 
- cp_util_env = defenv.Copy()
- 
--if not defenv['DEBUG']:
-+if defenv['DEBUG_SYMBOLS']:
-+      cp_util_env.Append(CCFLAGS = '-g')            # debugging
-+      cp_util_env.Append(LINKFLAGS = '-g')            # debugging
-+if not defenv['DEBUG'] and defenv['OPT']:
-       cp_util_env.Append(CCFLAGS = '-O2')             # optimize
- cp_util_env.Append(CCFLAGS = '-Wall')             # all warnings
- 
- conf = FlagsConfigure(cp_util_env)
- conf.CheckLinkFlag('$MAP_FLAG')                   # generate map file
--if not defenv['DEBUG']:
-+if not defenv['DEBUG'] and not defenv['DEBUG_SYMBOLS']:
-       TestStrip(conf)                                 # strip
- conf.Finish()
- 
-@@ -131,6 +137,9 @@
- ### test environment
- 
- test_env = defenv.Copy()
-+if defenv['DEBUG_SYMBOLS']:
-+      test_env.Append(LINKFLAGS = '-g')            # debugging
-+      test_env.Append(CCFLAGS = '-g')            # debugging
- 
- ### weird GCC requirements
- 
-Index: SConstruct
-===================================================================
---- SConstruct.orig    2007-02-02 20:34:33.000000000 +1100
-+++ SConstruct 2007-02-08 15:48:40.000000000 +1100
-@@ -127,6 +127,8 @@
- opts.Add(PathOption('LIBPATH', 'Path to search for libraries', None))
- # build options
- opts.Add(BoolOption('DEBUG', 'Build executables with debugging information', 
'no'))
-+opts.Add(BoolOption('DEBUG_SYMBOLS', 'Build with debugging information, but 
none of the side effects of DEBUG', 'no'))
-+opts.Add(BoolOption('OPT', 'Build with optimization', 'yes'))
- opts.Add(PathOption('CODESIGNER', 'A program used to sign executables', None))
- # path related build options
- opts.Add(('PREFIX_DEST', 'Intermediate installation prefix (extra install 
time prefix)', dirs['dest']))
diff -r bc1c73331bcf nsis/nsis-2.19-mingw-search.patch
--- a/nsis/nsis-2.19-mingw-search.patch Tue Jan 13 13:00:19 2009 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
---- nsis-2.19-src/SCons/Tools/crossmingw.py.orig       2006-02-24 
16:19:55.000000000 +0000
-+++ nsis-2.19-src/SCons/Tools/crossmingw.py    2008-09-22 12:03:34.000000000 
+0100
-@@ -44,6 +44,7 @@
- 
- # This is what we search for to find mingw:
- prefixes = SCons.Util.Split("""
-+    i686-pc-mingw32-
-     mingw32-
-     mingw32msvc-
-     i386-mingw32-
diff -r bc1c73331bcf nsis/nsis-2.39-debian-64bit-fixes.patch
--- a/nsis/nsis-2.39-debian-64bit-fixes.patch   Tue Jan 13 13:00:19 2009 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,193 +0,0 @@
-diff -ur nsis-2.34-src/SCons/Config/gnu 
nsis-2.34-src-64bit-fixes/SCons/Config/gnu
---- nsis-2.34-src/SCons/Config/gnu     2007-11-14 07:20:44.000000000 +0100
-+++ nsis-2.34-src-64bit-fixes/SCons/Config/gnu 2008-01-13 22:15:21.000000000 
+0100
-@@ -85,8 +85,6 @@
- makensis_env.Append(CXXFLAGS = '-Wno-non-virtual-dtor') # ignore virtual dtor 
warnings
- 
- conf = FlagsConfigure(makensis_env)
--conf.CheckCompileFlag('-m32')                     #
--conf.CheckLinkFlag('-m32')                        #
- conf.CheckLinkFlag('$MAP_FLAG')                   # generate map file
- if not defenv['DEBUG'] and defenv['STRIP'] and defenv['STRIP_CP']:
-       TestStrip(conf)                                 # strip
-diff -ur nsis-2.34-src/Source/DialogTemplate.cpp 
nsis-2.34-src-64bit-fixes/Source/DialogTemplate.cpp
---- nsis-2.34-src/Source/DialogTemplate.cpp    2007-11-30 10:54:13.000000000 
+0100
-+++ nsis-2.34-src-64bit-fixes/Source/DialogTemplate.cpp        2008-01-13 
19:01:02.000000000 +0100
-@@ -74,7 +74,7 @@
-     if (IS_INTRESOURCE(x)) { \
-       *(WORD*)seeker = 0xFFFF; \
-       seeker += sizeof(WORD); \
--      *(WORD*)seeker = ConvertEndianness(WORD(DWORD(x))); \
-+      *(WORD*)seeker = ConvertEndianness(WORD(long(x))); \
-       seeker += sizeof(WORD); \
-     } \
-     else { \
-@@ -622,7 +622,7 @@
-     }
-   }
- 
--  assert((DWORD) seeker - (DWORD) pbDlg == dwSize);
-+  assert((long) seeker - (long) pbDlg == dwSize);
- 
-   // DONE!
-   return pbDlg;
-diff -ur nsis-2.34-src/Source/mmap.cpp 
nsis-2.34-src-64bit-fixes/Source/mmap.cpp
---- nsis-2.34-src/Source/mmap.cpp      2007-12-22 10:41:57.000000000 +0100
-+++ nsis-2.34-src-64bit-fixes/Source/mmap.cpp  2008-01-13 19:01:59.000000000 
+0100
-@@ -324,7 +324,7 @@
-   if (!pView)
-     return;
- 
--  unsigned int alignment = ((unsigned int)pView) % m_iAllocationGranularity;
-+  unsigned int alignment = ((unsigned long)pView) % m_iAllocationGranularity;
-   pView = (char *)pView - alignment;
-   size += alignment;
- #ifdef _WIN32
-diff -ur nsis-2.34-src/Source/Platform.h 
nsis-2.34-src-64bit-fixes/Source/Platform.h
---- nsis-2.34-src/Source/Platform.h    2007-12-22 10:41:57.000000000 +0100
-+++ nsis-2.34-src-64bit-fixes/Source/Platform.h        2008-01-13 
19:36:04.000000000 +0100
-@@ -185,7 +185,7 @@
- #    define MAKEINTRESOURCE MAKEINTRESOURCEA
- #  endif
- #  ifndef IMAGE_FIRST_SECTION
--#    define IMAGE_FIRST_SECTION(h) ( PIMAGE_SECTION_HEADER( (DWORD) h + \
-+#    define IMAGE_FIRST_SECTION(h) ( PIMAGE_SECTION_HEADER( (long) h + \
-                                      FIELD_OFFSET(IMAGE_NT_HEADERS, 
OptionalHeader) + \
-                                      
FIX_ENDIAN_INT16(PIMAGE_NT_HEADERS(h)->FileHeader.SizeOfOptionalHeader) ) )
- #  endif
-@@ -217,7 +217,7 @@
- #endif
- 
- #ifndef ULONG_PTR
--#  define ULONG_PTR DWORD
-+#  define ULONG_PTR ULONG
- #endif
- 
- #ifndef IDC_HAND
-@@ -722,7 +722,7 @@
-   WORD e_oemid;
-   WORD e_oeminfo;
-   WORD e_res2[10];
--  LONG e_lfanew;
-+  DWORD e_lfanew;
- } IMAGE_DOS_HEADER,*PIMAGE_DOS_HEADER;
- #  pragma pack()
- #  pragma pack(4)
-diff -ur nsis-2.34-src/Source/Plugins.cpp 
nsis-2.34-src-64bit-fixes/Source/Plugins.cpp
---- nsis-2.34-src/Source/Plugins.cpp   2007-12-22 10:41:57.000000000 +0100
-+++ nsis-2.34-src-64bit-fixes/Source/Plugins.cpp       2008-01-13 
19:01:59.000000000 +0100
-@@ -136,7 +136,7 @@
-         DWORD prd = FIX_ENDIAN_INT32(sections[i].PointerToRawData);
-         PIMAGE_EXPORT_DIRECTORY exports = PIMAGE_EXPORT_DIRECTORY(&dlldata[0] 
+ prd + ExportDirVA - va);
-         DWORD na = FIX_ENDIAN_INT32(exports->AddressOfNames);
--        unsigned long *names = (unsigned long*)((unsigned long) exports + 
(char *) na - ExportDirVA);
-+        unsigned int *names = (unsigned int*)((unsigned long) exports + (char 
*) na - ExportDirVA);
-         for (unsigned long j = 0; j < 
FIX_ENDIAN_INT32(exports->NumberOfNames); j++)
-         {
-           const string name = string((char*)exports + 
FIX_ENDIAN_INT32(names[j]) - ExportDirVA);
-diff -ur nsis-2.34-src/Source/ResourceEditor.cpp 
nsis-2.34-src-64bit-fixes/Source/ResourceEditor.cpp
---- nsis-2.34-src/Source/ResourceEditor.cpp    2007-12-22 10:41:57.000000000 
+0100
-+++ nsis-2.34-src-64bit-fixes/Source/ResourceEditor.cpp        2008-01-13 
19:40:29.000000000 +0100
-@@ -665,7 +665,7 @@
-     rdDir.NumberOfIdEntries = ConvertEndianness(rdDir.NumberOfIdEntries);
- 
-     CopyMemory(seeker, &rdDir, sizeof(IMAGE_RESOURCE_DIRECTORY));
--    crd->m_dwWrittenAt = DWORD(seeker);
-+    crd->m_dwWrittenAt = long(seeker);
-     seeker += sizeof(IMAGE_RESOURCE_DIRECTORY);
- 
-     for (int i = 0; i < crd->CountEntries(); i++) {
-@@ -686,7 +686,7 @@
-       rDirE.UName.NameString.NameIsString = (crd->GetEntry(i)->HasName()) ? 1 
: 0;
- 
-       CopyMemory(seeker, &rDirE, sizeof(MY_IMAGE_RESOURCE_DIRECTORY_ENTRY));
--      crd->GetEntry(i)->m_dwWrittenAt = DWORD(seeker);
-+      crd->GetEntry(i)->m_dwWrittenAt = long(seeker);
-       seeker += sizeof(MY_IMAGE_RESOURCE_DIRECTORY_ENTRY);
-     }
-     qDirs.pop();
-@@ -702,7 +702,7 @@
-     rDataE.Size = ConvertEndianness(cRDataE->GetSize());
- 
-     CopyMemory(seeker, &rDataE, sizeof(IMAGE_RESOURCE_DATA_ENTRY));
--    cRDataE->m_dwWrittenAt = DWORD(seeker);
-+    cRDataE->m_dwWrittenAt = long(seeker);
-     seeker += sizeof(IMAGE_RESOURCE_DATA_ENTRY);
- 
-     qDataEntries.pop();
-@@ -714,7 +714,7 @@
-   while (!qStrings.empty()) {
-     CResourceDirectoryEntry* cRDirE = qStrings.front();
- 
--    
PMY_IMAGE_RESOURCE_DIRECTORY_ENTRY(cRDirE->m_dwWrittenAt)->UName.NameString.NameOffset
 = ConvertEndianness(DWORD(seeker) - DWORD(pbRsrcSec));
-+    
PMY_IMAGE_RESOURCE_DIRECTORY_ENTRY(cRDirE->m_dwWrittenAt)->UName.NameString.NameOffset
 = ConvertEndianness(long(seeker) - long(pbRsrcSec));
- 
-     WCHAR* szName = cRDirE->GetName();
-     WORD iLen = winchar_strlen(szName) + 1;
-@@ -745,7 +745,7 @@
-   /*
-    * Set all of the directory entries offsets.
-    */
--  SetOffsets(m_cResDir, DWORD(pbRsrcSec));
-+  SetOffsets(m_cResDir, long(pbRsrcSec));
- }
- 
- // Sets the offsets in directory entries
-@@ -868,7 +868,7 @@
- // Returns -1 if can not be found
- int CResourceDirectory::Find(WCHAR* szName) {
-   if (IS_INTRESOURCE(szName))
--    return Find((WORD) (DWORD) szName);
-+    return Find((WORD) (long) szName);
-   else
-     if (szName[0] == '#')
-       return Find(WORD(winchar_stoi(szName + 1)));
-@@ -946,7 +946,7 @@
-   if (IS_INTRESOURCE(szName)) {
-     m_bHasName = false;
-     m_szName = 0;
--    m_wId = (WORD) (DWORD) szName;
-+    m_wId = (WORD) (long) szName;
-   }
-   else {
-     m_bHasName = true;
-@@ -960,7 +960,7 @@
-   if (IS_INTRESOURCE(szName)) {
-     m_bHasName = false;
-     m_szName = 0;
--    m_wId = (WORD) (DWORD) szName;
-+    m_wId = (WORD) (long) szName;
-   }
-   else {
-     m_bHasName = true;
-diff -ur nsis-2.34-src/Source/util.cpp 
nsis-2.34-src-64bit-fixes/Source/util.cpp
---- nsis-2.34-src/Source/util.cpp      2007-12-22 10:41:57.000000000 +0100
-+++ nsis-2.34-src-64bit-fixes/Source/util.cpp  2008-01-13 19:01:59.000000000 
+0100
-@@ -75,9 +75,9 @@
-   }
- 
-   if (width != 0) {
--    LONG biWidth;
-+    DWORD biWidth;
-     fseek(f, 18, SEEK_SET); // Seek to the width member of the header
--    fread(&biWidth, sizeof(LONG), 1, f);
-+    fread(&biWidth, sizeof(DWORD), 1, f);
-     FIX_ENDIAN_INT32_INPLACE(biWidth);
-     if (width != biWidth) {
-       fclose(f);
-@@ -86,12 +86,12 @@
-   }
- 
-   if (height != 0) {
--    LONG biHeight;
-+    DWORD biHeight;
-     fseek(f, 22, SEEK_SET); // Seek to the height member of the header
--    fread(&biHeight, sizeof(LONG), 1, f);
-+    fread(&biHeight, sizeof(DWORD), 1, f);
-     FIX_ENDIAN_INT32_INPLACE(biHeight);
-     // Bitmap height can be negative too...
--    if (height != abs(biHeight)) {
-+    if (height != abs((long int)biHeight)) {
-       fclose(f);
-       return -3;
-     }
diff -r bc1c73331bcf nsis/nsis-2.39-debian-debug-opt.patch
--- a/nsis/nsis-2.39-debian-debug-opt.patch     Tue Jan 13 13:00:19 2009 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-diff -ur nsis-2.39-src.orig/SCons/Config/gnu 
nsis-2.39-src.debopt/SCons/Config/gnu
---- nsis-2.39-src.orig/SCons/Config/gnu        2008-03-03 16:33:56.000000000 
+0000
-+++ nsis-2.39-src.debopt/SCons/Config/gnu      2008-09-22 12:53:18.000000000 
+0100
-@@ -61,8 +61,11 @@
- stub_env = defenv.Clone()
- cross_env(stub_env)
- 
--if not defenv['DEBUG']:
--      stub_env.Append(CCFLAGS = '-Os')                # optimize for size
-+if not defenv['DEBUG_SYMBOLS']:
-+      stub_env.Append(CCFLAGS = '-g')            # debugging
-+      stub_env.Append(LINKFLAGS = '-g')            # debugging
-+if not defenv['DEBUG'] and defenv['OPT']:
-+      stub_env.Append(CCFLAGS = '-O2')            # optimize
- stub_env.Append(CCFLAGS = '-Wall')                # all warnings
- stub_env.Append(CCFLAGS = '-x c')                 # force compile as c
- stub_env.Append(CCFLAGS = '-fno-strict-aliasing') # not safe for strict 
aliasing
-@@ -88,7 +91,7 @@
- conf.CheckCompileFlag('-m32')                     #
- conf.CheckLinkFlag('-m32')                        #
- conf.CheckLinkFlag('$MAP_FLAG')                   # generate map file
--if not defenv['DEBUG'] and defenv['STRIP'] and defenv['STRIP_CP']:
-+if not defenv['DEBUG'] and not defenv['DEBUG_SYMBOLS'] and defenv['STRIP'] 
and defenv['STRIP_CP']:
-       TestStrip(conf)                                 # strip
- conf.Finish()
- 
-@@ -112,7 +115,10 @@
- 
- cp_util_env = defenv.Clone()
- 
--if not defenv['DEBUG']:
-+if defenv['DEBUG_SYMBOLS']:
-+      cp_util_env.Append(CCFLAGS = '-g')            # debugging
-+      cp_util_env.Append(LINKFLAGS = '-g')            # debugging
-+if not defenv['DEBUG'] and defenv['OPT']:
-       cp_util_env.Append(CCFLAGS = '-O2')             # optimize
- cp_util_env.Append(CCFLAGS = '-Wall')             # all warnings
- cp_util_env.Append(CCFLAGS = '-fno-strict-aliasing') # not safe for strict 
aliasing
-@@ -146,6 +152,10 @@
- ### test environment
- 
- test_env = defenv.Clone()
-+if defenv['DEBUG_SYMBOLS']:
-+      test_env.Append(LINKFLAGS = '-g')            # debugging
-+      test_env.Append(CCFLAGS = '-g')            # debugging
-+
- conf = FlagsConfigure(test_env)
- conf.CheckCompileFlag('-m32')
- conf.CheckLinkFlag('-m32')
-diff -ur nsis-2.39-src.orig/SConstruct nsis-2.39-src.debopt/SConstruct
---- nsis-2.39-src.orig/SConstruct      2008-05-04 09:30:07.000000000 +0100
-+++ nsis-2.39-src.debopt/SConstruct    2008-09-22 12:55:55.000000000 +0100
-@@ -168,6 +168,8 @@
- opts.Add(('APPEND_LINKFLAGS', 'Additional linker flags'))
- # build options
- opts.Add(BoolOption('DEBUG', 'Build executables with debugging information', 
'no'))
-+opts.Add(BoolOption('DEBUG_SYMBOLS', 'Build with debugging information, but 
none of the side effects of DEBUG', 'no'))
-+opts.Add(BoolOption('OPT', 'Build with optimization', 'yes'))
- opts.Add(PathOption('CODESIGNER', 'A program used to sign executables', None))
- opts.Add(BoolOption('STRIP', 'Strips executables of any unrequired data such 
as symbols', 'yes'))
- opts.Add(BoolOption('STRIP_CP', 'Strips cross-platform executables of any 
unrequired data such as symbols', 'yes'))
diff -r bc1c73331bcf nsis/nsis-2.42-debian-64bit-fixes.patch
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/nsis/nsis-2.42-debian-64bit-fixes.patch   Wed Jan 14 17:09:50 2009 +0100
@@ -0,0 +1,186 @@
+--- ./Source/Plugins.cpp.lfarkas       2009-01-14 17:03:11.000000000 +0100
++++ ./Source/Plugins.cpp       2009-01-14 17:03:58.000000000 +0100
+@@ -136,7 +136,7 @@
+         DWORD prd = FIX_ENDIAN_INT32(sections[i].PointerToRawData);
+         PIMAGE_EXPORT_DIRECTORY exports = PIMAGE_EXPORT_DIRECTORY(&dlldata[0] 
+ prd + ExportDirVA - va);
+         DWORD na = FIX_ENDIAN_INT32(exports->AddressOfNames);
+-        unsigned long *names = (unsigned long*)((unsigned long) exports + 
(char *) na - ExportDirVA);
++        unsigned int *names = (unsigned int*)((unsigned long) exports + (char 
*) na - ExportDirVA);
+         for (unsigned long j = 0; j < 
FIX_ENDIAN_INT32(exports->NumberOfNames); j++)
+         {
+           const string name = string((char*)exports + 
FIX_ENDIAN_INT32(names[j]) - ExportDirVA);
+--- ./Source/ResourceEditor.cpp.lfarkas        2009-01-14 17:04:08.000000000 
+0100
++++ ./Source/ResourceEditor.cpp        2009-01-14 17:07:47.000000000 +0100
+@@ -665,7 +665,7 @@
+     rdDir.NumberOfIdEntries = ConvertEndianness(rdDir.NumberOfIdEntries);
+ 
+     CopyMemory(seeker, &rdDir, sizeof(IMAGE_RESOURCE_DIRECTORY));
+-    crd->m_dwWrittenAt = DWORD(seeker);
++    crd->m_dwWrittenAt = long(seeker);
+     seeker += sizeof(IMAGE_RESOURCE_DIRECTORY);
+ 
+     for (int i = 0; i < crd->CountEntries(); i++) {
+@@ -686,7 +686,7 @@
+       rDirE.UName.NameString.NameIsString = (crd->GetEntry(i)->HasName()) ? 1 
: 0;
+ 
+       CopyMemory(seeker, &rDirE, sizeof(MY_IMAGE_RESOURCE_DIRECTORY_ENTRY));
+-      crd->GetEntry(i)->m_dwWrittenAt = DWORD(seeker);
++      crd->GetEntry(i)->m_dwWrittenAt = long(seeker);
+       seeker += sizeof(MY_IMAGE_RESOURCE_DIRECTORY_ENTRY);
+     }
+     qDirs.pop();
+@@ -702,7 +702,7 @@
+     rDataE.Size = ConvertEndianness(cRDataE->GetSize());
+ 
+     CopyMemory(seeker, &rDataE, sizeof(IMAGE_RESOURCE_DATA_ENTRY));
+-    cRDataE->m_dwWrittenAt = DWORD(seeker);
++    cRDataE->m_dwWrittenAt = long(seeker);
+     seeker += sizeof(IMAGE_RESOURCE_DATA_ENTRY);
+ 
+     qDataEntries.pop();
+@@ -714,7 +714,7 @@
+   while (!qStrings.empty()) {
+     CResourceDirectoryEntry* cRDirE = qStrings.front();
+ 
+-    
PMY_IMAGE_RESOURCE_DIRECTORY_ENTRY(cRDirE->m_dwWrittenAt)->UName.NameString.NameOffset
 = ConvertEndianness(DWORD(seeker) - DWORD(pbRsrcSec));
++    
PMY_IMAGE_RESOURCE_DIRECTORY_ENTRY(cRDirE->m_dwWrittenAt)->UName.NameString.NameOffset
 = ConvertEndianness(long(seeker) - long(pbRsrcSec));
+ 
+     WCHAR* szName = cRDirE->GetName();
+     WORD iLen = winchar_strlen(szName) + 1;
+@@ -745,7 +745,7 @@
+   /*
+    * Set all of the directory entries offsets.
+    */
+-  SetOffsets(m_cResDir, DWORD(pbRsrcSec));
++  SetOffsets(m_cResDir, long(pbRsrcSec));
+ }
+ 
+ // Sets the offsets in directory entries
+@@ -868,7 +868,7 @@
+ // Returns -1 if can not be found
+ int CResourceDirectory::Find(WCHAR* szName) {
+   if (IS_INTRESOURCE(szName))
+-    return Find((WORD) (DWORD) szName);
++    return Find((WORD) (long) szName);
+   else
+     if (szName[0] == '#')
+       return Find(WORD(winchar_stoi(szName + 1)));
+@@ -946,7 +946,7 @@
+   if (IS_INTRESOURCE(szName)) {
+     m_bHasName = false;
+     m_szName = 0;
+-    m_wId = (WORD) (DWORD) szName;
++    m_wId = (WORD) (long) szName;
+   }
+   else {
+     m_bHasName = true;
+@@ -960,7 +960,7 @@
+   if (IS_INTRESOURCE(szName)) {
+     m_bHasName = false;
+     m_szName = 0;
+-    m_wId = (WORD) (DWORD) szName;
++    m_wId = (WORD) (long) szName;
+   }
+   else {
+     m_bHasName = true;
+--- ./Source/DialogTemplate.cpp.lfarkas        2009-01-14 16:56:31.000000000 
+0100
++++ ./Source/DialogTemplate.cpp        2009-01-14 17:01:14.000000000 +0100
+@@ -74,7 +74,7 @@
+     if (IS_INTRESOURCE(x)) { \
+       *(WORD*)seeker = 0xFFFF; \
+       seeker += sizeof(WORD); \
+-      *(WORD*)seeker = ConvertEndianness(WORD(DWORD(x))); \
++      *(WORD*)seeker = ConvertEndianness(WORD(long(x))); \
+       seeker += sizeof(WORD); \
+     } \
+     else { \
+@@ -622,7 +622,7 @@
+     }
+   }
+ 
+-  assert((DWORD) seeker - (DWORD) pbDlg == dwSize);
++  assert((long) seeker - (long) pbDlg == dwSize);
+ 
+   // DONE!
+   return pbDlg;
+--- ./Source/mmap.cpp.lfarkas  2009-01-14 17:00:12.000000000 +0100
++++ ./Source/mmap.cpp  2009-01-14 17:01:36.000000000 +0100
+@@ -322,7 +322,7 @@
+   if (!pView)
+     return;
+ 
+-  unsigned int alignment = ((unsigned int)pView) % m_iAllocationGranularity;
++  unsigned int alignment = ((unsigned long)pView) % m_iAllocationGranularity;
+   pView = (char *)pView - alignment;
+   size += alignment;
+ #ifdef _WIN32
+--- ./Source/util.cpp.lfarkas  2009-01-14 17:07:59.000000000 +0100
++++ ./Source/util.cpp  2009-01-14 17:09:25.000000000 +0100
+@@ -75,9 +75,9 @@
+   }
+ 
+   if (width != 0) {
+-    LONG biWidth;
++    DWORD biWidth;
+     fseek(f, 18, SEEK_SET); // Seek to the width member of the header
+-    fread(&biWidth, sizeof(LONG), 1, f);
++    fread(&biWidth, sizeof(DWORD), 1, f);
+     FIX_ENDIAN_INT32_INPLACE(biWidth);
+     if (width != biWidth) {
+       fclose(f);
+@@ -86,12 +86,12 @@
+   }
+ 
+   if (height != 0) {
+-    LONG biHeight;
++    DWORD biHeight;
+     fseek(f, 22, SEEK_SET); // Seek to the height member of the header
+-    fread(&biHeight, sizeof(LONG), 1, f);
++    fread(&biHeight, sizeof(DWORD), 1, f);
+     FIX_ENDIAN_INT32_INPLACE(biHeight);
+     // Bitmap height can be negative too...
+-    if (height != abs(biHeight)) {
++    if (height != abs((long int)biHeight)) {
+       fclose(f);
+       return -3;
+     }
+--- ./Source/Platform.h.lfarkas        2009-01-14 17:01:43.000000000 +0100
++++ ./Source/Platform.h        2009-01-14 17:03:03.000000000 +0100
+@@ -165,7 +165,7 @@
+ #    define MAKEINTRESOURCE MAKEINTRESOURCEA
+ #  endif
+ #  ifndef IMAGE_FIRST_SECTION
+-#    define IMAGE_FIRST_SECTION(h) ( PIMAGE_SECTION_HEADER( (DWORD) h + \
++#    define IMAGE_FIRST_SECTION(h) ( PIMAGE_SECTION_HEADER( (long) h + \
+                                      FIELD_OFFSET(IMAGE_NT_HEADERS, 
OptionalHeader) + \
+                                      
FIX_ENDIAN_INT16(PIMAGE_NT_HEADERS(h)->FileHeader.SizeOfOptionalHeader) ) )
+ #  endif
+@@ -197,7 +197,7 @@
+ #endif
+ 
+ #ifndef ULONG_PTR
+-#  define ULONG_PTR DWORD
++#  define ULONG_PTR ULONG
+ #endif
+ 
+ #ifndef IDC_HAND
+@@ -702,7 +702,7 @@
+   WORD e_oemid;
+   WORD e_oeminfo;
+   WORD e_res2[10];
+-  LONG e_lfanew;
++  DWORD e_lfanew;
+ } IMAGE_DOS_HEADER,*PIMAGE_DOS_HEADER;
+ #  pragma pack()
+ #  pragma pack(4)
+--- ./SCons/Config/gnu.lfarkas 2009-01-14 16:55:33.000000000 +0100
++++ ./SCons/Config/gnu 2009-01-14 16:56:21.000000000 +0100
+@@ -90,8 +90,6 @@
+ makensis_env.Append(CXXFLAGS = ['-Wno-non-virtual-dtor']) # ignore virtual 
dtor warnings
+ 
+ conf = FlagsConfigure(makensis_env)
+-conf.CheckCompileFlag('-m32')                     #
+-conf.CheckLinkFlag('-m32')                        #
+ conf.CheckLinkFlag('$MAP_FLAG')                   # generate map file
+ if not defenv['DEBUG'] and defenv['STRIP'] and defenv['STRIP_CP']:
+       TestStrip(conf)                                 # strip
diff -r bc1c73331bcf nsis/nsis-2.42-debian-debug-opt.patch
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/nsis/nsis-2.42-debian-debug-opt.patch     Wed Jan 14 17:33:51 2009 +0100
@@ -0,0 +1,92 @@
+--- ./SConstruct.debug 2008-12-12 17:33:25.000000000 +0100
++++ ./SConstruct       2009-01-14 17:29:41.000000000 +0100
+@@ -157,6 +157,8 @@
+ opts.Add(('APPEND_LINKFLAGS', 'Additional linker flags'))
+ # build options
+ opts.Add(BoolOption('DEBUG', 'Build executables with debugging information', 
'no'))
++opts.Add(BoolOption('DEBUG_SYMBOLS', 'Build with debugging information, but 
none of the side effects of DEBUG', 'no'))
++opts.Add(BoolOption('OPT', 'Build with optimization', 'yes'))
+ opts.Add(PathOption('CODESIGNER', 'A program used to sign executables', None))
+ opts.Add(BoolOption('STRIP', 'Strips executables of any unrequired data such 
as symbols', 'yes'))
+ opts.Add(BoolOption('STRIP_CP', 'Strips cross-platform executables of any 
unrequired data such as symbols', 'yes'))
+--- ./SCons/Config/gnu.debug   2009-01-14 17:24:59.000000000 +0100
++++ ./SCons/Config/gnu 2009-01-14 17:29:02.000000000 +0100
+@@ -66,8 +66,11 @@
+ stub_env = defenv.Clone()
+ cross_env(stub_env)
+ 
+-if not defenv['DEBUG']:
+-      stub_env.Append(CCFLAGS = ['-Os'])                # optimize for size
++if defenv['DEBUG_SYMBOLS']:
++      stub_env.Append(LINKFLAGS = '-g')           # debugging
++      stub_env.Append(CCFLAGS = '-g')             # debugging
++if not defenv['DEBUG'] and defenv['OPT']:
++      stub_env.Append(CCFLAGS = ['-O2'])          # optimize
+ stub_env.Append(CCFLAGS = ['-Wall'])                # all warnings
+ stub_env.Append(CCFLAGS = ['-xc'])                  # force compile as c
+ stub_env.Append(CCFLAGS = ['-fno-strict-aliasing']) # not safe for strict 
aliasing
+@@ -83,15 +86,18 @@
+ ### makensis environment
+ 
+ makensis_env = defenv.Clone()
+-
+-if not defenv['DEBUG']:
+-      makensis_env.Append(CCFLAGS = ['-O2'])            # optimize
++  
++if defenv['DEBUG_SYMBOLS']:
++      makensis_env.Append(LINKFLAGS = '-g')       # debugging
++      makensis_env.Append(CCFLAGS = '-g')         # debugging
++if not defenv['DEBUG'] and defenv['OPT']:
++      makensis_env.Append(CCFLAGS = ['-O2'])      # optimize
+ makensis_env.Append(CCFLAGS = ['-Wall'])            # all warnings
+ makensis_env.Append(CXXFLAGS = ['-Wno-non-virtual-dtor']) # ignore virtual 
dtor warnings
+ 
+ conf = FlagsConfigure(makensis_env)
+ conf.CheckLinkFlag('$MAP_FLAG')                   # generate map file
+-if not defenv['DEBUG'] and defenv['STRIP'] and defenv['STRIP_CP']:
++if not defenv['DEBUG'] and not defenv['DEBUG_SYMBOLS'] and defenv['STRIP'] 
and defenv['STRIP_CP']:
+       TestStrip(conf)                                 # strip
+ conf.Finish()
+ 
+@@ -100,13 +106,16 @@
+ plugin_env = defenv.Clone()
+ cross_env(plugin_env)
+ 
+-if not defenv['DEBUG']:
+-      plugin_env.Append(CCFLAGS = ['-Os'])              # optimize for size
++if defenv['DEBUG_SYMBOLS']:
++      plugin_env.Append(LINKFLAGS = '-g')           # debugging
++      plugin_env.Append(CCFLAGS = '-g')             # debugging
++if not defenv['DEBUG'] and defenv['OPT']:
++      plugin_env.Append(CCFLAGS = ['-O2'])        # optimize
+ plugin_env.Append(CCFLAGS = ['-Wall'])              # level 3 warnings
+ plugin_env.Append(CCFLAGS = ['-fno-strict-aliasing']) # not safe for strict 
aliasing
+ 
+ if not defenv['DEBUG'] and defenv['STRIP'] and defenv['STRIP_W32']:
+-      plugin_env.Append(LINKFLAGS = ['-s'])             # strip
++      plugin_env.Append(LINKFLAGS = ['-s'])       # strip
+ plugin_env.Append(LINKFLAGS = ['-mwindows'])        # build windows 
executables
+ plugin_env.Append(LINKFLAGS = ['$ALIGN_FLAG'])      # 512 bytes align
+ plugin_env.Append(LINKFLAGS = ['$MAP_FLAG'])        # generate map file
+@@ -115,7 +124,10 @@
+ 
+ cp_util_env = defenv.Clone()
+ 
+-if not defenv['DEBUG']:
++if defenv['DEBUG_SYMBOLS']:
++      cp_util_env.Append(LINKFLAGS = '-g')        # debugging
++      cp_util_env.Append(CCFLAGS = '-g')          # debugging
++if not defenv['DEBUG'] and defenv['OPT']:
+       cp_util_env.Append(CCFLAGS = ['-O2'])             # optimize
+ cp_util_env.Append(CCFLAGS = ['-Wall'])             # all warnings
+ cp_util_env.Append(CCFLAGS = ['-fno-strict-aliasing']) # not safe for strict 
aliasing
+@@ -149,6 +161,9 @@
+ ### test environment
+ 
+ test_env = defenv.Clone()
++if defenv['DEBUG_SYMBOLS']:
++      test_env.Append(LINKFLAGS = '-g')           # debugging
++      test_env.Append(CCFLAGS = '-g')             # debugging
+ conf = FlagsConfigure(test_env)
+ conf.CheckCompileFlag('-m32')
+ conf.CheckLinkFlag('-m32')
_______________________________________________
fedora-mingw mailing list
[email protected]
https://admin.fedoraproject.org/mailman/listinfo/fedora-mingw

Reply via email to