Initial commit (from git)
This commit is contained in:
@@ -0,0 +1,322 @@
|
||||
#
|
||||
# UPX stub Makefile (GNU make)
|
||||
#
|
||||
|
||||
ifeq ($(strip $(UCLDIR)),)
|
||||
# change this to reflect where the UCL library is
|
||||
UCLDIR = $(HOME)/local/src/ucl-0.91
|
||||
endif
|
||||
|
||||
|
||||
# -------------------------------------------------------
|
||||
# You should not have to change anything below this line.
|
||||
# -------------------------------------------------------
|
||||
|
||||
SHELL = /bin/sh
|
||||
|
||||
top_srcdir = ../..
|
||||
|
||||
|
||||
# These are the files we want to create.
|
||||
STUBS = \
|
||||
l_com.h \
|
||||
l_djgpp2.h stubify.h \
|
||||
l_exe.h \
|
||||
l_sys.h \
|
||||
l_t_n2b.h l_t_n2bs.h l_t_n2d.h l_t_n2ds.h \
|
||||
l_tmt.h \
|
||||
l_wcle.h \
|
||||
l_w32pe.h \
|
||||
l_lx_n2b.h l_lx_n2d.h \
|
||||
l_le_n2b.h l_le_n2d.h \
|
||||
l_sh_n2b.h l_sh_n2d.h
|
||||
|
||||
|
||||
# util var for use in the rules - basename of the current target
|
||||
override T = $(basename $@)
|
||||
|
||||
|
||||
# /***********************************************************************
|
||||
# // source directories
|
||||
# ************************************************************************/
|
||||
|
||||
UCL_UPX = $(UCLDIR)/upx
|
||||
UCL_I386 = $(UCLDIR)/upx/i386
|
||||
UCL_M68K = $(UCLDIR)/upx/m68k
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .asm .ash .asx .asy .bin .c .h .s
|
||||
|
||||
vpath %.ash $(UCL_I386)
|
||||
vpath %.ash $(UCL_M68K)
|
||||
|
||||
|
||||
# /***********************************************************************
|
||||
# // tools
|
||||
# ************************************************************************/
|
||||
|
||||
NASM = nasm -w+macro-params -w+orphan-labels
|
||||
|
||||
APP = perl -w scripts/app.pl
|
||||
BIN2H = perl -w scripts/bin2h.pl
|
||||
BRANDELF = perl -w scripts/brandelf.pl
|
||||
O2BIN = perl -w scripts/o2bin.pl
|
||||
SETFOLD = perl -w scripts/setfold.pl
|
||||
##STRIPELF = perl -w scripts/stripelf.pl
|
||||
STRIPELF = ./util/sstrip/sstrip
|
||||
|
||||
# Preprocessor for a68k assembler.
|
||||
CPP_M68K = gcc -I$(UCL_UPX) -E -x assembler-with-cpp -Wall -Wp,-P,-C,-traditional
|
||||
|
||||
# Use gcc 2.95.2 for smallest code.
|
||||
CC_LINUX_CFLAGS = -Wall -W -Wcast-align -Wcast-qual -Wwrite-strings
|
||||
CC_LINUX_CFLAGS += -funsigned-char
|
||||
###CC_LINUX_CFLAGS += -fwritable-strings -save-temps
|
||||
CC_LINUX = gcc272 -O2 -m386 -malign-functions=0 -malign-jumps=0 -malign-loops=0 $(CC_LINUX_CFLAGS)
|
||||
CC_LINUX = gcc -Os -march=i386 -mcpu=i386 -malign-functions=0 -malign-jumps=0 -malign-loops=0 $(CC_LINUX_CFLAGS)
|
||||
# Specifying -mcpu=i586 inhibits use of 'leave', which costs 2 bytes per subr
|
||||
#CC_LINUX =gcc -Os -march=i386 -mcpu=i586 -malign-functions=0 -malign-jumps=0 -malign-loops=0 $(CC_LINUX_CFLAGS)
|
||||
|
||||
|
||||
# /***********************************************************************
|
||||
# // main targets
|
||||
# ************************************************************************/
|
||||
|
||||
.PHONY: default all stubs mostlyclean clean distclean maintainer-clean ident strings
|
||||
|
||||
default:
|
||||
@echo "UPX info: type 'make all' if you have all the needed build tools."
|
||||
|
||||
all: stubs upxb upxd
|
||||
|
||||
stubs: $(STUBS)
|
||||
|
||||
mostlyclean:
|
||||
-rm -f *~ *.bin *.bkp *.i *.lst *.map
|
||||
|
||||
clean: mostlyclean
|
||||
-rm -f *.o *.asx *.asy upxb upxd
|
||||
|
||||
distclean: clean
|
||||
|
||||
# This command is intended for maintainers to use; it deletes files
|
||||
# that may require special tools to rebuild.
|
||||
maintainer-clean: distclean
|
||||
-rm -f $(STUBS)
|
||||
|
||||
ident: all
|
||||
ident *.bin
|
||||
|
||||
strings: all
|
||||
strings *.bin
|
||||
|
||||
|
||||
# /***********************************************************************
|
||||
# // rules
|
||||
# ************************************************************************/
|
||||
|
||||
.asm.asx:
|
||||
$(APP) $< $@
|
||||
|
||||
.ash.asy:
|
||||
$(APP) $< $@
|
||||
|
||||
|
||||
stubify.h: stub.asm
|
||||
djasm $< $@
|
||||
|
||||
l_com.h: l_com.asx
|
||||
$(NASM) -f bin -o $T.bin $<
|
||||
$(BIN2H) $T.bin nrv2b_loader $@
|
||||
|
||||
l_djgpp2.h: l_djgpp2.asx
|
||||
$(NASM) -f bin -o $T.bin $<
|
||||
$(BIN2H) $T.bin nrv_loader $@
|
||||
|
||||
l_exe.h: l_exe.asx
|
||||
$(NASM) -f bin -o $T.bin $<
|
||||
$(BIN2H) $T.bin nrv_loader $@
|
||||
|
||||
l_sys.h: l_sys.asx
|
||||
$(NASM) -f bin -o $T.bin $<
|
||||
$(BIN2H) $T.bin nrv2b_loader $@
|
||||
|
||||
l_tmt.h: l_tmt.asx
|
||||
$(NASM) -f bin -o $T.bin $<
|
||||
$(BIN2H) $T.bin nrv_loader $@
|
||||
|
||||
l_t_n2b.h: l_tos.s
|
||||
$(CPP_M68K) -D__A68K__ -DNRV2B -o $T.i $<
|
||||
a68k -q -x $T.i
|
||||
$(O2BIN) $T.o $T.bin 'UPX1' 'UPX9'
|
||||
$(BIN2H) $T.bin nrv2b_loader $@
|
||||
|
||||
l_t_n2bs.h: l_tos.s
|
||||
$(CPP_M68K) -D__A68K__ -DNRV2B -DSMALL -o $T.i $<
|
||||
a68k -q -x $T.i
|
||||
$(O2BIN) $T.o $T.bin 'UPX1' 'UPX9'
|
||||
$(BIN2H) $T.bin nrv2b_loader_small $@
|
||||
|
||||
l_t_n2d.h: l_tos.s
|
||||
$(CPP_M68K) -D__A68K__ -DNRV2D -o $T.i $<
|
||||
a68k -q -x $T.i
|
||||
$(O2BIN) $T.o $T.bin 'UPX1' 'UPX9'
|
||||
$(BIN2H) $T.bin nrv2d_loader $@
|
||||
|
||||
l_t_n2ds.h: l_tos.s
|
||||
$(CPP_M68K) -D__A68K__ -DNRV2D -DSMALL -o $T.i $<
|
||||
a68k -q -x $T.i
|
||||
$(O2BIN) $T.o $T.bin 'UPX1' 'UPX9'
|
||||
$(BIN2H) $T.bin nrv2d_loader_small $@
|
||||
|
||||
l_vxd.h: l_vxd.asm
|
||||
$(NASM) -f bin -o $T.bin $<
|
||||
$(BIN2H) $T.bin nrv_loader $@
|
||||
|
||||
l_wcle.h: l_wcle.asx
|
||||
$(NASM) -f bin -o $T.bin $<
|
||||
$(BIN2H) $T.bin nrv_loader $@
|
||||
|
||||
l_w32pe.h: l_w32pe.asx
|
||||
$(NASM) -f bin -o $T.bin $<
|
||||
$(BIN2H) $T.bin nrv_loader $@
|
||||
|
||||
|
||||
# /***********************************************************************
|
||||
# // linux rules (exec, elf, sh, sep)
|
||||
# ************************************************************************/
|
||||
|
||||
l_lx_n2b.h: l_lx_exec.c l_xe_n2b.o
|
||||
$(CC_LINUX) -DNRV2B -s -o $T.o -c $<
|
||||
ld -s -Map l_lx_n2b.map -o $T.bin \
|
||||
l_xe_n2b.o $T.o
|
||||
objcopy -S -R .comment -R .note $T.bin
|
||||
$(STRIPELF) $T.bin
|
||||
$(BRANDELF) $T.bin
|
||||
$(BIN2H) $T.bin linux_i386exec_nrv2b_loader $@
|
||||
|
||||
l_le_n2b.h: l_lx_elf.c l_6e_n2b.o l_lx_elf86.lds
|
||||
$(CC_LINUX) -DNRV2B -s -o $T.o -c $<
|
||||
ld -T l_lx_elf86.lds -s -Map $T.map -o $T.bin \
|
||||
l_6e_n2b.o $T.o
|
||||
objcopy -S -R .comment -R .note $T.bin
|
||||
$(SETFOLD) $T.bin 0x`nm l_6e_n2b.o | grep fold_begin`
|
||||
$(STRIPELF) $T.bin
|
||||
$(BRANDELF) $T.bin
|
||||
$(BIN2H) $T.bin linux_i386elf_nrv2b_loader $@
|
||||
|
||||
l_sh_n2b.h: l_lx_sh.c l_6h_n2b.o l_lx_sh86.lds
|
||||
$(CC_LINUX) -DNRV2B -s -o $T.o -c $<
|
||||
ld -T l_lx_sh86.lds -s -Map $T.map -o $T.bin \
|
||||
l_6h_n2b.o $T.o
|
||||
objcopy -S -R .comment -R .note $T.bin
|
||||
$(SETFOLD) $T.bin 0x`nm l_6h_n2b.o | grep fold_begin`
|
||||
$(STRIPELF) $T.bin
|
||||
$(BRANDELF) $T.bin
|
||||
$(BIN2H) $T.bin linux_i386sh_nrv2b_loader $@
|
||||
|
||||
l_xe_n2b.o: l_lx_exec86.asm
|
||||
$(NASM) -i$(UCL_I386)/ -f elf -dNRV2B -o $@ $<
|
||||
|
||||
l_6e_n2b.o: l_lx_elf86.asm
|
||||
$(NASM) -i$(UCL_I386)/ -f elf -dNRV2B -o $@ $<
|
||||
|
||||
l_6h_n2b.o: l_lx_sh86.asm
|
||||
$(NASM) -i$(UCL_I386)/ -f elf -dNRV2B -o $@ $<
|
||||
|
||||
|
||||
l_lx_n2d.h: l_lx_exec.c l_xe_n2d.o
|
||||
$(CC_LINUX) -DNRV2D -s -o $T.o -c $<
|
||||
ld -s -Map $T.map -o $T.bin \
|
||||
l_xe_n2d.o $T.o
|
||||
objcopy -S -R .comment -R .note $T.bin
|
||||
$(STRIPELF) $T.bin
|
||||
$(BRANDELF) $T.bin
|
||||
$(BIN2H) $T.bin linux_i386exec_nrv2d_loader $@
|
||||
|
||||
l_le_n2d.h: l_lx_elf.c l_6e_n2d.o l_lx_elf86.lds
|
||||
$(CC_LINUX) -DNRV2D -s -o $T.o -c $<
|
||||
ld -T l_lx_elf86.lds -s -Map $T.map -o $T.bin \
|
||||
l_6e_n2d.o $T.o
|
||||
objcopy -S -R .comment -R .note $T.bin
|
||||
$(SETFOLD) $T.bin 0x`nm l_6e_n2d.o | grep fold_begin`
|
||||
$(STRIPELF) $T.bin
|
||||
$(BRANDELF) $T.bin
|
||||
$(BIN2H) $T.bin linux_i386elf_nrv2d_loader $@
|
||||
|
||||
l_sh_n2d.h: l_lx_sh.c l_6h_n2d.o l_lx_sh86.lds
|
||||
$(CC_LINUX) -DNRV2D -s -o $T.o -c $<
|
||||
ld -T l_lx_sh86.lds -s -Map $T.map -o $T.bin \
|
||||
l_6h_n2d.o $T.o
|
||||
objcopy -S -R .comment -R .note $T.bin
|
||||
$(SETFOLD) $T.bin 0x`nm l_6h_n2d.o | grep fold_begin`
|
||||
$(STRIPELF) $T.bin
|
||||
$(BRANDELF) $T.bin
|
||||
$(BIN2H) $T.bin linux_i386sh_nrv2d_loader $@
|
||||
|
||||
l_xe_n2d.o: l_lx_exec86.asm
|
||||
$(NASM) -i$(UCL_I386)/ -f elf -dNRV2D -o $@ $<
|
||||
|
||||
l_6e_n2d.o: l_lx_elf86.asm
|
||||
$(NASM) -i$(UCL_I386)/ -f elf -dNRV2D -o $@ $<
|
||||
|
||||
l_6h_n2d.o: l_lx_sh86.asm
|
||||
$(NASM) -i$(UCL_I386)/ -f elf -dNRV2D -o $@ $<
|
||||
|
||||
l_lx_sep.o: l_lx_sep.c
|
||||
$(CC_LINUX) -c $<
|
||||
|
||||
upxb: l_lx_sep.o l_lx_sep86.asm
|
||||
$(NASM) -i$(UCL_I386)/ -f elf -dNRV2B -o upxb.o l_lx_sep86.asm
|
||||
ld -T l_lx_sep86.lds -Map upxb.map -o upxb upxb.o l_lx_sep.o
|
||||
objcopy -S -R .comment -R .note upxb
|
||||
$(STRIPELF) upxb
|
||||
$(BRANDELF) upxb
|
||||
|
||||
upxd: l_lx_sep.o l_lx_sep86.asm
|
||||
$(NASM) -i$(UCL_I386)/ -f elf -dNRV2D -o upxd.o l_lx_sep86.asm
|
||||
ld -T l_lx_sep86.lds -Map upxd.map -o upxd upxd.o l_lx_sep.o
|
||||
objcopy -S -R .comment -R .note upxd
|
||||
$(STRIPELF) upxd
|
||||
$(BRANDELF) upxd
|
||||
|
||||
# /***********************************************************************
|
||||
# // dependencies
|
||||
# ************************************************************************/
|
||||
|
||||
DEPS1 = header.ash macros.ash ident.ash ident_n.ash ident_s.ash
|
||||
DEPS2 = header.asy macros.asy
|
||||
|
||||
l_com.h: n2b_d16.asy $(DEPS2)
|
||||
l_djgpp2.h: n2b_d32.asy n2d_d32.asy $(DEPS2)
|
||||
l_exe.h: n2b_d8e.asy n2d_d8e.asy $(DEPS2)
|
||||
l_sys.h: n2b_d16.asy $(DEPS2)
|
||||
l_t_n2b.h: n2b_d.ash bits.ash $(DEPS1)
|
||||
l_t_n2bs.h: n2b_d.ash bits.ash $(DEPS1)
|
||||
l_t_n2d.h: n2d_d.ash bits.ash $(DEPS1)
|
||||
l_t_n2ds.h: n2d_d.ash bits.ash $(DEPS1)
|
||||
l_tmt.h: n2b_d32.asy n2d_d32.asy $(DEPS2)
|
||||
l_vxd.h: n2b_d32.asy n2d_d32.asy $(DEPS2)
|
||||
l_wcle.h: n2b_d32.asy n2d_d32.asy $(DEPS2)
|
||||
l_w32pe.h: n2b_d32.asy n2d_d32.asy $(DEPS2)
|
||||
|
||||
l_xe_n2b.o: n2b_d32.ash $(DEPS1)
|
||||
l_6e_n2b.o: n2b_d32.ash $(DEPS1)
|
||||
l_6h_n2b.o: n2b_d32.ash $(DEPS1)
|
||||
|
||||
l_xe_n2d.o: n2d_d32.ash $(DEPS1)
|
||||
l_6e_n2d.o: n2d_d32.ash $(DEPS1)
|
||||
l_6h_n2d.o: n2d_d32.ash $(DEPS1)
|
||||
|
||||
l_lx_n2b.h: linux.hh
|
||||
l_lx_n2d.h: linux.hh
|
||||
l_le_n2b.h: linux.hh
|
||||
l_le_n2d.h: linux.hh
|
||||
l_sh_n2b.h: linux.hh
|
||||
l_sh_n2d.h: linux.hh
|
||||
upxb: linux.hh
|
||||
upxd: linux.hh
|
||||
|
||||
.NOEXPORT:
|
||||
|
||||
# vi:nowrap
|
||||
Reference in New Issue
Block a user