-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathMakefile.win32
232 lines (197 loc) · 5.93 KB
/
Makefile.win32
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
###################################################################
#
## Makefile for building GeoIP stuff (Win32 version - gnu make)
## To build the binaries you need awk, GNU make and MingW32 gcc
## or Metrowerks CodeWarrior CommandlineTools.
## Usage: make -f Makefile.win32 [all|dist|clean|distclean]
##
## hacked by: Guenter Knauf
#
###################################################################
# Edit the path below to point to your zlib sources and libs.
ifndef ZLIBSDK
ZLIBSDK = d:/projects/mingw32/zlib-1.2.3
endif
ifndef DISTDIR
DISTDIR = GeoIP-$(GEOIP_VERSION_STR)-bin-w32
endif
ARCHIVE = $(DISTDIR).zip
# Edit the vars below to change EXE target settings.
TARGETS := $(patsubst apps/%.c,%.exe,$(wildcard apps/*.c))
DESCR = $(subst .rc,,$(notdir $@)) $(GEOIP_VERSION_STR)
COMPANY = MaxMind LLC
COPYR = © 2003-2006 MaxMind LLC All Rights Reserved.
WWWURL = http://www.maxmind.com/app/c
LICENSE = Licensed under LGPL
ICON = geoip.ico
DATADIR = c:/GeoIP
CONFDIR = c:/GeoIP
# Comment the line below if you dont want to link with the static libz.lib.
LSTATIC = 1
# must be equal to DEBUG or NDEBUG
DB = NDEBUG
# DB = DEBUG
# Optimization: -O<n> or debugging: -g
ifeq ($(DB),NDEBUG)
OPT = -O2
OBJDIR = release
else
OPT = -g
OBJDIR = debug
endif
OBJLIB = lib-$(OBJDIR)
# Include the version info retrieved from header.
-include $(OBJDIR)/version.inc
# Global tools and toolflags used with all compilers.
ZIP = zip -qzR9
CP = cp -afv
MV = mv -fv
# RM = rm -f
RE = reimp -d
DLLTOOL = dlltool
DTFLAGS = -k
# The following line defines your compiler.
ifdef METROWERKS
CC = mwcc
else
CC = gcc
endif
# Global flags for all compilers
CFLAGS = $(OPT) -D$(DB) -D_WIN32
# -nostdinc
CFLAGS += -DHAVE_STDINT_H
CFLAGS += -DGEOIPDATADIR=\"$(DATADIR)\"
CFLAGS += -DSYSCONFDIR=\"$(CONFDIR)\"
ifeq ($(CC),mwcc)
LD = mwld
LDFLAGS = -nostdlib
LIBPATH = -lr "$(METROWERKS)/MSL" -lr "$(METROWERKS)/Win32-x86 Support/Libraries"
CWLIBS = -lMSL_Runtime_x86.lib -lMSL_C_x86.lib -lMSL_Extras_x86.lib
LDLIBS = -lkernel32.lib -luser32.lib $(CWLIBS)
AR = mwld
ARFLAGS = -type library -w nocmdline $(OBJDIR)/*.o -o
LIBEXT = lib
RC = mwwinrc
CFLAGS += -nostdinc
CFLAGS += -msgstyle gcc -gccinc -opt nointrinsics -proc 586
CFLAGS += -relax_pointers
#CFLAGS += -w on
CFLAGS += -ir "$(METROWERKS)/MSL" -ir "$(METROWERKS)/Win32-x86 Support/Headers"
else
LD = gcc
LDFLAGS = -s
AR = ar
ARFLAGS = -cq
LIBEXT = a
RC = windres
RCFLAGS = -I rc -O coff -i
CFLAGS += -Wall -Wno-unused # -Wno-format #-pedantic
endif
INCLUDES += -I./libGeoIP
INCLUDES += -I$(ZLIBSDK)
CFLAGS += $(INCLUDES)
LDLIBS += -lwsock32
LIBPATH += -L$(ZLIBSDK)
ifdef LSTATIC
LDLIBS += -lz
else
LDLIBS += -lzdll
endif
ifeq ($(findstring linux,$(OSTYPE)),linux)
DL = '
#-include $(NDKBASE)/nlmconv/ncpfs.inc
endif
vpath %.c ./apps ./libGeoIP
LIBOBJS = $(OBJLIB)/GeoIP.o $(OBJLIB)/GeoIPCity.o
UPDOBJS = $(OBJLIB)/GeoIPUpdate.o $(OBJLIB)/md5.o
LIBOBJS += $(UPDOBJS)
.PRECIOUS: $(OBJLIB)/%.o $(OBJDIR)/%.o $(OBJDIR)/%.rc
all: prebuild $(TARGETS)
prebuild: $(OBJLIB) $(OBJDIR) $(OBJDIR)/version.inc
dist: $(DISTDIR) all $(DISTDIR)/readme_bin.txt
@$(CP) *.exe $(DISTDIR)
@$(CP) Changelog $(DISTDIR)
@$(CP) README $(DISTDIR)
@$(CP) conf/GeoIP.conf.default $(DISTDIR)
@$(CP) data/GeoIP.dat $(DISTDIR)
@echo Creating $(ARCHIVE)
@$(ZIP) $(ARCHIVE) $(DISTDIR)/* < $(DISTDIR)/readme_bin.txt
clean:
-$(RM) -r $(OBJDIR) $(OBJLIB)
-$(RM) $(TARGETS)
distclean:
-$(RM) -r $(DISTDIR)
-$(RM) $(ARCHIVE)
%.exe: $(OBJDIR)/%.res $(LIBOBJS) $(OBJDIR)/%.o
@echo Linking $@
@-$(RM) $@
$(LD) $(LDFLAGS) -o $@ $^ $(LIBPATH) $(LDLIBS)
# $(LD) $(LDFLAGS) $(LIBPATH) $(LIBFILES) -o $@ $^
$(DISTDIR):
@mkdir $@
$(OBJDIR):
@mkdir $@
$(OBJLIB):
@mkdir $@
$(OBJDIR)/%.o: %.c
# @echo Compiling $<
$(CC) $(CFLAGS) -c $< -o $@
$(OBJLIB)/%.o: %.c
# @echo Compiling $<
$(CC) $(CFLAGS) -c $< -o $@
$(OBJDIR)/version.inc: configure.in $(OBJDIR)
@echo Creating $@
@awk -f get_ver.awk $< > $@
$(OBJDIR)/%.res: $(OBJDIR)/%.rc
@echo Creating $@
@$(RC) $(RCFLAGS) $< -o $@
$(OBJDIR)/%.rc: Makefile.win32
@echo 1 VERSIONINFO > $@
@echo FILEVERSION $(GEOIP_VERSION),0 >> $@
@echo PRODUCTVERSION $(GEOIP_VERSION),0 >> $@
@echo FILEFLAGSMASK 0x3fL >> $@
@echo FILEOS 0x40004L >> $@
@echo FILEFLAGS 0x0L >> $@
@echo FILETYPE 0x1L >> $@
@echo FILESUBTYPE 0x0L >> $@
@echo BEGIN >> $@
@echo BLOCK "StringFileInfo" >> $@
@echo BEGIN >> $@
@echo BLOCK "040904E4" >> $@
@echo BEGIN >> $@
@echo VALUE "LegalCopyright","$(COPYR)\0" >> $@
ifdef COMPANY
@echo VALUE "CompanyName","$(COMPANY)\0" >> $@
endif
ifdef LICENSE
@echo VALUE "License","$(LICENSE)\0" >> $@
endif
@echo VALUE "ProductName","$(basename $(notdir $@))\0" >> $@
@echo VALUE "ProductVersion","$(GEOIP_VERSION_STR)\0" >> $@
@echo VALUE "FileDescription","$(DESCR)\0" >> $@
@echo VALUE "FileVersion","$(GEOIP_VERSION_STR)\0" >> $@
@echo VALUE "InternalName","$(basename $(notdir $@))\0" >> $@
@echo VALUE "OriginalFilename","$(basename $(notdir $@)).exe\0" >> $@
@echo VALUE "WWW","$(WWWURL)\0" >> $@
@echo END >> $@
@echo END >> $@
@echo BLOCK "VarFileInfo" >> $@
@echo BEGIN >> $@
@echo VALUE "Translation", 0x409, 1252 >> $@
@echo END >> $@
@echo END >> $@
ifdef ICON
@echo 10 ICON DISCARDABLE "$(ICON)" >> $@
endif
$(DISTDIR)/readme_bin.txt: Makefile.win32
@echo Creating $@
@echo $(DL)This is a binary distribution for Win32 platform.$(DL) > $@
@echo $(DL)GeoIP version $(GEOIP_VERSION_STR)$(DL) >> $@
ifndef LSTATIC
@echo $(DL)These binaries depend on zlib1.dll in the search path!$(DL) >> $@
endif
@echo $(DL)Please download the complete GeoIP package for$(DL) >> $@
@echo $(DL)any further documentation:$(DL) >> $@
@echo $(DL)$(WWWURL)$(DL) >> $@
info:
@echo Targets to build: $(TARGETS)