initial commit - doom port
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
# DOOM (doomgeneric) for MontaukOS
|
||||
#
|
||||
# Upstream: https://github.com/ozkl/doomgeneric (submodule at upstream/,
|
||||
# pinned; no local patches). MontaukOS support lives entirely in src/:
|
||||
# doomgeneric_montauk.c (video/input), i_sound_montauk.c (audio),
|
||||
# doom_wad_check.cpp (missing-WAD dialog).
|
||||
#
|
||||
# doom1.wad is proprietary id Software content and is deliberately NOT
|
||||
# bundled; the engine (GPLv2) ships without it.
|
||||
|
||||
PORT_NAME := doom
|
||||
PORT_ICON := doom.svg
|
||||
|
||||
include ../../mk/port.mk
|
||||
|
||||
# ==== Paths ===========================================================
|
||||
|
||||
DOOM_SRC := upstream/doomgeneric
|
||||
LOCAL_SRC := src
|
||||
|
||||
# ==== Flags ===========================================================
|
||||
|
||||
CFLAGS := \
|
||||
-std=gnu11 \
|
||||
$(PORT_CFLAGS_COMMON) \
|
||||
-Wall \
|
||||
-Wno-unused-parameter \
|
||||
-Wno-unused-variable \
|
||||
-Wno-missing-field-initializers \
|
||||
-Wno-sign-compare \
|
||||
-Wno-pointer-sign \
|
||||
-DNORMALUNIX \
|
||||
-DLINUX \
|
||||
-DFEATURE_SOUND \
|
||||
-I $(LOCAL_SRC) \
|
||||
-I $(DOOM_SRC) \
|
||||
-isystem $(shell $(CC) -print-file-name=include)
|
||||
|
||||
CXXFLAGS := \
|
||||
-std=gnu++20 \
|
||||
$(PORT_CFLAGS_COMMON) \
|
||||
-Wall \
|
||||
-Wno-unused-parameter \
|
||||
-fno-rtti \
|
||||
-fno-exceptions \
|
||||
-I $(LOCAL_SRC)
|
||||
|
||||
LDFLAGS := $(PORT_LDFLAGS_COMMON)
|
||||
|
||||
LIBS := $(LIBLOADER_A) $(LIBC_A)
|
||||
|
||||
# ==== Sources =========================================================
|
||||
# Upstream engine sources, excluding platform ports and sound backends.
|
||||
|
||||
DOOM_SRCS := \
|
||||
am_map.c d_event.c d_items.c d_iwad.c d_loop.c d_main.c d_mode.c \
|
||||
d_net.c doomdef.c doomgeneric.c doomstat.c dstrings.c dummy.c \
|
||||
f_finale.c f_wipe.c g_game.c gusconf.c hu_lib.c hu_stuff.c i_cdmus.c \
|
||||
i_endoom.c i_input.c i_joystick.c i_scale.c i_sound.c i_system.c \
|
||||
i_timer.c i_video.c info.c m_argv.c m_bbox.c m_cheat.c m_config.c \
|
||||
m_controls.c m_fixed.c m_menu.c m_misc.c m_random.c memio.c mus2mid.c \
|
||||
p_ceilng.c p_doors.c p_enemy.c p_floor.c p_inter.c p_lights.c p_map.c \
|
||||
p_maputl.c p_mobj.c p_plats.c p_pspr.c p_saveg.c p_setup.c p_sight.c \
|
||||
p_spec.c p_switch.c p_telept.c p_tick.c p_user.c r_bsp.c r_data.c \
|
||||
r_draw.c r_main.c r_plane.c r_segs.c r_sky.c r_things.c s_sound.c \
|
||||
sha1.c sounds.c st_lib.c st_stuff.c statdump.c tables.c v_video.c \
|
||||
w_checksum.c w_file.c w_file_stdc.c w_main.c w_wad.c wi_stuff.c \
|
||||
z_zone.c
|
||||
|
||||
LOCAL_SRCS := doomgeneric_montauk.c i_sound_montauk.c
|
||||
LOCAL_CXX_SRCS := doom_wad_check.cpp
|
||||
|
||||
DOOM_OBJS := $(addprefix $(OBJDIR)/upstream/,$(DOOM_SRCS:.c=.o))
|
||||
LOCAL_OBJS := $(addprefix $(OBJDIR)/local/,$(LOCAL_SRCS:.c=.o))
|
||||
LOCAL_CXX_OBJS := $(addprefix $(OBJDIR)/local/,$(LOCAL_CXX_SRCS:.cpp=.o))
|
||||
ALL_OBJS := $(DOOM_OBJS) $(LOCAL_OBJS) $(LOCAL_CXX_OBJS)
|
||||
|
||||
# ==== Rules ===========================================================
|
||||
|
||||
.PHONY: all clean
|
||||
all: bundle
|
||||
|
||||
$(TARGET): $(ALL_OBJS) $(SDK_LINK_LD) Makefile $(LIBS) | $(BUNDLE_DIR)
|
||||
$(LD) $(CFLAGS) $(LDFLAGS) $(ALL_OBJS) $(LIBS) -o $@
|
||||
@echo "Built: $@ (SDK apiVersion $(SDK_API_VERSION))"
|
||||
|
||||
$(OBJDIR)/upstream/%.o: $(DOOM_SRC)/%.c Makefile
|
||||
@mkdir -p $(dir $@)
|
||||
$(CC) $(CFLAGS) -MMD -MP -c $< -o $@
|
||||
|
||||
$(OBJDIR)/local/%.o: $(LOCAL_SRC)/%.c Makefile
|
||||
@mkdir -p $(dir $@)
|
||||
$(CC) $(CFLAGS) -MMD -MP -c $< -o $@
|
||||
|
||||
$(OBJDIR)/local/%.o: $(LOCAL_SRC)/%.cpp Makefile
|
||||
@mkdir -p $(dir $@)
|
||||
$(CXX) $(CXXFLAGS) -MMD -MP -c $< -o $@
|
||||
|
||||
clean: clean-bundle
|
||||
|
||||
-include $(ALL_OBJS:.o=.d)
|
||||
Reference in New Issue
Block a user