1--- Makefile.orig	2010-04-24 23:29:15.000000000 +0200
2+++ Makefile	2010-05-21 21:29:25.000000000 +0200
3@@ -561,45 +561,16 @@
4
5 ifeq ($(PLATFORM),freebsd)
6
7-  ifneq (,$(findstring alpha,$(shell uname -m)))
8-    ARCH=axp
9-  else #default to i386
10-    ARCH=i386
11-  endif #alpha test
12-
13-  BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \
14-    -DUSE_ICON
15+  # flags
16+  BASE_CFLAGS = $(shell env MACHINE_ARCH=$(ARCH) make -f /dev/null -VCFLAGS) \
17+    -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \
18+    -DUSE_ICON -DMAP_ANONYMOUS=MAP_ANON
19   CLIENT_CFLAGS = $(SDL_CFLAGS)
20   SERVER_CFLAGS =
21+  HAVE_VM_COMPILED = true
22
23-  ifeq ($(USE_OPENAL),1)
24-    CLIENT_CFLAGS += -DUSE_OPENAL
25-    ifeq ($(USE_OPENAL_DLOPEN),1)
26-      CLIENT_CFLAGS += -DUSE_OPENAL_DLOPEN
27-    endif
28-  endif
29-
30-  ifeq ($(USE_CODEC_VORBIS),1)
31-    CLIENT_CFLAGS += -DUSE_CODEC_VORBIS
32-  endif
33-
34-  OPTIMIZEVM = -O3 -funroll-loops -fomit-frame-pointer
35-
36-  ifeq ($(ARCH),axp)
37-    BASE_CFLAGS += -DNO_VM_COMPILED
38-    OPTIMIZEVM += -fexpensive-optimizations
39-  else
40-  ifeq ($(ARCH),i386)
41-    OPTIMIZEVM += -mtune=pentiumpro \
42-      -march=pentium -pipe -falign-loops=2 -falign-jumps=2 \
43-      -falign-functions=2 -funroll-loops -fstrength-reduce
44-    HAVE_VM_COMPILED=true
45-  else
46-    BASE_CFLAGS += -DNO_VM_COMPILED
47-  endif
48-  endif
49-
50-  OPTIMIZE = $(OPTIMIZEVM) -ffast-math
51+  OPTIMIZEVM = -O3 -funroll-loops -fomit-frame-pointer -ffast-math
52+  OPTIMIZE = $(OPTIMIZEVM)
53
54   SHLIBEXT=so
55   SHLIBCFLAGS=-fPIC
56@@ -613,17 +584,40 @@
57
58   CLIENT_LIBS += $(SDL_LIBS) -lGL
59
60+  # optional features/libraries
61   ifeq ($(USE_OPENAL),1)
62-    ifneq ($(USE_OPENAL_DLOPEN),1)
63+    CLIENT_CFLAGS += -DUSE_OPENAL
64+    ifeq ($(USE_OPENAL_DLOPEN),1)
65+      CLIENT_CFLAGS += -DUSE_OPENAL_DLOPEN
66       CLIENT_LIBS += $(THREAD_LIBS) -lopenal
67     endif
68   endif
69
70+  ifeq ($(USE_CURL),1)
71+    CLIENT_CFLAGS += -DUSE_CURL
72+    ifeq ($(USE_CURL_DLOPEN),1)
73+      CLIENT_CFLAGS += -DUSE_CURL_DLOPEN
74+      CLIENT_LIBS += -lcurl
75+    endif
76+  endif
77+
78   ifeq ($(USE_CODEC_VORBIS),1)
79-    ifeq ($(PLATFORM),mingw32)
80-      CLIENT_LIBS += $(LIBSDIR)/win32/libvorbisfile.a $(LIBSDIR)/win32/libvorbis.a $(LIBSDIR)/win32/libogg.a
81-    else
82-      CLIENT_LIBS += -lvorbisfile -lvorbis -logg
83+    CLIENT_CFLAGS += -DUSE_CODEC_VORBIS
84+  endif
85+
86+  ifeq ($(USE_CODEC_VORBIS),1)
87+    CLIENT_LIBS += -lvorbisfile -lvorbis -logg
88+  endif
89+
90+  # cross-compiling tweaks
91+  ifeq ($(ARCH),i386)
92+    ifeq ($(CROSS_COMPILING),1)
93+      BASE_CFLAGS += -m32
94+    endif
95+  endif
96+  ifeq ($(ARCH),amd64)
97+    ifeq ($(CROSS_COMPILING),1)
98+      BASE_CFLAGS += -m64
99     endif
100   endif
101
102@@ -1555,6 +1549,9 @@
103   ifeq ($(ARCH),x86_64)
104     Q3OBJ += $(B)/client/vm_x86_64.o $(B)/client/vm_x86_64_assembler.o
105   endif
106+  ifeq ($(ARCH),amd64)
107+    Q3OBJ += $(B)/client/vm_x86_64.o $(B)/client/vm_x86_64_assembler.o
108+  endif
109   ifeq ($(ARCH),ppc)
110     Q3OBJ += $(B)/client/vm_powerpc.o $(B)/client/vm_powerpc_asm.o
111   endif
112@@ -1720,6 +1717,9 @@
113   ifeq ($(ARCH),x86_64)
114     Q3DOBJ += $(B)/ded/vm_x86_64.o $(B)/ded/vm_x86_64_assembler.o
115   endif
116+  ifeq ($(ARCH),amd64)
117+    Q3DOBJ += $(B)/ded/vm_x86_64.o $(B)/ded/vm_x86_64_assembler.o
118+  endif
119   ifeq ($(ARCH),ppc)
120     Q3DOBJ += $(B)/ded/vm_powerpc.o $(B)/ded/vm_powerpc_asm.o
121   endif
122