1# 2# EDGE Makefile : WIN32 cross-compile 3# 4 5PROGRAM=edge.win32 6 7OBJDIR=obj_win32 8LIBDIR=lib_win32 9 10 11# ---------- 12 13# The compiler and compiler flags 14 15CC=i586-mingw32msvc-gcc 16CXX=i586-mingw32msvc-g++ 17 18CFLAGS=-O2 -ffast-math -fno-strict-aliasing -Wall 19 20CFLAGS += -I. 21 22 23LDFLAGS=-Wl,--warn-common 24 25LDFLAGS += -lmingw32 -lm 26 27 28# Operating System 29 30CFLAGS += -DWIN32 31 32 33# SDL 34 35CFLAGS += -I$(LIBDIR)/SDL-1.2.13/include 36 37LDFLAGS += -L$(LIBDIR)/SDL-1.2.13/lib 38LDFLAGS += -lSDLmain -lSDL.dll 39 40 41# OpenGL rendering 42 43CFLAGS += -I$(LIBDIR)/glew-1.4/include 44LDFLAGS += -L$(LIBDIR)/glew-1.4/lib 45LDFLAGS += -lGLEW -lopengl32 46 47 48# PNG, JPEG and ZLIB 49 50CFLAGS += -I$(LIBDIR)/libpng-1.2.12 51LDFLAGS += -L$(LIBDIR)/libpng-1.2.12 52LDFLAGS += -lpng 53 54CFLAGS += -I$(LIBDIR)/jpeg-6b 55LDFLAGS += -L$(LIBDIR)/jpeg-6b 56LDFLAGS += -ljpeg 57 58CFLAGS += -I$(LIBDIR)/zlib-1.2.3 59LDFLAGS += -L$(LIBDIR)/zlib-1.2.3 60LDFLAGS += -lz 61 62 63# OGG/Vorbis 64 65CFLAGS += -DUSE_OGG 66CFLAGS += -I$(LIBDIR)/libogg-1.1.3/include 67CFLAGS += -I$(LIBDIR)/libvorbis-1.1.2/include 68 69LDFLAGS += -L$(LIBDIR)/libogg-1.1.3/src 70LDFLAGS += -L$(LIBDIR)/libvorbis-1.1.2/lib 71LDFLAGS += -lvorbisfile -lvorbis -logg 72 73 74# glBSP 75 76CFLAGS_GLBSP=-O -Wall -fno-strict-aliasing 77 78CFLAGS_GLBSP += -DGLBSP_PLUGIN 79CFLAGS_GLBSP += -DINLINE_G=inline 80 81CFLAGS_GLBSP += -I$(LIBDIR)/zlib-1.2.3 82 83 84# Win32 libs 85 86LDFLAGS += -lwsock32 -lwinmm -lgdi32 -ldxguid -ldinput -mwindows 87 88 89# ---------- 90 91# Targets 92 93all: makedirs $(PROGRAM) 94 95stripped: $(PROGRAM) 96 i586-mingw32msvc-strip --strip-unneeded $(PROGRAM) 97 98clean: 99 rm -f $(PROGRAM) $(OBJDIR)/*/*.* 100 101halfclean: 102 rm -f $(PROGRAM) $(OBJDIR)/ddf/*.* $(OBJDIR)/edge/*.* 103 104makedirs: 105 mkdir -p $(OBJDIR)/coal 106 mkdir -p $(OBJDIR)/ddf 107 mkdir -p $(OBJDIR)/deh_edge 108 mkdir -p $(OBJDIR)/edge 109 mkdir -p $(OBJDIR)/epi 110 mkdir -p $(OBJDIR)/glbsp 111 mkdir -p $(OBJDIR)/timidity 112 113.PHONY: all stripped clean halfclean makedirs 114 115 116# ---------- Coal --------------- 117 118COAL_OBJS= \ 119 $(OBJDIR)/coal/c_compile.o \ 120 $(OBJDIR)/coal/c_execute.o \ 121 $(OBJDIR)/coal/c_memory.o 122 123$(OBJDIR)/coal/%.o: coal/%.cc 124 $(CXX) $(CFLAGS) -o $@ -c $< 125 126 127# --------- DDF ---------------- 128 129DDF_OBJS= \ 130 $(OBJDIR)/ddf/anim.o \ 131 $(OBJDIR)/ddf/attack.o \ 132 $(OBJDIR)/ddf/boom.o \ 133 $(OBJDIR)/ddf/colormap.o \ 134 $(OBJDIR)/ddf/font.o \ 135 $(OBJDIR)/ddf/game.o \ 136 $(OBJDIR)/ddf/image.o \ 137 $(OBJDIR)/ddf/language.o \ 138 $(OBJDIR)/ddf/level.o \ 139 $(OBJDIR)/ddf/line.o \ 140 $(OBJDIR)/ddf/main.o \ 141 $(OBJDIR)/ddf/playlist.o \ 142 $(OBJDIR)/ddf/sector.o \ 143 $(OBJDIR)/ddf/sfx.o \ 144 $(OBJDIR)/ddf/states.o \ 145 $(OBJDIR)/ddf/style.o \ 146 $(OBJDIR)/ddf/switch.o \ 147 $(OBJDIR)/ddf/thing.o \ 148 $(OBJDIR)/ddf/weapon.o 149 150$(OBJDIR)/ddf/%.o: ddf/%.cc 151 $(CXX) $(CFLAGS) -o $@ -c $< 152 153 154# ---------- Deh_EDGE --------------- 155 156DEHEDGE_OBJS= \ 157 $(OBJDIR)/deh_edge/ammo.o \ 158 $(OBJDIR)/deh_edge/attacks.o \ 159 $(OBJDIR)/deh_edge/buffer.o \ 160 $(OBJDIR)/deh_edge/convert.o \ 161 $(OBJDIR)/deh_edge/frames.o \ 162 $(OBJDIR)/deh_edge/info.o \ 163 $(OBJDIR)/deh_edge/main.o \ 164 $(OBJDIR)/deh_edge/system.o \ 165 $(OBJDIR)/deh_edge/util.o \ 166 $(OBJDIR)/deh_edge/wad.o \ 167 $(OBJDIR)/deh_edge/mobj.o \ 168 $(OBJDIR)/deh_edge/sounds.o \ 169 $(OBJDIR)/deh_edge/things.o \ 170 $(OBJDIR)/deh_edge/weapons.o \ 171 $(OBJDIR)/deh_edge/misc.o \ 172 $(OBJDIR)/deh_edge/text.o \ 173 $(OBJDIR)/deh_edge/storage.o \ 174 $(OBJDIR)/deh_edge/patch.o \ 175 $(OBJDIR)/deh_edge/rscript.o 176 177$(OBJDIR)/deh_edge/%.o: deh_edge/%.cc 178 $(CXX) $(CFLAGS) -DDEH_EDGE_PLUGIN -o $@ -c $< 179 180 181# ---------- EDGE --------------- 182 183EDGE_OBJS= \ 184 $(OBJDIR)/edge/i_main.o \ 185 $(OBJDIR)/edge/i_ctrl.o \ 186 $(OBJDIR)/edge/i_video.o \ 187 $(OBJDIR)/edge/i_sound.o \ 188 $(OBJDIR)/edge/i_net.o \ 189 $(OBJDIR)/edge/am_map.o \ 190 $(OBJDIR)/edge/con_con.o \ 191 $(OBJDIR)/edge/con_main.o \ 192 $(OBJDIR)/edge/con_link.o \ 193 $(OBJDIR)/edge/con_var.o \ 194 $(OBJDIR)/edge/e_input.o \ 195 $(OBJDIR)/edge/e_main.o \ 196 $(OBJDIR)/edge/e_player.o \ 197 $(OBJDIR)/edge/f_finale.o \ 198 $(OBJDIR)/edge/f_interm.o \ 199 $(OBJDIR)/edge/g_game.o \ 200 $(OBJDIR)/edge/hu_draw.o \ 201 $(OBJDIR)/edge/hu_font.o \ 202 $(OBJDIR)/edge/hu_stuff.o \ 203 $(OBJDIR)/edge/hu_style.o \ 204 $(OBJDIR)/edge/l_glbsp.o \ 205 $(OBJDIR)/edge/l_deh.o \ 206 $(OBJDIR)/edge/m_argv.o \ 207 $(OBJDIR)/edge/m_bbox.o \ 208 $(OBJDIR)/edge/m_cheat.o \ 209 $(OBJDIR)/edge/m_math.o \ 210 $(OBJDIR)/edge/m_menu.o \ 211 $(OBJDIR)/edge/m_misc.o \ 212 $(OBJDIR)/edge/m_option.o \ 213 $(OBJDIR)/edge/m_netgame.o \ 214 $(OBJDIR)/edge/m_random.o \ 215 $(OBJDIR)/edge/n_bcast.o \ 216 $(OBJDIR)/edge/n_reliable.o \ 217 $(OBJDIR)/edge/n_network.o \ 218 $(OBJDIR)/edge/p_action.o \ 219 $(OBJDIR)/edge/p_blockmap.o \ 220 $(OBJDIR)/edge/p_bot.o \ 221 $(OBJDIR)/edge/p_enemy.o \ 222 $(OBJDIR)/edge/p_inter.o \ 223 $(OBJDIR)/edge/p_lights.o \ 224 $(OBJDIR)/edge/p_map.o \ 225 $(OBJDIR)/edge/p_maputl.o \ 226 $(OBJDIR)/edge/p_mobj.o \ 227 $(OBJDIR)/edge/p_plane.o \ 228 $(OBJDIR)/edge/p_setup.o \ 229 $(OBJDIR)/edge/p_sight.o \ 230 $(OBJDIR)/edge/p_spec.o \ 231 $(OBJDIR)/edge/p_switch.o \ 232 $(OBJDIR)/edge/p_tick.o \ 233 $(OBJDIR)/edge/p_user.o \ 234 $(OBJDIR)/edge/p_forces.o \ 235 $(OBJDIR)/edge/p_telept.o \ 236 $(OBJDIR)/edge/p_weapon.o \ 237 $(OBJDIR)/edge/rad_act.o \ 238 $(OBJDIR)/edge/rad_pars.o \ 239 $(OBJDIR)/edge/rad_trig.o \ 240 $(OBJDIR)/edge/r_draw.o \ 241 $(OBJDIR)/edge/r_shader.o \ 242 $(OBJDIR)/edge/r_render.o \ 243 $(OBJDIR)/edge/r_effects.o \ 244 $(OBJDIR)/edge/r_main.o \ 245 $(OBJDIR)/edge/r_occlude.o \ 246 $(OBJDIR)/edge/m_logo.o \ 247 $(OBJDIR)/edge/r_things.o \ 248 $(OBJDIR)/edge/r_units.o \ 249 $(OBJDIR)/edge/r_wipe.o \ 250 $(OBJDIR)/edge/r_misc.o \ 251 $(OBJDIR)/edge/r_sky.o \ 252 $(OBJDIR)/edge/r_colormap.o \ 253 $(OBJDIR)/edge/r_modes.o \ 254 $(OBJDIR)/edge/r_md2.o \ 255 $(OBJDIR)/edge/r_image.o \ 256 $(OBJDIR)/edge/r_doomtex.o \ 257 $(OBJDIR)/edge/r_texgl.o \ 258 $(OBJDIR)/edge/s_blit.o \ 259 $(OBJDIR)/edge/s_cache.o \ 260 $(OBJDIR)/edge/s_sound.o \ 261 $(OBJDIR)/edge/s_music.o \ 262 $(OBJDIR)/edge/s_ogg.o \ 263 $(OBJDIR)/edge/s_timid.o \ 264 $(OBJDIR)/edge/sv_chunk.o \ 265 $(OBJDIR)/edge/sv_glob.o \ 266 $(OBJDIR)/edge/sv_level.o \ 267 $(OBJDIR)/edge/sv_load.o \ 268 $(OBJDIR)/edge/sv_main.o \ 269 $(OBJDIR)/edge/sv_misc.o \ 270 $(OBJDIR)/edge/sv_mobj.o \ 271 $(OBJDIR)/edge/sv_play.o \ 272 $(OBJDIR)/edge/sv_save.o \ 273 $(OBJDIR)/edge/w_flat.o \ 274 $(OBJDIR)/edge/w_model.o \ 275 $(OBJDIR)/edge/w_sprite.o \ 276 $(OBJDIR)/edge/w_texture.o \ 277 $(OBJDIR)/edge/w_wad.o \ 278 $(OBJDIR)/edge/z_zone.o \ 279 $(OBJDIR)/edge/vm_coal.o \ 280 $(OBJDIR)/edge/vm_hud.o \ 281 $(OBJDIR)/edge/vm_player.o \ 282 $(OBJDIR)/edge/w32_music.o \ 283 $(OBJDIR)/edge/w32_mus.o \ 284 $(OBJDIR)/edge/w32_net.o \ 285 $(OBJDIR)/edge/w32_res.o \ 286 $(OBJDIR)/edge/w32_system.o 287 288$(OBJDIR)/edge/w32_res.o: src/w32_res.rc 289 i586-mingw32msvc-windres $^ -o $@ 290 291$(OBJDIR)/edge/%.o: src/%.cc 292 $(CXX) $(CFLAGS) -o $@ -c $< 293 294 295# ---------- EPI --------------- 296 297EPI_OBJS= \ 298 $(OBJDIR)/epi/arrays.o \ 299 $(OBJDIR)/epi/bytearray.o \ 300 $(OBJDIR)/epi/exe_path.o \ 301 $(OBJDIR)/epi/file.o \ 302 $(OBJDIR)/epi/filesystem.o \ 303 $(OBJDIR)/epi/file_memory.o \ 304 $(OBJDIR)/epi/file_sub.o \ 305 $(OBJDIR)/epi/image_data.o \ 306 $(OBJDIR)/epi/image_hq2x.o \ 307 $(OBJDIR)/epi/image_jpeg.o \ 308 $(OBJDIR)/epi/image_png.o \ 309 $(OBJDIR)/epi/image_tga.o \ 310 $(OBJDIR)/epi/math_angle.o \ 311 $(OBJDIR)/epi/math_bbox.o \ 312 $(OBJDIR)/epi/math_color.o \ 313 $(OBJDIR)/epi/math_crc.o \ 314 $(OBJDIR)/epi/math_md5.o \ 315 $(OBJDIR)/epi/math_oddity.o \ 316 $(OBJDIR)/epi/math_matrix.o \ 317 $(OBJDIR)/epi/math_vector.o \ 318 $(OBJDIR)/epi/math_random.o \ 319 $(OBJDIR)/epi/mersenne_twist.o \ 320 $(OBJDIR)/epi/mus_2_midi.o \ 321 $(OBJDIR)/epi/path.o \ 322 $(OBJDIR)/epi/str_format.o \ 323 $(OBJDIR)/epi/sound_data.o \ 324 $(OBJDIR)/epi/sound_gather.o \ 325 $(OBJDIR)/epi/sound_wav.o \ 326 $(OBJDIR)/epi/timestamp.o \ 327 $(OBJDIR)/epi/utility.o \ 328 $(OBJDIR)/epi/epi_win32.o \ 329 $(OBJDIR)/epi/filesystem_win32.o 330 331$(OBJDIR)/epi/%.o: epi/%.cc 332 $(CXX) $(CFLAGS) -o $@ -c $< 333 334 335# ---------- glBSP --------------- 336 337GLBSP_OBJS= \ 338 $(OBJDIR)/glbsp/analyze.o \ 339 $(OBJDIR)/glbsp/blockmap.o \ 340 $(OBJDIR)/glbsp/glbsp.o \ 341 $(OBJDIR)/glbsp/level.o \ 342 $(OBJDIR)/glbsp/node.o \ 343 $(OBJDIR)/glbsp/reject.o \ 344 $(OBJDIR)/glbsp/seg.o \ 345 $(OBJDIR)/glbsp/system.o \ 346 $(OBJDIR)/glbsp/util.o \ 347 $(OBJDIR)/glbsp/wad.o 348 349$(OBJDIR)/glbsp/%.o: glbsp/src/%.c 350 $(CC) $(CFLAGS_GLBSP) -o $@ -c $< 351 352 353# ---------- Timidity --------------- 354 355TIMIDITY_OBJS= \ 356 $(OBJDIR)/timidity/common.o \ 357 $(OBJDIR)/timidity/instrum.o \ 358 $(OBJDIR)/timidity/mix.o \ 359 $(OBJDIR)/timidity/playmidi.o \ 360 $(OBJDIR)/timidity/loadmidi.o \ 361 $(OBJDIR)/timidity/resample.o \ 362 $(OBJDIR)/timidity/tables.o \ 363 $(OBJDIR)/timidity/timidity.o 364 365$(OBJDIR)/timidity/%.o: timidity/%.cc 366 $(CXX) $(CFLAGS) -o $@ -c $< 367 368 369 370# ---------- FINAL LINK STEP ----------- 371 372$(PROGRAM) : $(COAL_OBJS) \ 373 $(DDF_OBJS) \ 374 $(DEHEDGE_OBJS) \ 375 $(EDGE_OBJS) \ 376 $(EPI_OBJS) \ 377 $(GLBSP_OBJS) \ 378 $(TIMIDITY_OBJS) 379 $(CXX) $(CFLAGS) -o $@ $^ $(LDFLAGS) 380 381 382#--- editor settings ------------ 383# vi:ts=8:sw=8:noexpandtab 384