1# Project: gvimext 2# Generates gvimext.dll with gcc. 3# To be used with MingW and Cygwin. 4# 5# Originally, the DLL base address was fixed: -Wl,--image-base=0x1C000000 6# Now it is allocated dymanically by the linker by evaluating all DLLs 7# already loaded in memory. The binary image contains as well information 8# for automatic pseudo-rebasing, if needed by the system. ALV 2004-02-29 9 10# If cross-compiling set this to yes, else set it to no 11CROSS = no 12#CROSS = yes 13# For the old MinGW 2.95 (the one you get e.g. with debian woody) 14# set the following variable to yes and check if the executables are 15# really named that way. 16# If you have a newer MinGW or you are using cygwin set it to no and 17# check also the executables 18MINGWOLD = no 19 20# Link against the shared versions of libgcc/libstdc++ by default. Set 21# STATIC_STDCPLUS to "yes" to link against static versions instead. 22STATIC_STDCPLUS=no 23#STATIC_STDCPLUS=yes 24 25# Note: -static-libstdc++ is not available until gcc 4.5.x. 26LDFLAGS += -shared 27ifeq (yes, $(STATIC_STDCPLUS)) 28LDFLAGS += -static-libgcc -static-libstdc++ 29endif 30 31ifeq ($(CROSS),yes) 32DEL = rm 33ifeq ($(MINGWOLD),yes) 34CXXFLAGS := -O2 -fvtable-thunks 35else 36CXXFLAGS := -O2 37endif 38else 39CXXFLAGS := -O2 40ifneq (sh.exe, $(SHELL)) 41DEL = rm 42else 43DEL = del 44endif 45endif 46# Set the default $(WINVER) to make it work with WinXP. 47ifndef WINVER 48WINVER = 0x0501 49endif 50CXX := $(CROSS_COMPILE)g++ 51WINDRES := $(CROSS_COMPILE)windres 52# this used to have --preprocessor, but it's no longer supported 53WINDRES_FLAGS = 54LIBS := -luuid -lgdi32 55RES := gvimext.res 56DEFFILE = gvimext_ming.def 57OBJ := gvimext.o 58 59DLL := gvimext.dll 60 61.PHONY: all all-before all-after clean clean-custom 62 63all: all-before $(DLL) all-after 64 65$(DLL): $(OBJ) $(RES) $(DEFFILE) 66 $(CXX) $(LDFLAGS) $(CXXFLAGS) -s -o $@ \ 67 -Wl,--enable-auto-image-base \ 68 -Wl,--enable-auto-import \ 69 -Wl,--whole-archive \ 70 $^ \ 71 -Wl,--no-whole-archive \ 72 $(LIBS) 73 74gvimext.o: gvimext.cpp 75 $(CXX) $(CXXFLAGS) -DFEAT_GETTEXT -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER) -c $? -o $@ 76 77$(RES): gvimext_ming.rc 78 $(WINDRES) $(WINDRES_FLAGS) --input-format=rc --output-format=coff -DMING $? -o $@ 79 80clean: clean-custom 81 -$(DEL) $(OBJ) $(RES) $(DLL) 82