mirror of
https://github.com/upx/upx
synced 2025-09-28 19:06:07 +08:00
103 lines
3.0 KiB
Makefile
103 lines
3.0 KiB
Makefile
#
|
|
# UPX Makefile - needs GNU make 3.80 or better
|
|
#
|
|
|
|
MAKEFLAGS += -rR
|
|
.SUFFIXES:
|
|
export SHELL = /bin/sh
|
|
override e = $($1) $(EXTRA_$1) $(upx_$1) $($(basename $(notdir $@)).$1)
|
|
|
|
srcdir ?= $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))
|
|
ifneq ($(srcdir),./)
|
|
srcdir := $(shell echo '$(srcdir)' | sed 's,/*$$,,')
|
|
##$(info Info: using VPATH . $(srcdir))
|
|
VPATH := . $(srcdir)
|
|
endif
|
|
|
|
ifeq ($(CXX),)
|
|
CXX = g++
|
|
endif
|
|
ifeq ($(firstword $(CXX)),g++)
|
|
USE_GNUC ?= 1
|
|
endif
|
|
ifeq ($(USE_GNUC),1)
|
|
CXXFLAGS += -MMD
|
|
ifeq ($(DEBUG),1)
|
|
CXXFLAGS += -O0 -g
|
|
else
|
|
CXXFLAGS += -O2
|
|
endif
|
|
CXXFLAGS += -Wall -W -Wcast-align -Wcast-qual -Wpointer-arith -Wwrite-strings -Werror
|
|
##CXXFLAGS += -Wshadow
|
|
endif
|
|
CPPFLAGS += $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES)
|
|
CXXLD ?= $(CXX)
|
|
|
|
exeext ?= .out
|
|
libext ?= .a
|
|
objext ?= .o
|
|
|
|
upx_SOURCES := $(wildcard $(srcdir)/*.cpp)
|
|
upx_OBJECTS := $(notdir $(upx_SOURCES:.cpp=$(objext)))
|
|
|
|
# we need UCL and zlib - you can set envvar UPX_UCLDIR
|
|
ifneq ($(wildcard $(UPX_UCLDIR)/include/ucl/ucl.h),)
|
|
INCLUDES += -I$(UPX_UCLDIR)/include
|
|
LIBS += $(addprefix -L,$(dir $(wildcard $(UPX_UCLDIR)/libucl$(libext) $(UPX_UCLDIR)/src/.libs/libucl$(libext))))
|
|
endif
|
|
LIBS += -lucl -lz
|
|
# you should set envvar UPX_LZMADIR to point to your unpacked lzma443.tar.bz2
|
|
ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),)
|
|
DEFS += -DWITH_LZMA
|
|
INCLUDES += -I$(UPX_LZMADIR)
|
|
endif
|
|
# you should set envvar UPX_LUADIR to point to your unpacked lua-5.1.1.tar.gz
|
|
ifneq ($(wildcard $(UPX_LUADIR)/src/lua.h),)
|
|
DEFS += -DWITH_LUA
|
|
upx_SOURCES_LUA := $(wildcard $(UPX_LUADIR)/src/*.c)
|
|
upx_SOURCES_LUA := $(filter-out %lua.c, $(upx_SOURCES_LUA))
|
|
upx_SOURCES_LUA := $(filter-out %luac.c, $(upx_SOURCES_LUA))
|
|
upx_OBJECTS_LUA := $(notdir $(upx_SOURCES_LUA:.c=$(objext)))
|
|
upx_OBJECTS_LUA := $(addprefix lua_,$(upx_OBJECTS_LUA))
|
|
upx_OBJECTS += $(upx_OBJECTS_LUA)
|
|
else
|
|
##$(error please set UPX_LUADIR)
|
|
endif
|
|
|
|
|
|
all: upx$(exeext)
|
|
|
|
upx$(exeext): $(upx_OBJECTS) $(upx_DEPENDENCIES)
|
|
$($(notdir $@).PRE_LINK_STEP)
|
|
$(strip $(CXXLD) $(call e,CPPFLAGS) $(call e,CXXFLAGS) $(call e,LDFLAGS) -o $@ $(upx_OBJECTS) $(call e,LDADD) $(call e,LIBS))
|
|
$($(notdir $@).POST_LINK_STEP)
|
|
|
|
%.o : %.cpp
|
|
$(strip $(CXX) $(call e,CPPFLAGS) $(call e,CXXFLAGS) -o $@ -c $<)
|
|
|
|
$(upx_OBJECTS_LUA) : lua_%.o : $(UPX_LUADIR)/src/%.c
|
|
$(strip $(CXX) $(call e,CPPFLAGS) $(call e,CXXFLAGS) -o $@ -c $<)
|
|
|
|
|
|
ifeq ($(USE_GNUC),1)
|
|
##compress_lzma$(objext) : CXXFLAGS += -O3 -fomit-frame-pointer
|
|
compress_lzma$(objext) : CXXFLAGS += -Wno-cast-qual
|
|
compress_lzma$(objext) : CXXFLAGS += -Wno-non-virtual-dtor
|
|
compress_lzma$(objext) : CXXFLAGS += -Wno-shadow
|
|
compress_lzma$(objext) : CXXFLAGS += -Wno-unused
|
|
##compress_lzma$(objext) : CXXFLAGS += -Wno-error
|
|
endif
|
|
|
|
ifeq ($(USE_GNUC),1)
|
|
$(upx_OBJECTS_LUA) : CXXFLAGS += -Wno-cast-align
|
|
$(upx_OBJECTS_LUA) : CXXFLAGS += -Wno-cast-qual
|
|
$(upx_OBJECTS_LUA) : CXXFLAGS += -Wno-error
|
|
endif
|
|
|
|
|
|
mostlyclean clean distclean maintainer-clean:
|
|
rm -f *.d *.map *.o *.obj *.res upx.exe upx.out upx.ttp upx$(exeext)
|
|
|
|
-include *.d
|
|
.PHONY: all mostlyclean clean distclean maintainer-clean
|