From f19a02ed3e4b852bcfb03c15209824db71a7d234 Mon Sep 17 00:00:00 2001 From: Spoike Date: Sun, 23 Jan 2005 17:44:11 +0000 Subject: [PATCH] One makefile to rule them all... Well, replace them all at least. This one detects your target and uses SDL if linux or mingw fail. git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@821 fc73d0e0-1445-4013-8a0c-d673dee63da5 --- engine/Makefile | 551 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 551 insertions(+) create mode 100644 engine/Makefile diff --git a/engine/Makefile b/engine/Makefile new file mode 100644 index 00000000..b855070e --- /dev/null +++ b/engine/Makefile @@ -0,0 +1,551 @@ +CC=gcc + +CPUOPTIMIZATIONS= + +BASE_DIR=. + +ifeq ($(FTE_TARGET),) #user didn't specify prefered target + ifneq ($(shell gcc -v 2>&1 | grep mingw),) + FTE_TARGET=win32 + else + ifeq ($(shell uname),Linux) + FTE_TARGET=linux + #else I've no idea what it is you're running + endif + endif + + FTE_TARGET ?= sdl #so go for sdl. +endif + + +CLIENT_DIR=$(BASE_DIR)/client +GL_DIR=$(BASE_DIR)/gl +SW_DIR=$(BASE_DIR)/sw +SERVER_DIR=$(BASE_DIR)/server +COMMON_DIR=$(BASE_DIR)/common +NQPROT_DIR=$(BASE_DIR)/nqnet +HTTP_DIR=$(BASE_DIR)/http +LIBS_DIR=$(BASE_DIR)/libs +PROGS_DIR=$(BASE_DIR)/qclib +SNDCODEC_DIR=$(BASE_DIR)/sndcodec +MP3_DIR=$(BASE_DIR)/../mp3/libmad +QUX_DIR=$(BASE_DIR)/qux + +RELEASE_DIR=$(BASE_DIR)/release +DEBUG_DIR=$(BASE_DIR)/debug + +DO_CC=$(CC) $(BASE_CFLAGS) $(CFLAGS) -o $@ -c $< +ifeq ($(USEASM),true) + ifdef windir + DO_AS=$(CC) $(BASE_CFLAGS) $(CFLAGS) -x assembler-with-cpp -o $@ -c $< + else + DO_AS=$(CC) $(BASE_CFLAGS) $(CFLAGS) -x assembler-with-cpp -DELF -o $@ -c $< + endif +endif +BASELDFLAGS=-lm +GLXLDFLAGS=-L/usr/X11R6/lib -lX11 -lXext -lpng -ljpeg -lXxf86vm +GLSLDFLAGS=-L/usr/X11R6/lib -lMesaGL -lglide -lvga +XLDFLAGS=-L/usr/X11R6/lib -lX11 -lXext -lpng -ljpeg +SLDFLAGS=-lvga + +ifeq ($(USEASM),true) + COMMON_ASM_OBJS = \ + worlda.o \ + math.o + + CLIENT_ASM_OBJS = \ + snd_mixa.o + + SOFTWARE_ASM_OBJS = \ + r_aclipa.o \ + r_aliasa.o \ + r_drawa.o \ + r_edgea.o \ + r_varsa.o \ + d_draw.o \ + d_draw16.o \ + d_parta.o \ + d_polysa.o \ + d_scana.o \ + d_spr8.o \ + d_varsa.o \ + surf16.o \ + surf8.o + +else + BASE_ASM_CFLAGS = -DNOASM +endif + +BASE_CFLAGS=$(BASE_ASM_CFLAGS) -Wall -Dstrnicmp=strncasecmp -Dstricmp=strcasecmp -I$(CLIENT_DIR) -I$(SERVER_DIR) -I$(COMMON_DIR) -I$(SW_DIR) -I$(GL_DIR) -I$(PROGS_DIR) -I$(LIBS_DIR) -I$(QUX_DIR) -I$(LIBS_DIR)/dxsdk7/include -I/usr/X11R6/include -I$(LIBS_DIR)/sdl/include -I$(LIBS_DIR)/sdl/include/SDL -D_vsnprintf=vsnprintf -D_snprintf=snprintf +CLIENT_ONLY_CFLAGS=-DCLIENTONLY +SERVER_ONLY_CFLAGS=-DSERVERONLY +JOINT_CFLAGS= +DEBUG_CFLAGS=-ggdb -g +RELEASE_CFLAGS=-O6 -s -fno-strict-aliasing -ffast-math -funroll-loops -fexpensive-optimizations $(CPUOPTIMIZATIONS) +GLCFLAGS=-DGLQUAKE +SWCFLAGS=-DSWQUAKE + +NQPROT_OBJS = \ + net_main.o \ + net_loop.o \ + net_dgrm.o \ + net_udp.o \ + net_wipx.o \ + net_vcr.o + +CLIENT_OBJS = $(CLIENT_ASM_OBJS) \ + textedit.o \ + fragstats.o \ + teamplay.o \ + zqtp.o \ + cl_demo.o \ + cl_ents.o \ + clq2_ents.o \ + cl_input.o \ + cl_main.o \ + cl_parse.o \ + cl_pred.o \ + cl_tent.o \ + cl_cam.o \ + cl_screen.o \ + cl_ui.o \ + qvm.o \ + ircclient.o \ + console.o \ + image.o \ + keys.o \ + menu.o \ + m_master.o \ + m_multi.o \ + m_items.o \ + m_options.o \ + m_single.o \ + m_script.o \ + m_mp3.o \ + roq_read.o \ + clq2_cin.o \ + net_master.o \ + r_bulleten.o \ + r_part.o \ + r_partset.o \ + r_efrag.o \ + renderer.o \ + renderque.o \ + sbar.o \ + skin.o \ + snd_dma.o \ + snd_mem.o \ + snd_mix.o \ + snd_mp3.o \ + snd_ov.o \ + valid.o \ + view.o \ + wad.o \ + \ + pop3noti.o \ + imapnoti.o \ + \ + ftpclient.o \ + httpclient.o \ + \ + \ + m_x.o \ + x_reqs.o \ + x_res.o \ + pr_menu.o + + +SOFTWARE_OBJS = $(SOFTWARE_ASM_OBJS) \ + sw_screen.o \ + sw_draw.o \ + sw_model.o \ + r_aclip.o \ + r_alias.o \ + r_bsp.o \ + r_draw.o \ + r_edge.o \ + r_light.o \ + r_main.o \ + r_misc.o \ + r_sky.o \ + r_sprite.o \ + r_surf.o \ + r_vars.o \ + d_edge.o \ + d_fill.o \ + d_init.o \ + d_modech.o \ + d_part.o \ + d_polyse.o \ + d_scan.o \ + d_sky.o \ + d_sprite.o \ + d_surf.o \ + d_trans.o \ + d_vars.o \ + d_zpoint.o \ + nonintel.o + +GLQUAKE_OBJS = \ + gl_alias.o \ + gl_draw.o \ + gl_model.o \ + gl_ngraph.o \ + gl_rlight.o \ + gl_rmain.o \ + gl_rmisc.o \ + gl_rsurf.o \ + ltface.o \ + gl_screen.o \ + gl_backend.o \ + gl_shader.o \ + gl_warp.o \ + gl_ppl.o \ + gl_vidcommon.o \ + gl_hlmdl.o + +MP3_OBJS = \ + fixed.o \ + bit.o \ + timer.o \ + stream.o \ + frame.o \ + synth.o \ + decoder.o \ + layer12.o \ + layer3.o \ + huffman.o \ + mymad.o + +PROGS_OBJS = \ + comprout.o \ + hash.o \ + initlib.o \ + pr_edict.o \ + pr_exec.o \ + pr_multi.o \ + qcc_cmdlib.o \ + qccmain.o \ + qcc_pr_comp.o \ + qcc_pr_lex.o \ + qcdecomp.o \ + qcd_main.o + +SERVER_OBJS = \ + pr_cmds.o \ + sv_master.o \ + sv_init.o \ + sv_main.o \ + sv_nchan.o \ + sv_ents.o \ + sv_send.o \ + sv_move.o \ + sv_phys.o \ + sv_user.o \ + sv_mvd.o \ + sv_ccmds.o \ + sv_rankin.o \ + sv_chat.o \ + sv_demo.o \ + world.o \ + net_preparse.o \ + savegame.o \ + svq2_ents.o \ + svq2_game.o \ + snd_vc.o \ + snd_voicecodecs.o \ + g711.o \ + g721.o \ + g723_24.o \ + g723_40.o \ + g72x.o \ + webgen.o \ + ftpserver.o \ + httpserver.o \ + sv_pop3.o \ + sv_smtp.o + +SERVERONLY_OBJS = \ + svmodel.o \ + sv_sys_unix.o + +WINDOWSSERVERONLY_OBJS = \ + svmodel.o \ + sv_sys_win.o + +COMMON_OBJS = $(COMMON_ASM_OBJS) \ + common.o \ + cvar.o \ + cmd.o \ + crc.o \ + mathlib.o \ + huff.o \ + md4.o \ + md5.o \ + net_chan.o \ + net_wins.o \ + zone.o \ + gl_q2bsp.o \ + glmod_doom.o \ + pmove.o \ + pmovetst.o \ + iwebiface.o \ + translate.o \ + plugin.o \ + q1bsp.o \ + q2pmove.o + + +#the defaults for sdl come first +GLCL_OBJS=$(GL_OBJS) $(GLQUAKE_OBJS) gl_vidsdl.o snd_sdl.o cd_sdl.o sys_sdl.o in_sdl.o +GL_EXE_NAME=../fteqw_sdl.gl +GLCL_EXE_NAME=../fteqwcl_sdl.gl +ifdef windir + GL_LDFLAGS=$(GLLDFLAGS) -lmingw32 -lwsock32 `sdl-config --libs` +else + GL_LDFLAGS=$(GLLDFLAGS) -lpng -ljpeg `sdl-config --libs` +endif +GL_CFLAGS=$(GLCFLAGS) `sdl-config --cflags` +GLB_DIR=gl_sdl +GLCL_DIR=glcl_sdl + +SWCL_OBJS=$(SOFTWARE_OBJS) vid_sdl.o snd_sdl.o cd_sdl.o sys_sdl.o in_sdl.o +SW_EXE_NAME=../fteqw_sdl.sw +SWCL_EXE_NAME=../fteqwcl_sdl.sw +ifdef windir +SW_LDFLAGS=$(SWLDFLAGS) -lmingw32 -lwsock32 -lSDLmain -lSDL +else +#pthread is needed because of SDL. +SW_LDFLAGS=$(SWLDFLAGS) `sdl-config --libs` -lpng -ljpeg -lSDLmain +endif +SW_CFLAGS=$(SWCFLAGS) `sdl-config --cflags` +SWB_DIR=sw_sdl +SWCL_DIR=swcl_sdl + +SV_OBJS=$(COMMON_OBJS) $(NQPROT_OBJS) $(SERVER_OBJS) $(PROGS_OBJS) $(SERVERONLY_OBJS) +SV_EXE_NAME=../fteqw.sv +SV_CFLAGS=$(SERVER_ONLY_CFLAGS) + +#specific targets override those defaults as needed. + +ifeq ($(FTE_TARGET),win32) + SV_EXE_NAME=../fteqwsv.exe + SV_LDFLAGS=libs/zlib.lib -lwsock32 + SV_DIR=sv_mingw + SV_OBJS=$(COMMON_OBJS) $(NQPROT_OBJS) $(SERVER_OBJS) $(PROGS_OBJS) $(WINDOWSSERVERONLY_OBJS) + +ifeq ($(USEASM),true) + GLCL_OBJS=$(GL_OBJS) $(GLQUAKE_OBJS) gl_vidnt.o snd_win.o cd_win.o in_win.o sys_win.o sys_dosa.o +else + GLCL_OBJS=$(GL_OBJS) $(GLQUAKE_OBJS) gl_vidnt.o snd_win.o cd_win.o in_win.o sys_win.o +endif + GL_EXE_NAME=../fteglqw.exe + GLCL_EXE_NAME=../fteglqwcl.exe + GL_LDFLAGS=$(GLLDFLAGS) -ldxguid -lwsock32 -lwinmm -lgdi32 -lole32 + GL_CFLAGS=$(GLCFLAGS) + GLB_DIR=gl_mgw + GLCL_DIR=glcl_mgw + +ifeq ($(USEASM),true) + SWCL_OBJS=$(SOFTWARE_OBJS) vid_ddraw.o vid_dib.o vid_win2.o snd_win.o cd_win.o in_win.o sys_win.o sys_dosa.o +else + SWCL_OBJS=$(SOFTWARE_OBJS) vid_ddraw.o vid_dib.o vid_win2.o snd_win.o cd_win.o in_win.o sys_win.o +endif + SW_EXE_NAME=../fteswqw.exe + SWCL_EXE_NAME=../fteswqwcl.exe + SW_LDFLAGS=$(SWLDFLAGS) -ldxguid -lwsock32 -lwinmm -lgdi32 -lole32 + SW_CFLAGS=$(SWCFLAGS) + SWB_DIR=sw_mgw + SWCL_DIR=swcl_mgw + +ifeq ($(USEASM),true) + MCL_OBJS=$(GLQUAKE_OBJS) $(SOFTWARE_OBJS) gl_vidnt.o vid_ddraw.o vid_dib.o vid_win2.o snd_win.o cd_win.o in_win.o sys_win.o sys_dosa.o +else + MCL_OBJS=$(GLQUAKE_OBJS) $(SOFTWARE_OBJS) gl_vidnt.o vid_ddraw.o vid_dib.o vid_win2.o snd_win.o cd_win.o in_win.o sys_win.o +endif + M_EXE_NAME=../fteqw.exe + MCL_EXE_NAME=../fteqwcl.exe + M_LDFLAGS=$(GLLDFLAGS) -ldxguid -lwsock32 -lwinmm -lgdi32 -lole32 + M_CFLAGS=$(SWCFLAGS) $(GLCFLAGS) + MB_DIR=m_mgw + MCL_DIR=mcl_mgw + +endif +ifeq ($(FTE_TARGET),linux) + + SV_DIR=sv_linux + SV_LDFLAGS=-lz + +ifeq ($(USEASM),true) + GLCL_OBJS=$(GL_OBJS) $(GLQUAKE_OBJS) gl_vidlinuxglx.o snd_linux.o cd_linux.o sys_linux.o sys_dosa.o +else + GLCL_OBJS=$(GL_OBJS) $(GLQUAKE_OBJS) gl_vidlinuxglx.o snd_linux.o cd_linux.o sys_linux.o +endif + GL_EXE_NAME=../fteqw.gl + GLCL_EXE_NAME=../fteqwcl.gl + GL_LDFLAGS=$(GLLDFLAGS) $(GLXLDFLAGS) + GL_CFLAGS=$(GLCFLAGS) + GLB_DIR=gl_linux + GLCL_DIR=glcl_linux + +ifeq ($(USEASM),true) + SWCL_OBJS=$(SOFTWARE_OBJS) vid_x.o snd_linux.o cd_linux.o sys_linux.o sys_dosa.o +else + SWCL_OBJS=$(SOFTWARE_OBJS) vid_x.o snd_linux.o cd_linux.o sys_linux.o +endif + SW_EXE_NAME=../fteswqw.exe + SWCL_EXE_NAME=../fteswqwcl.exe + SW_LDFLAGS=$(SWLDFLAGS) $(XLDFLAGS) + SW_CFLAGS=$(SWCFLAGS) + SWB_DIR=sw_linux + SWCL_DIR=swcl_linux + +ifeq ($(USEASM),true) + MCL_OBJS=$(GLQUAKE_OBJS) $(SOFTWARE_OBJS) gl_vidlinuxglx.o vid_x.o snd_linux.o cd_linux.o sys_linux.o sys_dosa.o +else + MCL_OBJS=$(GLQUAKE_OBJS) $(SOFTWARE_OBJS) gl_vidlinuxglx.o vid_x.o snd_linux.o cd_linux.o sys_linux.o +endif + M_EXE_NAME=../fteqw + MCL_EXE_NAME=../fteqwcl + M_LDFLAGS=$(GLLDFLAGS) $(GLXLDFLAGS) + M_CFLAGS=$(SWCFLAGS) $(GLCFLAGS) + MB_DIR=m_linux + MCL_DIR=mcl_linux + + + +endif + +SV_DIR?=sv_sdl + +.default: help +all: sv-rel sw-rel gl-rel m-rel + +VPATH = $(BASE_DIR) : $(CLIENT_DIR) : $(GL_DIR) : $(COMMON_DIR) : $(SW_DIR) : $(SERVER_DIR) : $(NQPROT_DIR) : $(HTTP_DIR) : $(BASE_DIR)/irc : $(BASE_DIR)/email : $(QUX_DIR) : $(PROGS_DIR) : $(SNDCODEC_DIR) + + +$(OUT_DIR)/%.o : %.c + $(DO_CC) + +ifeq ($(USEASM),true) +$(OUT_DIR)/%.o : %.s + $(DO_AS) +endif + +#addprefix is to add the ./release/server/ part of the object name +#foreach is needed as the OBJS is a list of variable names containing object lists. +#which is needed as windows sucks too much for the chaining to carry a full list. +#god knows how gcc loads the list properly. +#or at least I hope he does. It makes no sence to mortals. +$(OUT_DIR)/$(EXE_NAME): $(addprefix $(OUT_DIR)/, $(foreach ol, $(OBJS), $($(ol)))) + $(CC) $(CFLAGS) -o $@ $(addprefix $(OUT_DIR)/, $(foreach ol, $(OBJS), $($(ol)))) $(LDFLAGS) + +_out-rel: + $(MAKE) $(OUT_DIR)/$(EXE_NAME) EXE_NAME="$(EXE_NAME)" OUT_DIR="$(OUT_DIR)" CFLAGS="$(CFLAGS) $(RELEASE_CFLAGS)" LDFLAGS="$(BASELDFLAGS) $(LDFLAGS)" OBJS="$(OBJS)" + strip --strip-all $(OUT_DIR)/$(EXE_NAME) + +_out-dbg: + $(MAKE) $(OUT_DIR)/$(EXE_NAME) EXE_NAME="$(EXE_NAME)" OUT_DIR="$(OUT_DIR)" CFLAGS="$(CFLAGS) $(DEBUG_CFLAGS)" LDFLAGS="$(BASELDFLAGS) $(LDFLAGS)" OBJS="$(OBJS)" + +_cl-rel: + $(MAKE) _out-rel EXE_NAME="$(EXE_NAME)" OUT_DIR="$(OUT_DIR)" CFLAGS="$(CLIENT_ONLY_CFLAGS) $(CFLAGS)" LDFLAGS="$(LDFLAGS)" SOBJS="$(SOBJS)" OBJS="SOBJS COMMON_OBJS NQPROT_OBJS CLIENT_OBJS PROGS_OBJS" + +_cl-dbg: + $(MAKE) _out-dbg EXE_NAME="$(EXE_NAME)" OUT_DIR="$(OUT_DIR)" CFLAGS="$(CLIENT_ONLY_CFLAGS) $(CFLAGS)" LDFLAGS="$(LDFLAGS)" SOBJS="$(SOBJS)" OBJS="SOBJS COMMON_OBJS NQPROT_OBJS CLIENT_OBJS PROGS_OBJS" + +_clsv-rel: reldir + $(MAKE) _out-rel EXE_NAME="$(EXE_NAME)" OUT_DIR="$(OUT_DIR)" CFLAGS="$(JOINT_CFLAGS) $(CFLAGS)" LDFLAGS="$(LDFLAGS)" SOBJS="$(SOBJS)" OBJS="SOBJS COMMON_OBJS NQPROT_OBJS CLIENT_OBJS PROGS_OBJS SERVER_OBJS" + +_clsv-dbg: debugdir + $(MAKE) _out-dbg EXE_NAME="$(EXE_NAME)" OUT_DIR="$(OUT_DIR)" CFLAGS="$(JOINT_CFLAGS) $(CFLAGS)" LDFLAGS="$(LDFLAGS)" SOBJS="$(SOBJS)" OBJS="SOBJS COMMON_OBJS NQPROT_OBJS CLIENT_OBJS PROGS_OBJS SERVER_OBJS" + + +sv-tmp: reldir debugdir + $(MAKE) $(TYPE) OUT_DIR="$(OUT_DIR)" EXE_NAME="$(SV_EXE_NAME)" CFLAGS="$(SV_CFLAGS)" LDFLAGS="$(SV_LDFLAGS)" OBJS="SV_OBJS" +sv-rel: + $(MAKE) sv-tmp TYPE=_out-rel OUT_DIR="$(RELEASE_DIR)/$(SV_DIR)" +sv-dbg: + $(MAKE) sv-tmp TYPE=_out-dbg OUT_DIR="$(DEBUG_DIR)/$(SV_DIR)" + + + + + +glcl-tmp: + $(MAKE) $(TYPE) OUT_DIR="$(OUT_DIR)" EXE_NAME="$(GLCL_EXE_NAME)" CFLAGS="$(GL_CFLAGS)" LDFLAGS="$(GL_LDFLAGS)" SOBJS="$(GLCL_OBJS)" +gl-tmp: + $(MAKE) $(TYPE) OUT_DIR="$(OUT_DIR)" EXE_NAME="$(GL_EXE_NAME)" CFLAGS="$(GL_CFLAGS)" LDFLAGS="$(GL_LDFLAGS)" SOBJS="$(GLCL_OBJS)" + +glcl-rel: + $(MAKE) glcl-tmp TYPE=_cl-rel OUT_DIR="$(RELEASE_DIR)/$(GLCL_DIR)" +glcl-dbg: + $(MAKE) glcl-tmp TYPE=_cl-dbg OUT_DIR="$(DEBUG_DIR)/$(GLCL_DIR)" +gl-rel: + $(MAKE) gl-tmp TYPE=_clsv-rel OUT_DIR="$(RELEASE_DIR)/$(GLB_DIR)" +gl-dbg: + $(MAKE) gl-tmp TYPE=_clsv-dbg OUT_DIR="$(DEBUG_DIR)/$(GLB_DIR)" + + + + +swcl-tmp: + $(MAKE) $(TYPE) OUT_DIR="$(OUT_DIR)" EXE_NAME="$(SWCL_EXE_NAME)" CFLAGS="$(SW_CFLAGS)" LDFLAGS="$(SW_LDFLAGS)" SOBJS="$(SWCL_OBJS)" +sw-tmp: + $(MAKE) $(TYPE) OUT_DIR="$(OUT_DIR)" EXE_NAME="$(SW_EXE_NAME)" CFLAGS="$(SW_CFLAGS)" LDFLAGS="$(SW_LDFLAGS)" SOBJS="$(SWCL_OBJS)" + +swcl-rel: + $(MAKE) swcl-tmp TYPE=_cl-rel OUT_DIR="$(RELEASE_DIR)/$(SWCL_DIR)" +swcl-dbg: + $(MAKE) swcl-tmp TYPE=_cl-dbg OUT_DIR="$(DEBUG_DIR)/$(SWCL_DIR)" +sw-rel: + $(MAKE) sw-tmp TYPE=_clsv-rel OUT_DIR="$(RELEASE_DIR)/$(SWB_DIR)" +sw-dbg: + $(MAKE) sw-tmp TYPE=_clsv-dbg OUT_DIR="$(DEBUG_DIR)/$(SWB_DIR)" + + + +mcl-tmp: + $(MAKE) $(TYPE) OUT_DIR="$(OUT_DIR)" EXE_NAME="$(MCL_EXE_NAME)" CFLAGS="$(M_CFLAGS)" LDFLAGS="$(M_LDFLAGS)" SOBJS="$(MCL_OBJS)" +mcl-rel: + $(MAKE) mcl-tmp TYPE=_cl-rel OUT_DIR="$(RELEASE_DIR)/$(MCL_DIR)" +mcl-dbg: + $(MAKE) mcl-tmp TYPE=_cl-dbg OUT_DIR="$(DEBUG_DIR)/$(MCL_DIR)" + + +m-tmp: + $(MAKE) $(TYPE) OUT_DIR="$(OUT_DIR)" EXE_NAME="$(M_EXE_NAME)" CFLAGS="$(M_CFLAGS)" LDFLAGS="$(M_LDFLAGS)" SOBJS="$(MCL_OBJS)" +m-rel: + $(MAKE) m-tmp TYPE=_clsv-rel OUT_DIR="$(RELEASE_DIR)/$(MCL_DIR)" +m-dbg: + $(MAKE) m-tmp TYPE=_clsv-dbg OUT_DIR="$(DEBUG_DIR)/$(MCL_DIR)" + + +ifdef windir +debugdir: + @-mkdir $(subst /,\, $(OUT_DIR)) +reldir: + @-mkdir $(subst /,\, $(OUT_DIR)) +else +reldir: + @-mkdir $(RELEASE_DIR) + @-mkdir $(OUT_DIR) +debugdir: + @-mkdir $(DEBUG_DIR) + @-mkdir $(OUT_DIR) +endif + +help: + @-echo "Specfic targets:" + @-echo "clean - removes all output (use make dirs afterwards)" + @-echo "all - make all the targets possible" + @-echo "" + @-echo "Normal targets:" + @-echo "(each of these targets must have the postfix -rel or -dbg)" + @-echo "sv" + @-echo "gl" + @-echo "sw" + +clean: + -rm -f -r $(RELEASE_DIR) + -rm -f -r $(DEBUG_DIR) +