diff --git a/src/Makedefs.dep b/src/Makedefs.dep index 97dd2ed1..f624d0e4 100644 --- a/src/Makedefs.dep +++ b/src/Makedefs.dep @@ -1,4 +1,3 @@ -ifeq ($(USE_GCC_DEPS),1) ifeq ($(DEPS_DONE),) DEPS_DONE = 1 @@ -7,6 +6,8 @@ DEPS_DONE = 1 # // gcc automated dependencies # ************************************************************************/ +ifeq ($(DEPMODE),gcc) + EXTRA_CFLAGS += -Wp,-MMD,.deps/$(*F).pp EXTRA_CXXFLAGS += -Wp,-MMD,.deps/$(*F).pp @@ -19,6 +20,29 @@ else endif endif +endif + + +# /*********************************************************************** +# // Intel C automated dependencies +# ************************************************************************/ + +ifeq ($(DEPMODE),intelc_linux) + +EXTRA_CFLAGS += -MMD -MF.deps/$(*F).pp +EXTRA_CXXFLAGS += -MMD -MF.deps/$(*F).pp + +ifeq ($(strip $(wildcard .deps)),) + DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) +else + DEP_FILES := $(wildcard .deps/*.pp) + ifneq ($(strip $(DEP_FILES)),) + include $(DEP_FILES) + endif +endif endif + + endif + diff --git a/src/Makedefs.gcc b/src/Makedefs.gcc index 7492579c..7991def6 100644 --- a/src/Makedefs.gcc +++ b/src/Makedefs.gcc @@ -1,4 +1,4 @@ -USE_GCC_DEPS := 1 +DEPMODE := gcc # /*********************************************************************** @@ -14,12 +14,12 @@ LINK_EXE_OUTPUT = -o $@ CFLAGS_W = CFLAGS_M = CFLAGS_O = -CXXFLAGS_W = $(CFLAGS_W) -CXXFLAGS_M = $(CFLAGS_M) -CXXFLAGS_O = $(CFLAGS_O) +CXXFLAGS_W = +CXXFLAGS_M = +CXXFLAGS_O = -CFLAGS = $(CFLAGS_W) $(CFLAGS_M) $(CFLAGS_O) -CXXFLAGS = $(CXXFLAGS_W) $(CXXFLAGS_M) $(CXXFLAGS_O) +CFLAGS = $(CFLAGS_W) $(EXTRA_CFLAGS_W) $(CFLAGS_M) $(CFLAGS_O) $(EXTRA_CFLAGS_O) +CXXFLAGS = $(CXXFLAGS_W) $(EXTRA_CXXFLAGS_W) $(CXXFLAGS_M) $(CXXFLAGS_O) $(EXTRA_CXXFLAGS_O) # @@ -28,10 +28,13 @@ CXXFLAGS = $(CXXFLAGS_W) $(CXXFLAGS_M) $(CXXFLAGS_O) ##CFLAGS_WERROR = -Werror CFLAGS_WERROR = -CFLAGS_W = $(CFLAGS_WERROR) -CFLAGS_W += -Wall -W -Wcast-align -Wcast-qual -Winline -Wmissing-prototypes -Wpointer-arith -Wshadow -Wwrite-strings +CFLAGS_W = $(CFLAGS_WERROR) -Wall -W -Wbad-function-cast -Wcast-align -Wcast-qual -Winline -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wshadow -Wwrite-strings +CXXFLAGS_W = $(CFLAGS_WERROR) -Wall -W -Wcast-align -Wcast-qual -Winline -Wmissing-prototypes -Wpointer-arith -Wshadow -Wsynth -Wwrite-strings + ##CFLAGS_M += -fno-builtin ##CFLAGS_M += -malign-functions=0 -malign-jumps=0 -malign-loops=0 +CXXFLAGS_M = $(CFLAGS_M) + ifeq ($(DEBUG),1) CFLAGS_O = -g -O0 else @@ -39,16 +42,12 @@ else CFLAGS_O = -O2 -fstrict-aliasing ##CFLAGS_O = -O2 -fno-strict-aliasing endif - -CXXFLAGS_W += -Wsynth -CXXFLAGS_O += -fconserve-space - -##CXXFLAGS_1 += -fasynchronous-exceptions -CXXFLAGS_2 += -fno-exceptions -fno-rtti +CXXFLAGS_O = $(CFLAGS_O) -fconserve-space +##CXXFLAGS += -fasynchronous-exceptions # -# cflags for gcc 3.2 +# cxxflags for gcc 3.2 # ##CXXFLAGS_W += -Wdisabled-optimization -Wpacked @@ -65,8 +64,9 @@ LDFLAGS += -s endif LDFLAGS += -Wl,-Map,$T.map -# zlib 1.1.4 +ifeq ($(WITH_ZLIB),1) LDLIBS += -lz +endif # vi:nowrap diff --git a/src/Makedefs.upx b/src/Makedefs.upx new file mode 100644 index 00000000..96bcd551 --- /dev/null +++ b/src/Makedefs.upx @@ -0,0 +1,549 @@ +# /*********************************************************************** +# // setup +# ************************************************************************/ + +SHELL = /bin/sh + + +.SUFFIXES: +.SUFFIXES: .a .c .cpp .exe .lib .o .obj .rc .res .ttp + + +srcdir = . +top_srcdir = .. + +VPATH = $(srcdir) + + +# auto-detect the target unless given on the commandline +ifeq ($(strip $(target)),) + # try environment variable UPX_TARGET + target := $(UPX_TARGET) +endif +ifeq ($(strip $(target)),) +ifneq ($(strip $(wildcard /usr/include/linux)),) +target = linux +endif +##ifneq ($(strip $(wildcard /platform/sun4?/kernel/unix)),) +##target = sparc-sun-solaris +##endif +endif + +ifeq ($(strip $(target)),) +include please_specify_a_target +endif + + +# util var for use in the rules - basename of the current target +override T = $(basename $@) + + +# /*********************************************************************** +# // compiler defaults +# ************************************************************************/ + +CC_COMPILE = $(CC) $(CCARCH) $(DEFS) $(EXTRA_DEFS) $(INCLUDES) $(EXTRA_INCLUDES) $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_OUTPUT) -c $< +CXX_COMPILE = $(CXX) $(CXXARCH) $(DEFS) $(EXTRA_DEFS) $(INCLUDES) $(EXTRA_INCLUDES) $(CXXFLAGS) $(EXTRA_CXXFLAGS) $(CXXFLAGS_OUTPUT) -c $< +CXX_LINK_EXE = $(CXXLD) $(CXXLDARCH) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LINK_EXE_OUTPUT) $^ $(LDLIBS) $(EXTRA_LDLIBS) $(LINK_EXE_LDFLAGS) +STUBEDIT_EXE = +STUBIFY_EXE = +CHMOD_EXE = + +# set defaults +o = .o +a = .a +e = +DEFS = +INCLUDES = +LIBDIRS = +DOS_LDLIBS = +DOS_LIBDIRS = + +# set CC defaults +CC = INVALID_TARGET_CC +CCARCH = +CFLAGS = +CFLAGS_OUTPUT = + +# set CXX defaults +CXX = $(CC) +CXXARCH = $(CCARCH) +CXXFLAGS = $(CFLAGS) +CXXFLAGS_OUTPUT = $(CFLAGS_OUTPUT) + +# set CXXLD defaults +CXXLD = $(CXX) +CXXLDARCH = $(CXXARCH) +LDFLAGS = +LINK_EXE_OUTPUT = +LDLIBS = +LINK_EXE_LDFLAGS = + +# update defaults +ifeq ($(DEBUG),1) + DEFS += -DDEBUG +## DEFS += -DTESTING +endif + + +# /*********************************************************************** +# // compression library +# ************************************************************************/ + +ifeq ($(WITH_ZLIB),1) +DOS_LDLIBS += zlib114.lib +endif + +UCLDIR:=$(strip $(subst \,/,$(UCLDIR))) +NRVDIR:=$(strip $(subst \,/,$(NRVDIR))) +u = ucl +U = UCL +upx_exe_tail = +include $(srcdir)/Makedefs.inc +ifneq ($(strip $(wildcard $(NRVDIR)/include/nrv)),) + u = nrv + U = NRV + upx_exe_tail = _$(u) + include $(srcdir)/Makedefs.inc +endif +upx_exe = upx$(upx_exe_tail)$(e) + +override tmp := -Wl,--rpath, +LDRPATH := $(addprefix $(tmp),$(LIBDIRS)) +LIBDIRS += . +LDLIBDIRS := $(addprefix -L,$(LIBDIRS)) + +##LDFLAGS += $(LDRPATH) +LDFLAGS += $(LDLIBDIRS) + + +# /*********************************************************************** +# // compiler settings +# ************************************************************************/ + +### +### generic gcc +### + +ifeq ($(target),gcc) +include $(srcdir)/Makedefs.gcc +endif + + +### +### linux +### + +ifeq ($(target),linux) +override arch := $(shell uname -m | sed -e 's/^i[3456789]86$$/i386/') +include $(srcdir)/Makedefs.gcc +ifeq ($(arch),i386) + CCARCH += -march=i386 -mcpu=i686 +endif +DEFS += '-DUPX_CONFIG_H="config_h/linux.h"' +DEFS += -D_FILE_OFFSET_BITS=64 +LDLIBS += -lmcheck +##CFLAGS_WERROR = -Werror + +ifeq ($(DEBUG),0) + ##LDFLAGS += -static + STUBEDIT_EXE = objcopy -S -R .comment -R .note $@ + ifeq ($(arch),i386) + STUBIFY_EXE = perl $(srcdir)/stub/scripts/brandelf.pl $@ + endif +endif +CHMOD_EXE = chmod 755 $@ + +endif # linux + + +### +### linux/i386 - Intel C++ 7.0 +### + +ifeq ($(target),linux-intelc70) +DEPMODE := intelc_linux +CC = icc +CXX = icpc +CCARCH += -march=i386 -mcpu=i686 +CFLAGS_OUTPUT = -o $@ +LINK_EXE_OUTPUT = -o $@ +ifeq ($(WITH_ZLIB),1) +LDLIBS += -lz +endif + +DEFS += '-DUPX_CONFIG_H="config_h/linux.h"' +CFLAGS = $(CFLAGS_WERROR) +ifeq ($(DEBUG),1) +CFLAGS += -g -O0 +else +CFLAGS += -O2 +endif +LDFLAGS += -Wl,-Map,$T.map + +endif + + +### +### Linux cross compilers +### + +ifeq ($(target),cross-m68k-linux) +include $(srcdir)/Makedefs.gcc +CC = m68k-linux-gcc +CXX = m68k-linux-g++ +DEFS += '-DUPX_CONFIG_H="config_h/linux.h"' +##LDLIBS += -lmcheck +endif # cross-m68k-linux + + +### +### sparc-sun-solaris2.8 +### + +ifeq ($(target),sparc-sun-solaris) +include $(srcdir)/Makedefs.gcc +DEFS += '-DUPX_CONFIG_H="config_h/sparc_sun_solaris28.h"' +endif + + +### +### Atari cross compiler +### + +ifeq ($(target),cross-mint) +include $(srcdir)/Makedefs.gcc +e = .ttp +CC = m68k-atari-mint-gcc +CXX = m68k-atari-mint-g++ +CCARCH += -m68000 +endif + +ifeq ($(target),cross-mint-m68040) +include $(srcdir)/Makedefs.gcc +e = .ttp +CC = m68k-atari-mint-gcc +CXX = m68k-atari-mint-g++ +CCARCH += -m68040 +endif + +ifeq ($(target),cross-mint-m68020-60) +include $(srcdir)/Makedefs.gcc +e = .ttp +CC = m68k-atari-mint-gcc +CXX = m68k-atari-mint-g++ +CCARCH += -m68020-60 -m68881 +endif + + +### +### dos32 - djgpp2 +### + +ifeq ($(target),djgpp2) +include $(srcdir)/Makedefs.gcc +e = .exe +CXX = gxx +CCARCH += -march=i386 -mcpu=i686 +CFLAGS_WERROR = -Werror +STUBEDIT_EXE = stubedit $@ bufsize=0xfc00 +ifneq ($(strip $(wildcard $(DJDIR)/bin/mfxdjstubify.ex[eE])),) +ifneq ($(strip $(wildcard $(DJDIR)/bin/cwsdstub.ex[eE])),) +STUBIFY_EXE = mfxdjstubify -v -s $(DJDIR)/bin/cwsdstub.exe $(upx_exe) +endif +endif +endif # djgpp2 + + +### +### win32 - cygwin / mingw32 +### + +ifeq ($(target),cygwin) +include $(srcdir)/Makedefs.gcc +e = .exe +CCARCH += -mcygwin -march=i386 -mcpu=i686 +endif + +ifeq ($(target),mingw32) +include $(srcdir)/Makedefs.gcc +e = .exe +CCARCH += -mno-cygwin -march=i386 -mcpu=i686 +endif + +# mingw32 as included in cygwin +ifeq ($(target),no-cygwin) +include $(srcdir)/Makedefs.gcc +e = .exe +CCARCH += -mno-cygwin -march=i386 -mcpu=i686 +endif + +# mingw32 cross compiler +ifeq ($(target),cross-mingw32) +include $(srcdir)/Makedefs.gcc +e = .exe +CC = i586-mingw32msvc-gcc +CXX = i586-mingw32msvc-g++ +CCARCH += -march=i386 -mcpu=i686 +endif + + +### +### win32 - Borland C++ 5.5.1 +### + +ifeq ($(target),bc) +o = .obj +a = .lib +e = .exe +CC = bcc32 -q -3 +CFLAGS = -w -w-aus -w-inl -g1 +CFLAGS_OUTPUT = -o$@ +LDFLAGS = +LINK_EXE_OUTPUT = -e$@ +LDLIBS = $(DOS_LDLIBS) + +ifneq ($(strip $(DOS_LIBDIRS)),) +LIB := $(DOS_LIBDIRS);$(LIB) +endif +export LIB + +ifeq ($(DEBUG),1) + CFLAGS += -Od -d +else + CFLAGS += -O2 -d +endif + +endif # bc + + +### +### win32 - Digital Mars C++ 8.32 +### + +ifeq ($(target),dm) +o = .obj +a = .lib +e = .exe +CC = dmc -mn +CFLAGS = -w- -wx +CXXFLAGS = $(CFLAGS) -Aa -Ab -Ae -Ar +CFLAGS_OUTPUT = -o$@ +LDFLAGS = -L/map +LINK_EXE_OUTPUT = -o$@ +LDLIBS = $(DOS_LDLIBS) + +ifneq ($(strip $(DOS_LIBDIRS)),) +LIB := $(DOS_LIBDIRS);$(LIB) +endif +export LIB + +ifeq ($(DEBUG),1) + CFLAGS += -o- -g -s +else + CFLAGS += -o +endif + +endif # dm + + +### +### win32 - Intel C++ 7.0 +### + +ifeq ($(target),ic) +o = .obj +a = .lib +e = .exe +CC = icl -nologo -MD +CFLAGS = -W3 -WX +CXXFLAGS = $(CFLAGS) -EHac -GR +LDFLAGS = +LINK_EXE_OUTPUT = -Fe$@ +LDLIBS = $(DOS_LDLIBS) setargv.obj +LINK_EXE_LDFLAGS = /link /map:$T.map +##LINK_EXE_LDFLAGS += /verbose + +ifneq ($(strip $(DOS_LIBDIRS)),) +LIB := $(DOS_LIBDIRS);$(LIB) +endif +export LIB + +ifeq ($(DEBUG),1) + CFLAGS += -Od -ZI + LINK_EXE_LDFLAGS += /debug +else + CFLAGS += -O1 -GF + LINK_EXE_LDFLAGS += /release +endif +RESOURCES = upx.res + +endif # ic + + +### +### win32 - Visual C++ 6 +### + +ifeq ($(target),vc) +o = .obj +a = .lib +e = .exe +CC = cl -nologo +CFLAGS = -W4 -WX +CXXFLAGS = $(CFLAGS) -EHac -GR +LDFLAGS = +LINK_EXE_OUTPUT = -Fe$@ +LINK_EXE_LDFLAGS = /link /map:$T.map +##LINK_EXE_LDFLAGS += /verbose + +ifneq ($(strip $(DOS_LIBDIRS)),) +LIB := $(DOS_LIBDIRS);$(LIB) +endif +export LIB + +ifeq (1,2) + # statically link libc.lib + CC += -ML + LDLIBS = $(DOS_LDLIBS:.lib=_ml.lib) setargv.obj +else + # link against msvcrt.dll + CC += -MD + LDLIBS = $(DOS_LDLIBS) setargv.obj +endif +ifeq ($(DEBUG),1) + CFLAGS += -Od -ZI + LINK_EXE_LDFLAGS += /debug +else + CFLAGS += -O1 -GF + LINK_EXE_LDFLAGS += /release +endif +RESOURCES = upx.res + +endif # vc + + +### +### win32 - Watcom C++ 11.0c / Open Watcom C++ 1.0 +### + +ifeq ($(target),wc) +o = .obj +a = .lib +e = .exe +CC = wcl386 -zq -bt=nt -mf -5r +CFLAGS = -zc -w5 -we +CXXFLAGS = $(CFLAGS) -xs -xr +CFLAGS_OUTPUT = -fo=$@ +LDFLAGS = -k0x100000 -fm +LINK_EXE_OUTPUT = -fe=$@ +LDLIBS = $(DOS_LDLIBS) + +INCLUDES:=$(strip $(subst /,\\,$(INCLUDES))) +ifeq (1,2) + WCL386:=$(INCLUDES) + export WCL386 + INCLUDES:= +endif + +ifneq ($(strip $(DOS_LIBDIRS)),) +LIB := $(DOS_LIBDIRS);$(LIB) +endif +export LIB + +ifeq ($(DEBUG),1) + CFLAGS += +else + # note: it seems that the optimizer is generating bad code with `-ox' + CFLAGS += -olr +endif + +endif # wc + + +# /*********************************************************************** +# // malloc debuggers and memory checkers - somewhat obsolete, use valgrind +# ************************************************************************/ + +ifeq (1,2) + # compile in extra valgrind support + DEFS += -DWITH_VALGRIND +endif + +ifeq (1,2) + LDLIBS += -lefence +endif + +ifeq (1,2) + DEFS += -DWITH_DMALLOC + LDLIBS += -ldmalloc +endif + +ifeq (1,2) + DEFS += -DWITH_GC -DLINUX_THREADS -D_REENTRANT + LDLIBS += -lgc -lpthread + # only needed when using -static: + ##LDFLAGS += -Wl,-defsym,_DYNAMIC=0 +endif + + +# /*********************************************************************** +# // main targets +# ************************************************************************/ + +all: $(upx_exe) + +.PHONY: all mostlyclean clean distclean maintainer-clean untabify tags + +$(upx_exe): $(OBJECTS) $(LIBS) $(RESOURCES) + $(strip $(CXX_LINK_EXE)) + $(STUBEDIT_EXE) + $(STUBIFY_EXE) + $(CHMOD_EXE) + + +mostlyclean: + -rm -f *.d *.err *.i *.log *.map *~ gdb-trans* + +clean: mostlyclean + -rm -f *.a *.lib *.o *.obj *.res *.tds tags TAGS ID + -rm -f *.idb *.pdb + -rm -f $(upx_exe) upx upx.exe upx.ttp upx_nrv upx_nrv.exe upx_nrv.ttp upx_ucl upx_ucl.exe upx_ucl.ttp + -rm -rf .deps + +distclean: clean + +maintainer-clean: distclean + + +untabify: + mfxtu -d4 -t *.ch *.cpp *.h + mfxtu -d8 -t stub/[ln]*.asm stub/*.ash stub/*.[cs] + +tags TAGS: + ctags *.ch *.cpp *.h + +ID: + mkid *.ch *.cpp *.h + + +# /*********************************************************************** +# // rules +# ************************************************************************/ + +%$o : %.c + $(strip $(CC_COMPILE)) + +%$o : %.cpp + $(strip $(CXX_COMPILE)) + +ifneq ($(strip $(OBJECTS2)),) +$(OBJECTS2): %$o : %.cpp + $(strip $(CXX_COMPILE)) +endif + +%.res : %.rc + rc -l 0x409 -fo$@ $< + + +# vi:nowrap diff --git a/src/Makefile b/src/Makefile index 6c15aa3e..8d2f4b68 100644 --- a/src/Makefile +++ b/src/Makefile @@ -31,44 +31,7 @@ endif DEBUG = 0 -# ------------------------------------------------------- -# You should not have to change anything below this line. -# ------------------------------------------------------- - -SHELL = /bin/sh - - -.SUFFIXES: -.SUFFIXES: .a .c .cpp .exe .lib .o .obj .rc .res .ttp - - -srcdir = . -top_srcdir = .. - -VPATH = $(srcdir) - - -# auto-detect the target unless given on the commandline -ifeq ($(strip $(target)),) - # try environment variable UPX_TARGET - target := $(UPX_TARGET) -endif -ifeq ($(strip $(target)),) -ifneq ($(strip $(wildcard /usr/include/linux)),) -target = linux -endif -##ifneq ($(strip $(wildcard /platform/sun4?/kernel/unix)),) -##target = sparc-sun-solaris -##endif -endif - -ifeq ($(strip $(target)),) -include please_specify_a_target -endif - - -# util var for use in the rules - basename of the current target -override T = $(basename $@) +##### You should not have to change anything below this line. ##### # /*********************************************************************** @@ -100,541 +63,12 @@ RESOURCES = # /*********************************************************************** -# // compiler defaults -# // CXX_1: use exceptions & RTTI -# // CXX_2: no exceptions or RTTI +# // main # ************************************************************************/ -CC_COMPILE = $(CC) $(CCARCH) $(DEFS) $(INCLUDES) $(CFLAGS) $(CFLAGS_OUTPUT) -c $< -CXX_COMPILE_1 = $(CXX) $(CXXARCH) $(DEFS) $(INCLUDES) $(CXXFLAGS_1) $(CXXFLAGS_OUTPUT) -c $< -CXX_COMPILE_2 = $(CXX) $(CXXARCH) $(DEFS) $(INCLUDES) $(CXXFLAGS_2) $(CXXFLAGS_OUTPUT) -c $< -CXX_COMPILE = $(CXX_COMPILE_1) -CXX_LINK_EXE = $(CXXLD) $(CXXLDARCH) $(LDFLAGS) $(LINK_EXE_OUTPUT) $^ $(LDLIBS) $(LINK_EXE_LDFLAGS) -STUBEDIT_EXE = -STUBIFY_EXE = -CHMOD_EXE = +override WITH_ZLIB = 1 -# set defaults -o = .o -a = .a -e = -DEFS = -INCLUDES = -LIBDIRS = -DOS_LDLIBS = -DOS_LIBDIRS = - -# set CC defaults -CC = INVALID_TARGET_CC -CCARCH = -CCFLAGS = -CFLAGS_OUTPUT = - -# set CXX defaults -CXX = $(CC) -CXXARCH = $(CCARCH) -CXXFLAGS = $(CFLAGS) -CXXFLAGS_1 = $(CXXFLAGS) -CXXFLAGS_2 = $(CXXFLAGS) -CXXFLAGS_OUTPUT = $(CFLAGS_OUTPUT) - -# set CXXLD defaults -CXXLD = $(CXX) -CXXLDARCH = $(CXXARCH) -LDFLAGS = -LINK_EXE_OUTPUT = -LDLIBS = -LINK_EXE_LDFLAGS = - -# update defaults -ifeq ($(DEBUG),1) - DEFS += -DDEBUG -## DEFS += -DTESTING -endif - - -# /*********************************************************************** -# // compression library -# ************************************************************************/ - -DOS_LDLIBS += zlib114.lib - -UCLDIR:=$(strip $(subst \,/,$(UCLDIR))) -NRVDIR:=$(strip $(subst \,/,$(NRVDIR))) -u = ucl -U = UCL -upx_exe_tail = -include $(srcdir)/Makedefs.inc -ifneq ($(strip $(wildcard $(NRVDIR)/include/nrv)),) - u = nrv - U = NRV - upx_exe_tail = _$(u) - include $(srcdir)/Makedefs.inc -endif -upx_exe = upx$(upx_exe_tail)$(e) - -override tmp := -Wl,--rpath, -LDRPATH := $(addprefix $(tmp),$(LIBDIRS)) -LIBDIRS += . -LDLIBDIRS := $(addprefix -L,$(LIBDIRS)) - -##LDFLAGS += $(LDRPATH) -LDFLAGS += $(LDLIBDIRS) - - -# /*********************************************************************** -# // compiler settings -# ************************************************************************/ - -### -### generic gcc -### - -ifeq ($(target),gcc) -include $(srcdir)/Makedefs.gcc -endif - - -### -### linux -### - -ifeq ($(target),linux) -override arch := $(shell uname -m | sed -e 's/^i[3456789]86$$/i386/') -include $(srcdir)/Makedefs.gcc -ifeq ($(arch),i386) - CCARCH += -march=i386 -mcpu=i686 -endif -DEFS += '-DUPX_CONFIG_H="config_h/linux.h"' -DEFS += -D_FILE_OFFSET_BITS=64 -LDLIBS += -lmcheck -##CFLAGS_WERROR = -Werror - -ifeq ($(DEBUG),0) - ##LDFLAGS += -static - STUBEDIT_EXE = objcopy -S -R .comment -R .note $@ - ifeq ($(arch),i386) - STUBIFY_EXE = perl $(srcdir)/stub/scripts/brandelf.pl $@ - endif -endif -CHMOD_EXE = chmod 755 $@ - -endif # linux - - -### -### linux/i386 - Intel C++ 7.0 -### - -ifeq ($(target),linux-intelc70) -CC = icc -CXX = icpc -CCARCH += -march=i386 -mcpu=i686 -CFLAGS_OUTPUT = -o $@ -LINK_EXE_OUTPUT = -o $@ -LDLIBS += -lz - -DEFS += '-DUPX_CONFIG_H="config_h/linux.h"' -CFLAGS = $(CFLAGS_WERROR) -ifeq ($(DEBUG),1) -CFLAGS += -g -O0 -else -CFLAGS += -O2 -endif -CXXFLAGS_2 += -fno-rtti -LDFLAGS += -Wl,-Map,$T.map - -endif - - -### -### Linux cross compilers -### - -ifeq ($(target),cross-m68k-linux) -include $(srcdir)/Makedefs.gcc -CC = m68k-linux-gcc -CXX = m68k-linux-g++ -DEFS += '-DUPX_CONFIG_H="config_h/linux.h"' -##LDLIBS += -lmcheck -endif # cross-m68k-linux - - -### -### sparc-sun-solaris2.8 -### - -ifeq ($(target),sparc-sun-solaris) -include $(srcdir)/Makedefs.gcc -DEFS += '-DUPX_CONFIG_H="config_h/sparc_sun_solaris28.h"' -endif - - -### -### Atari cross compiler -### - -ifeq ($(target),cross-mint) -include $(srcdir)/Makedefs.gcc -e = .ttp -CC = m68k-atari-mint-gcc -CXX = m68k-atari-mint-g++ -CCARCH += -m68000 -endif - -ifeq ($(target),cross-mint-m68040) -include $(srcdir)/Makedefs.gcc -e = .ttp -CC = m68k-atari-mint-gcc -CXX = m68k-atari-mint-g++ -CCARCH += -m68040 -endif - -ifeq ($(target),cross-mint-m68020-60) -include $(srcdir)/Makedefs.gcc -e = .ttp -CC = m68k-atari-mint-gcc -CXX = m68k-atari-mint-g++ -CCARCH += -m68020-60 -m68881 -endif - - -### -### dos32 - djgpp2 -### - -ifeq ($(target),djgpp2) -include $(srcdir)/Makedefs.gcc -e = .exe -CXX = gxx -CCARCH += -march=i386 -mcpu=i686 -CFLAGS_WERROR = -Werror -STUBEDIT_EXE = stubedit $@ bufsize=0xfc00 -ifneq ($(strip $(wildcard $(DJDIR)/bin/mfxdjstubify.ex[eE])),) -ifneq ($(strip $(wildcard $(DJDIR)/bin/cwsdstub.ex[eE])),) -STUBIFY_EXE = mfxdjstubify -v -s $(DJDIR)/bin/cwsdstub.exe $(upx_exe) -endif -endif -endif # djgpp2 - - -### -### win32 - cygwin / mingw32 -### - -ifeq ($(target),cygwin) -include $(srcdir)/Makedefs.gcc -e = .exe -CCARCH += -mcygwin -march=i386 -mcpu=i686 -endif - -ifeq ($(target),mingw32) -include $(srcdir)/Makedefs.gcc -e = .exe -CCARCH += -mno-cygwin -march=i386 -mcpu=i686 -endif - -# mingw32 as included in cygwin -ifeq ($(target),no-cygwin) -include $(srcdir)/Makedefs.gcc -e = .exe -CCARCH += -mno-cygwin -march=i386 -mcpu=i686 -endif - -# mingw32 cross compiler -ifeq ($(target),cross-mingw32) -include $(srcdir)/Makedefs.gcc -e = .exe -CC = i586-mingw32msvc-gcc -CXX = i586-mingw32msvc-g++ -CCARCH += -march=i386 -mcpu=i686 -endif - - -### -### win32 - Borland C++ 5.5.1 -### - -ifeq ($(target),bc) -o = .obj -a = .lib -e = .exe -CC = bcc32 -q -3 -CFLAGS = -w -w-aus -w-inl -g1 -CXXFLAGS_2 = $(CXXFLAGS) -x- -xd- -RT- -CFLAGS_OUTPUT = -o$@ -LDFLAGS = -LINK_EXE_OUTPUT = -e$@ -LDLIBS = $(DOS_LDLIBS) - -ifneq ($(strip $(DOS_LIBDIRS)),) -LIB := $(DOS_LIBDIRS);$(LIB) -endif -export LIB - -ifeq ($(DEBUG),1) - CFLAGS += -Od -d -else - CFLAGS += -O2 -d -endif - -endif # bc - - -### -### win32 - Digital Mars C++ 8.32 -### - -ifeq ($(target),dm) -o = .obj -a = .lib -e = .exe -CC = dmc -mn -CFLAGS = -w- -wx -CXXFLAGS = $(CFLAGS) -Aa -Ab -CXXFLAGS_1 = $(CXXFLAGS) -Ae -Ar -CFLAGS_OUTPUT = -o$@ -LDFLAGS = -L/map -LINK_EXE_OUTPUT = -o$@ -LDLIBS = $(DOS_LDLIBS) - -ifneq ($(strip $(DOS_LIBDIRS)),) -LIB := $(DOS_LIBDIRS);$(LIB) -endif -export LIB - -ifeq ($(DEBUG),1) - CFLAGS += -o- -g -s -else - CFLAGS += -o -endif - -endif # dm - - -### -### win32 - Intel C++ 7.0 -### - -ifeq ($(target),ic) -o = .obj -a = .lib -e = .exe -CC = icl -nologo -MD -CFLAGS = -W3 -WX -CXXFLAGS_1 = $(CXXFLAGS) -EHac -GR -LDFLAGS = -LINK_EXE_OUTPUT = -Fe$@ -LDLIBS = $(DOS_LDLIBS) setargv.obj -LINK_EXE_LDFLAGS = /link /map:$T.map -##LINK_EXE_LDFLAGS += /verbose - -ifneq ($(strip $(DOS_LIBDIRS)),) -LIB := $(DOS_LIBDIRS);$(LIB) -endif -export LIB - -ifeq ($(DEBUG),1) - CFLAGS += -Od -ZI - LINK_EXE_LDFLAGS += /debug -else - CFLAGS += -O1 -GF - LINK_EXE_LDFLAGS += /release -endif -RESOURCES = upx.res - -endif # ic - - -### -### win32 - Visual C++ 6 -### - -ifeq ($(target),vc) -o = .obj -a = .lib -e = .exe -CC = cl -nologo -CFLAGS = -W4 -WX -CXXFLAGS_1 = $(CXXFLAGS) -EHac -GR -LDFLAGS = -LINK_EXE_OUTPUT = -Fe$@ -LINK_EXE_LDFLAGS = /link /map:$T.map -##LINK_EXE_LDFLAGS += /verbose - -ifneq ($(strip $(DOS_LIBDIRS)),) -LIB := $(DOS_LIBDIRS);$(LIB) -endif -export LIB - -ifeq (1,2) - # statically link libc.lib - CC += -ML - LDLIBS = $(DOS_LDLIBS:.lib=_ml.lib) setargv.obj -else - # link against msvcrt.dll - CC += -MD - LDLIBS = $(DOS_LDLIBS) setargv.obj -endif -ifeq ($(DEBUG),1) - CFLAGS += -Od -ZI - LINK_EXE_LDFLAGS += /debug -else - CFLAGS += -O1 -GF - LINK_EXE_LDFLAGS += /release -endif -RESOURCES = upx.res - -endif # vc - - -### -### win32 - Watcom C++ 11.0c / Open Watcom C++ 1.0 -### - -ifeq ($(target),wc) -o = .obj -a = .lib -e = .exe -CC = wcl386 -zq -bt=nt -mf -5r -CFLAGS = -zc -w5 -we -CXXFLAGS_1 = $(CXXFLAGS) -xs -xr -CFLAGS_OUTPUT = -fo=$@ -LDFLAGS = -k0x100000 -fm -LINK_EXE_OUTPUT = -fe=$@ -LDLIBS = $(DOS_LDLIBS) - -INCLUDES:=$(strip $(subst /,\\,$(INCLUDES))) -ifeq (1,2) - WCL386:=$(INCLUDES) - export WCL386 - INCLUDES:= -endif - -ifneq ($(strip $(DOS_LIBDIRS)),) -LIB := $(DOS_LIBDIRS);$(LIB) -endif -export LIB - -ifeq ($(DEBUG),1) - CFLAGS += -else - # note: it seems that the optimizer is generating bad code with `-ox' - CFLAGS += -olr -endif - -endif # wc - - -# /*********************************************************************** -# // malloc debuggers and memory checkers - somewhat obsolete, use valgrind -# ************************************************************************/ - -ifeq (1,2) - # compile in extra valgrind support - DEFS += -DWITH_VALGRIND -endif - -ifeq (1,2) - LDLIBS += -lefence -endif - -ifeq (1,2) - DEFS += -DWITH_DMALLOC - LDLIBS += -ldmalloc -endif - -ifeq (1,2) - DEFS += -DWITH_GC -DLINUX_THREADS -D_REENTRANT - LDLIBS += -lgc -lpthread - # only needed when using -static: - ##LDFLAGS += -Wl,-defsym,_DYNAMIC=0 -endif - - -# /*********************************************************************** -# // finish settings -# ************************************************************************/ - -# extra flags -DEFS += $(EXTRA_DEFS) -CFLAGS += $(EXTRA_CFLAGS) -CFLAGS_W += $(EXTRA_CFLAGS_W) -CFLAGS_M += $(EXTRA_CFLAGS_M) -CFLAGS_O += $(EXTRA_CFLAGS_O) -CXXFLAGS_W += $(EXTRA_CXXFLAGS_W) -CXXFLAGS_M += $(EXTRA_CXXFLAGS_M) -CXXFLAGS_O += $(EXTRA_CXXFLAGS_O) -CXXFLAGS += $(EXTRA_CXXFLAGS) -CXXFLAGS_1 += $(EXTRA_CXXFLAGS_1) -CXXFLAGS_2 += $(EXTRA_CXXFLAGS_2) -LDFLAGS += $(EXTRA_LDFLAGS) -LDLIBS += $(EXTRA_LDLIBS) - - -# To better deal with asynchronous exceptions we compile all source -# files with exception handling and RTTI enabled - the size overhead -# is negligible. -CXXFLAGS_2 = $(CXXFLAGS_1) - - -# /*********************************************************************** -# // main targets -# ************************************************************************/ - -all: $(upx_exe) - -.PHONY: all mostlyclean clean distclean maintainer-clean untabify tags - -$(upx_exe): $(OBJECTS) $(LIBS) $(RESOURCES) - $(CXX_LINK_EXE) - $(STUBEDIT_EXE) - $(STUBIFY_EXE) - $(CHMOD_EXE) - - -mostlyclean: - -rm -f *.d *.err *.i *.log *.map *~ gdb-trans* - -clean: mostlyclean - -rm -f *.a *.lib *.o *.obj *.res *.tds tags TAGS ID - -rm -f *.idb *.pdb - -rm -f $(upx_exe) upx upx.exe upx.ttp upx_nrv upx_nrv.exe upx_nrv.ttp upx_ucl upx_ucl.exe upx_ucl.ttp - -rm -rf .deps - -distclean: clean - -maintainer-clean: distclean - - -untabify: - mfxtu -d4 -t *.ch *.cpp *.h - mfxtu -d8 -t stub/[ln]*.asm stub/*.ash stub/*.[cs] - -tags TAGS: - ctags *.ch *.cpp *.h - -ID: - mkid *.ch *.cpp *.h - - -# /*********************************************************************** -# // rules -# ************************************************************************/ - -%$o : %.c - $(CC_COMPILE) - -%$o : %.cpp - $(CXX_COMPILE_1) - -ifneq ($(strip $(OBJECTS2)),) -$(OBJECTS2): %$o : %.cpp - $(CXX_COMPILE_2) -endif - -%.res : %.rc - rc -l 0x409 -fo$@ $< +include $(srcdir)/Makedefs.upx # /*********************************************************************** diff --git a/src/version.h b/src/version.h index 4921341a..17beb8dc 100644 --- a/src/version.h +++ b/src/version.h @@ -1,4 +1,4 @@ #define UPX_VERSION_HEX 0x019100 /* 01.91.00 */ #define UPX_VERSION_STRING "1.91 beta" #define UPX_VERSION_STRING4 "1.91" -#define UPX_VERSION_DATE "Jan 13th 2003" +#define UPX_VERSION_DATE "Jan 27th 2003"