#---------------------------------------------------------------- # OBLIGE #---------------------------------------------------------------- # # GNU Makefile for Unix/Linux with system-wide install # # Using this makefile (make, make install) will place the # executable, script and data files in standard Unixy places. # The script and data files can be overridden by files in the # $HOME/.oblige-legacy4 directory. # # NOTE: a system-wide FLTK library is assumed # PROGRAM=oblige-legacy4 # prefix choices: /usr /usr/local /opt INSTALL_PREFIX=/usr/local SCRIPT_DIR=$(INSTALL_PREFIX)/share/oblige-legacy4 CXX=g++ LIB_LOC=lib_linux OBJ_DIR=obj_linux OPTIMISE=-O2 # operating system choices: UNIX WIN32 OS=UNIX #--- Internal stuff from here ----------------------------------- # assumes system-wide FLTK installation FLTK_CONFIG=fltk-config FLTK_FLAGS=$(shell $(FLTK_CONFIG) --cflags) FLTK_LIBS=$(shell $(FLTK_CONFIG) --use-images --ldflags) CXXFLAGS=$(OPTIMISE) -Wall -D$(OS) -Ilua_src -Iglbsp_src $(FLTK_FLAGS) LDFLAGS=-L/usr/X11R6/lib LIBS=-lm -lz $(FLTK_LIBS) CXXFLAGS += -DFHS_INSTALL #----- OBLIGE Objects ---------------------------------------------- OBJS= $(OBJ_DIR)/main.o \ $(OBJ_DIR)/m_cookie.o \ $(OBJ_DIR)/m_lua.o \ $(OBJ_DIR)/m_spots.o \ $(OBJ_DIR)/lib_argv.o \ $(OBJ_DIR)/lib_file.o \ $(OBJ_DIR)/lib_signal.o \ $(OBJ_DIR)/lib_util.o \ $(OBJ_DIR)/lib_grp.o \ $(OBJ_DIR)/lib_pak.o \ $(OBJ_DIR)/lib_wad.o \ $(OBJ_DIR)/lib_zip.o \ $(OBJ_DIR)/sys_assert.o \ $(OBJ_DIR)/sys_debug.o \ $(OBJ_DIR)/img_bolt.o \ $(OBJ_DIR)/img_pill.o \ $(OBJ_DIR)/img_carve.o \ $(OBJ_DIR)/img_relief.o \ $(OBJ_DIR)/img_font1.o \ \ $(OBJ_DIR)/csg_bsp.o \ $(OBJ_DIR)/csg_clip.o \ $(OBJ_DIR)/csg_main.o \ $(OBJ_DIR)/csg_doom.o \ $(OBJ_DIR)/csg_nukem.o \ $(OBJ_DIR)/csg_quake.o \ $(OBJ_DIR)/dm_extra.o \ $(OBJ_DIR)/g_doom.o \ $(OBJ_DIR)/g_nukem.o \ $(OBJ_DIR)/g_quake.o \ $(OBJ_DIR)/g_quake2.o \ $(OBJ_DIR)/g_wolf.o \ $(OBJ_DIR)/q_common.o \ $(OBJ_DIR)/q_light.o \ $(OBJ_DIR)/q_tjuncs.o \ $(OBJ_DIR)/q_vis.o \ $(OBJ_DIR)/vis_buffer.o \ \ $(OBJ_DIR)/twister.o \ $(OBJ_DIR)/tx_forge.o \ $(OBJ_DIR)/tx_skies.o \ $(OBJ_DIR)/ui_about.o \ $(OBJ_DIR)/ui_build.o \ $(OBJ_DIR)/ui_chooser.o \ $(OBJ_DIR)/ui_console.o \ $(OBJ_DIR)/ui_dialog.o \ $(OBJ_DIR)/ui_game.o \ $(OBJ_DIR)/ui_hyper.o \ $(OBJ_DIR)/ui_level.o \ $(OBJ_DIR)/ui_map.o \ $(OBJ_DIR)/ui_module.o \ $(OBJ_DIR)/ui_rchoice.o \ $(OBJ_DIR)/ui_play.o \ $(OBJ_DIR)/ui_window.o $(OBJ_DIR)/%.o: gui/%.cc $(CXX) $(CXXFLAGS) -o $@ -c $< #----- LUA Objects -------------------------------------------------- LUA_OBJS=\ $(OBJ_DIR)/lua/lapi.o \ $(OBJ_DIR)/lua/lcode.o \ $(OBJ_DIR)/lua/ldebug.o \ $(OBJ_DIR)/lua/ldo.o \ $(OBJ_DIR)/lua/ldump.o \ $(OBJ_DIR)/lua/lfunc.o \ $(OBJ_DIR)/lua/lgc.o \ $(OBJ_DIR)/lua/llex.o \ $(OBJ_DIR)/lua/lmem.o \ $(OBJ_DIR)/lua/lobject.o \ $(OBJ_DIR)/lua/lopcodes.o \ $(OBJ_DIR)/lua/lparser.o \ $(OBJ_DIR)/lua/lstate.o \ $(OBJ_DIR)/lua/lstring.o \ $(OBJ_DIR)/lua/ltable.o \ $(OBJ_DIR)/lua/ltm.o \ $(OBJ_DIR)/lua/lundump.o \ $(OBJ_DIR)/lua/lvm.o \ $(OBJ_DIR)/lua/lzio.o \ \ $(OBJ_DIR)/lua/lauxlib.o \ $(OBJ_DIR)/lua/lbaselib.o \ $(OBJ_DIR)/lua/ldblib.o \ $(OBJ_DIR)/lua/liolib.o \ $(OBJ_DIR)/lua/lmathlib.o \ $(OBJ_DIR)/lua/loslib.o \ $(OBJ_DIR)/lua/ltablib.o \ $(OBJ_DIR)/lua/lstrlib.o \ $(OBJ_DIR)/lua/loadlib.o \ $(OBJ_DIR)/lua/linit.o LUA_CXXFLAGS=$(OPTIMISE) -Wall -DLUA_ANSI $(OBJ_DIR)/lua/%.o: lua_src/%.cc $(CXX) $(LUA_CXXFLAGS) -o $@ -c $< #----- glBSP Objects ------------------------------------------------ GLBSP_OBJS= \ $(OBJ_DIR)/glbsp/analyze.o \ $(OBJ_DIR)/glbsp/blockmap.o \ $(OBJ_DIR)/glbsp/glbsp.o \ $(OBJ_DIR)/glbsp/level.o \ $(OBJ_DIR)/glbsp/node.o \ $(OBJ_DIR)/glbsp/reject.o \ $(OBJ_DIR)/glbsp/seg.o \ $(OBJ_DIR)/glbsp/system.o \ $(OBJ_DIR)/glbsp/util.o \ $(OBJ_DIR)/glbsp/wad.o GLBSP_CXXFLAGS=$(OPTIMISE) -Wall -DINLINE_G=inline $(OBJ_DIR)/glbsp/%.o: glbsp_src/%.cc $(CXX) $(GLBSP_CXXFLAGS) -o $@ -c $< #----- Targets ---------------------------------------------------- all: $(PROGRAM) clean: rm -f $(PROGRAM) $(OBJ_DIR)/*.o ERRS rm -f $(OBJ_DIR)/lua/*.o rm -f $(OBJ_DIR)/glbsp/*.o $(PROGRAM): $(OBJS) $(LUA_OBJS) $(GLBSP_OBJS) $(CXX) $^ -o $@ $(LDFLAGS) $(LIBS) stripped: $(PROGRAM) strip --strip-unneeded $(PROGRAM) install: stripped install -o root -m 755 $(PROGRAM) $(INSTALL_PREFIX)/bin/ install -d $(SCRIPT_DIR)/scripts install -d $(SCRIPT_DIR)/data install -d $(SCRIPT_DIR)/data/doom1_boss install -d $(SCRIPT_DIR)/data/doom2_boss install -d $(SCRIPT_DIR)/games install -d $(SCRIPT_DIR)/engines install -d $(SCRIPT_DIR)/modules install -d $(SCRIPT_DIR)/prefabs install -o root -m 644 scripts/*.lua $(SCRIPT_DIR)/scripts install -o root -m 644 data/*.* $(SCRIPT_DIR)/data install -o root -m 644 data/doom1_boss/*.* $(SCRIPT_DIR)/data/doom1_boss install -o root -m 644 data/doom2_boss/*.* $(SCRIPT_DIR)/data/doom2_boss install -o root -m 644 games/*.lua $(SCRIPT_DIR)/games install -o root -m 644 engines/*.lua $(SCRIPT_DIR)/engines install -o root -m 644 modules/*.lua $(SCRIPT_DIR)/modules install -o root -m 644 prefabs/*.lua $(SCRIPT_DIR)/prefabs uninstall: rm -v $(INSTALL_PREFIX)/bin/$(PROGRAM) rm -Rv $(SCRIPT_DIR) .PHONY: all clean stripped install uninstall #--- editor settings ------------ # vi:ts=8:sw=8:noexpandtab