fixed compatibility with gcc 3.3 and improved makefiles
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@3570 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
bbd00dc276
commit
9b061b5fc9
3 changed files with 107 additions and 99 deletions
|
@ -23,18 +23,21 @@ CXXFLAGS = -Wall -O3
|
||||||
CPPFLAGS = $(DEFINES)
|
CPPFLAGS = $(DEFINES)
|
||||||
LDFLAGS = -s -Wl,-Map,$(subst .exe,.map,$@)
|
LDFLAGS = -s -Wl,-Map,$(subst .exe,.map,$@)
|
||||||
|
|
||||||
all : makensis
|
all : exehead makensis
|
||||||
|
|
||||||
|
exehead :
|
||||||
|
$(MAKE) -C exehead
|
||||||
|
|
||||||
cs = zlib bzip2 lzma
|
cs = zlib bzip2 lzma
|
||||||
rs = bitmap1.h icon.h unicon.h
|
rs = bitmap1.h icon.h unicon.h
|
||||||
deps = $(foreach c,$(cs),exehead/Release-$(c)/exehead_$(c).h) $(foreach r,$(rs),exehead/Release-zlib/$(r))
|
deps = $(foreach c,$(cs),exehead/Release-$(c)/exehead_$(c).h) $(foreach r,$(rs),exehead/Release-zlib/$(r))
|
||||||
exehead : $(deps)
|
$(deps) : exehead
|
||||||
$(deps) :
|
|
||||||
$(MAKE) -C exehead $(foreach d,$^,$(subst exehead/,,$(d)))
|
|
||||||
|
|
||||||
makensis : ../makensis.exe
|
makensis : ../makensis.exe
|
||||||
|
|
||||||
../makensis.exe : $(SRCS) $(OBJS) $(deps)
|
exedata.o : $(deps)
|
||||||
|
|
||||||
|
../makensis.exe : $(SRCS) $(OBJS)
|
||||||
$(CC) -Wall $(LDFLAGS) -o ../makensis.exe $(OBJS) $(LIBS)
|
$(CC) -Wall $(LDFLAGS) -o ../makensis.exe $(OBJS) $(LIBS)
|
||||||
|
|
||||||
VPATH=zlib:bzip2:7zip:7zip/Common:7zip/7zip:7zip/7zip/Compress/LZ:7zip/7zip/Compress/LZMA:7zip/7zip/Common:7zip/7zip/Compress/RangeCoder
|
VPATH=zlib:bzip2:7zip:7zip/Common:7zip/7zip:7zip/7zip/Compress/LZ:7zip/7zip/Compress/LZMA:7zip/7zip/Common:7zip/7zip/Compress/RangeCoder
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
# -- Objects and source files --
|
# -- Objects and source files --
|
||||||
DEPENDS = ../Platform.h config.h
|
DEPENDS = ../Platform.h config.h
|
||||||
|
|
||||||
ZLIB_SRCS = bgbg.c exec.c fileform.c main.c ui.c util.c ../crc32.c resource.rc ../zlib/infblock.c
|
ZLIB_SRCS = bgbg.c exec.c fileform.c Main.c Ui.c util.c ../crc32.c resource.rc ../zlib/INFBLOCK.C
|
||||||
ZLIB_OBJS = Release-zlib/bgbg.o Release-zlib/exec.o Release-zlib/fileform.o Release-zlib/main.o Release-zlib/ui.o Release-zlib/util.o Release-zlib/crc32.o Release-zlib/resource.res Release-zlib/infblock.o
|
ZLIB_OBJS = Release-zlib/bgbg.o Release-zlib/exec.o Release-zlib/fileform.o Release-zlib/Main.o Release-zlib/Ui.o Release-zlib/util.o Release-zlib/crc32.o Release-zlib/resource.res Release-zlib/INFBLOCK.o
|
||||||
|
|
||||||
BZIP2_SRCS = bgbg.c exec.c fileform.c main.c ui.c util.c ../crc32.c resource.rc ../bzip2/bzlib.c ../bzip2/decompress.c ../bzip2/huffman.c
|
BZIP2_SRCS = bgbg.c exec.c fileform.c Main.c Ui.c util.c ../crc32.c resource.rc ../bzip2/bzlib.c ../bzip2/decompress.c ../bzip2/huffman.c
|
||||||
BZIP2_OBJS = Release-bzip2/bgbg.o Release-bzip2/exec.o Release-bzip2/fileform.o Release-bzip2/main.o Release-bzip2/ui.o Release-bzip2/util.o Release-bzip2/crc32.o Release-bzip2/resource.res Release-bzip2/bzlib.o Release-bzip2/decompress.o Release-bzip2/huffman.o
|
BZIP2_OBJS = Release-bzip2/bgbg.o Release-bzip2/exec.o Release-bzip2/fileform.o Release-bzip2/Main.o Release-bzip2/Ui.o Release-bzip2/util.o Release-bzip2/crc32.o Release-bzip2/resource.res Release-bzip2/bzlib.o Release-bzip2/decompress.o Release-bzip2/huffman.o
|
||||||
|
|
||||||
LZMA_SRCS = bgbg.c exec.c fileform.c main.c ui.c util.c ../crc32.c resource.rc ../7zip/LZMADecode.c
|
LZMA_SRCS = bgbg.c exec.c fileform.c Main.c Ui.c util.c ../crc32.c resource.rc ../7zip/LZMADecode.c
|
||||||
LZMA_OBJS = Release-lzma/bgbg.o Release-lzma/exec.o Release-lzma/fileform.o Release-lzma/main.o Release-lzma/ui.o Release-lzma/util.o Release-lzma/crc32.o Release-lzma/resource.res Release-lzma/LZMADecode.o
|
LZMA_OBJS = Release-lzma/bgbg.o Release-lzma/exec.o Release-lzma/fileform.o Release-lzma/Main.o Release-lzma/Ui.o Release-lzma/util.o Release-lzma/crc32.o Release-lzma/resource.res Release-lzma/LZMADecode.o
|
||||||
|
|
||||||
SRCS = $(ZLIB_SRCS) $(BZIP2_SRCS) $(LZMA_SRCS)
|
SRCS = $(ZLIB_SRCS) $(BZIP2_SRCS) $(LZMA_SRCS)
|
||||||
|
|
||||||
|
@ -28,8 +28,9 @@ LDFLAGS = -s -mwindows -nostdlib -nostartfiles --enable-stdcall-fixup -Wl,-Bdyna
|
||||||
RCFLAGS = --input-format rc --output-format coff
|
RCFLAGS = --input-format rc --output-format coff
|
||||||
|
|
||||||
vpath %.c .:..:../zlib:../bzip2:../7zip
|
vpath %.c .:..:../zlib:../bzip2:../7zip
|
||||||
|
vpath %.C ../zlib
|
||||||
|
|
||||||
%c : config.h fileform.h
|
%.c : config.h fileform.h
|
||||||
|
|
||||||
all : exehead_zlib exehead_bzip2 exehead_lzma exehead_resources
|
all : exehead_zlib exehead_bzip2 exehead_lzma exehead_resources
|
||||||
|
|
||||||
|
@ -57,6 +58,9 @@ Release-zlib/exehead_zlib.h : Release-zlib/exehead_zlib.exe
|
||||||
Release-zlib/%.o : %.c
|
Release-zlib/%.o : %.c
|
||||||
$(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@
|
$(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@
|
||||||
|
|
||||||
|
Release-zlib/%.o : %.C
|
||||||
|
$(CC) -x c -c $(CPPFLAGS) $(CFLAGS) $< -o $@
|
||||||
|
|
||||||
Release-zlib/resource.res : resource.rc resource.h config.h
|
Release-zlib/resource.res : resource.rc resource.h config.h
|
||||||
$(RC) $(RCFLAGS) -o $@ -i $<
|
$(RC) $(RCFLAGS) -o $@ -i $<
|
||||||
|
|
||||||
|
@ -116,7 +120,7 @@ Release-bzip2/ = -DNSIS_COMPRESS_USE_BZIP2
|
||||||
Release-lzma/ = -DNSIS_COMPRESS_USE_LZMA
|
Release-lzma/ = -DNSIS_COMPRESS_USE_LZMA
|
||||||
getdefine = $($(dir $@))
|
getdefine = $($(dir $@))
|
||||||
|
|
||||||
CFLAGS =: $(CFLAGS) $(getdefine)
|
CFLAGS += $(getdefine)
|
||||||
|
|
||||||
clean ::
|
clean ::
|
||||||
$(RM) -f sections_script
|
$(RM) -f sections_script
|
||||||
|
|
|
@ -489,96 +489,97 @@ char * NSISCALL GetNSISString(char *outbuf, int strtab)
|
||||||
fldrs[2] = in[1]; // all users
|
fldrs[2] = in[1]; // all users
|
||||||
fldrs[3] = in[1] | CSIDL_FLAG_CREATE;
|
fldrs[3] = in[1] | CSIDL_FLAG_CREATE;
|
||||||
in += 2;
|
in += 2;
|
||||||
|
|
||||||
|
if (nVarIdx == NS_SHELL_CODE)
|
||||||
|
{
|
||||||
|
// NOTE 1: the code CSIDL_PRINTERS, is used for QUICKLAUNCH
|
||||||
|
// NOTE 2: the code CSIDL_BITBUCKET is used for COMMONFILES
|
||||||
|
// NOTE 3: the code CSIDL_CONTROLS is used for PROGRAMFILES
|
||||||
|
LPITEMIDLIST idl;
|
||||||
|
char *append = 0;
|
||||||
|
|
||||||
|
int x = 0;
|
||||||
|
|
||||||
|
*out = 0;
|
||||||
|
|
||||||
|
if (fldrs[2] == CSIDL_PRINTERS) // QUICKLAUNCH
|
||||||
|
{
|
||||||
|
append = "\\Microsoft\\Internet Explorer\\Quick Launch";
|
||||||
|
x = 2;
|
||||||
|
}
|
||||||
|
if (fldrs[0] == CSIDL_PROGRAM_FILES_COMMON)
|
||||||
|
{
|
||||||
|
myRegGetStr(HKEY_LOCAL_MACHINE, SYSREGKEY, "CommonFilesDir", out);
|
||||||
|
}
|
||||||
|
if (fldrs[0] == CSIDL_PROGRAM_FILES)
|
||||||
|
{
|
||||||
|
myRegGetStr(HKEY_LOCAL_MACHINE, SYSREGKEY, "ProgramFilesDir", out);
|
||||||
|
if (!*out)
|
||||||
|
mystrcpy(out, "C:\\Program Files");
|
||||||
|
}
|
||||||
|
if (fldrs[0] == CSIDL_SYSTEM)
|
||||||
|
{
|
||||||
|
GetSystemDirectory(out, NSIS_MAX_STRLEN);
|
||||||
|
}
|
||||||
|
if (fldrs[0] == CSIDL_WINDOWS)
|
||||||
|
{
|
||||||
|
GetWindowsDirectory(out, NSIS_MAX_STRLEN);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!*out)
|
||||||
|
{
|
||||||
|
x = 4;
|
||||||
|
if (!g_exec_flags.all_user_var)
|
||||||
|
x = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (x--)
|
||||||
|
{
|
||||||
|
if (!SHGetSpecialFolderLocation(g_hwnd, fldrs[x], &idl))
|
||||||
|
{
|
||||||
|
BOOL res = SHGetPathFromIDList(idl, out);
|
||||||
|
FreePIDL(idl);
|
||||||
|
if (res)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
*out=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (*out && append)
|
||||||
|
{
|
||||||
|
lstrcat(out, append);
|
||||||
|
}
|
||||||
|
|
||||||
|
validate_filename(out);
|
||||||
|
out += mystrlen(out);
|
||||||
|
}
|
||||||
|
else if (nVarIdx == NS_VAR_CODE)
|
||||||
|
{
|
||||||
|
if (nData == 27) // HWNDPARENT
|
||||||
|
myitoa(out, (unsigned int) g_hwnd);
|
||||||
|
else
|
||||||
|
mystrcpy(out, g_usrvars[nData]);
|
||||||
|
// validate the directory name
|
||||||
|
if ((unsigned int)(nData - 21) < 6) {
|
||||||
|
// validate paths for $INSTDIR, $OUTDIR, $EXEDIR, $LANGUAGE, $TEMP and $PLUGINSDIR
|
||||||
|
// $LANGUAGE is just a number anyway...
|
||||||
|
validate_filename(out);
|
||||||
|
}
|
||||||
|
out += mystrlen(out);
|
||||||
|
} // == VAR_CODES_START
|
||||||
|
else if (nVarIdx == NS_LANG_CODE)
|
||||||
|
{
|
||||||
|
GetNSISString(out, -nData-1);
|
||||||
|
out += mystrlen(out);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (nVarIdx == NS_SKIP_CODE)
|
else if (nVarIdx == NS_SKIP_CODE)
|
||||||
{
|
{
|
||||||
*out++ = *in++;
|
*out++ = *in++;
|
||||||
}
|
}
|
||||||
else if (nVarIdx == NS_SHELL_CODE)
|
|
||||||
{
|
|
||||||
// NOTE 1: the code CSIDL_PRINTERS, is used for QUICKLAUNCH
|
|
||||||
// NOTE 2: the code CSIDL_BITBUCKET is used for COMMONFILES
|
|
||||||
// NOTE 3: the code CSIDL_CONTROLS is used for PROGRAMFILES
|
|
||||||
LPITEMIDLIST idl;
|
|
||||||
char *append = 0;
|
|
||||||
|
|
||||||
int x = 0;
|
|
||||||
|
|
||||||
*out = 0;
|
|
||||||
|
|
||||||
if (fldrs[2] == CSIDL_PRINTERS) // QUICKLAUNCH
|
|
||||||
{
|
|
||||||
append = "\\Microsoft\\Internet Explorer\\Quick Launch";
|
|
||||||
x = 2;
|
|
||||||
}
|
|
||||||
if (fldrs[0] == CSIDL_PROGRAM_FILES_COMMON)
|
|
||||||
{
|
|
||||||
myRegGetStr(HKEY_LOCAL_MACHINE, SYSREGKEY, "CommonFilesDir", out);
|
|
||||||
}
|
|
||||||
if (fldrs[0] == CSIDL_PROGRAM_FILES)
|
|
||||||
{
|
|
||||||
myRegGetStr(HKEY_LOCAL_MACHINE, SYSREGKEY, "ProgramFilesDir", out);
|
|
||||||
if (!*out)
|
|
||||||
mystrcpy(out, "C:\\Program Files");
|
|
||||||
}
|
|
||||||
if (fldrs[0] == CSIDL_SYSTEM)
|
|
||||||
{
|
|
||||||
GetSystemDirectory(out, NSIS_MAX_STRLEN);
|
|
||||||
}
|
|
||||||
if (fldrs[0] == CSIDL_WINDOWS)
|
|
||||||
{
|
|
||||||
GetWindowsDirectory(out, NSIS_MAX_STRLEN);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!*out)
|
|
||||||
{
|
|
||||||
x = 4;
|
|
||||||
if (!g_exec_flags.all_user_var)
|
|
||||||
x = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (x--)
|
|
||||||
{
|
|
||||||
if (!SHGetSpecialFolderLocation(g_hwnd, fldrs[x], &idl))
|
|
||||||
{
|
|
||||||
BOOL res = SHGetPathFromIDList(idl, out);
|
|
||||||
FreePIDL(idl);
|
|
||||||
if (res)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
*out=0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (*out && append)
|
|
||||||
{
|
|
||||||
lstrcat(out, append);
|
|
||||||
}
|
|
||||||
|
|
||||||
validate_filename(out);
|
|
||||||
out += mystrlen(out);
|
|
||||||
}
|
|
||||||
else if (nVarIdx == NS_VAR_CODE)
|
|
||||||
{
|
|
||||||
if (nData == 27) // HWNDPARENT
|
|
||||||
myitoa(out, (unsigned int) g_hwnd);
|
|
||||||
else
|
|
||||||
mystrcpy(out, g_usrvars[nData]);
|
|
||||||
// validate the directory name
|
|
||||||
if ((unsigned int)(nData - 21) < 6) {
|
|
||||||
// validate paths for $INSTDIR, $OUTDIR, $EXEDIR, $LANGUAGE, $TEMP and $PLUGINSDIR
|
|
||||||
// $LANGUAGE is just a number anyway...
|
|
||||||
validate_filename(out);
|
|
||||||
}
|
|
||||||
out += mystrlen(out);
|
|
||||||
} // == VAR_CODES_START
|
|
||||||
else if (nVarIdx == NS_LANG_CODE)
|
|
||||||
{
|
|
||||||
GetNSISString(out, -nData-1);
|
|
||||||
out += mystrlen(out);
|
|
||||||
}
|
|
||||||
else // Normal char
|
else // Normal char
|
||||||
{
|
{
|
||||||
*out++ = nVarIdx;
|
*out++ = nVarIdx;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue