doompanning/external/wildmidi-0.4.5/djgpp/Makefile

84 lines
2 KiB
Makefile
Raw Normal View History

#------------------------------------------------------------------------------#
# Makefile for building WildMidi library and player for DOS.
# You will need a DJGPP build environment and GNU make to do it painlessly.
# To build natively on DOS, you need long file names support (e.g. doslfn.)
#------------------------------------------------------------------------------#
# Set to 1 for debug build
DEBUG = 0
# DXE3 version of the library requires DJGPP-2.05 or newer.
# Set to 0 if dont want to build / use a DXE3 version of the library.
USE_DXE = 1
# The tools
ifeq ($(CROSS),)
CC=gcc
AS=as
AR=ar
RANLIB=ranlib
else
CC=$(CROSS)-gcc
AS=$(CROSS)-as
AR=$(CROSS)-ar
RANLIB=$(CROSS)-ranlib
endif
DXE3GEN=dxe3gen
INCLUDE = -I. -I../include/stdint -I../include
CFLAGS = $(INCLUDE) -Wall -W -fno-common
ARFLAGS = cr
# SB output support (comment out if not wanted)
CFLAGS+= -DAUDIODRV_DOSSB
SB_OBJ = dosirq.o dosdma.o dossb.o
LD = $(CC)
ifneq ($(USE_DXE),1)
WM_LINK = WildMidi
else
WM_LINK = WildMidi_dxe
endif
LDFLAGS = -L. -l$(WM_LINK)
# build for pentium and newer (comment out if not wanted)
CFLAGS += -march=i586
ifeq ($(DEBUG),1)
CFLAGS += -g
else
CFLAGS += -O2 -fomit-frame-pointer -ffast-math
endif
# Build rules
%.o: %.c
$(CC) -c $(CFLAGS) -o $@ $<
%.o: ../src/%.c
$(CC) -c $(CFLAGS) -o $@ $<
# Objects
LIB_OBJ= wm_error.o file_io.o lock.o wildmidi_lib.o reverb.o gus_pat.o f_xmidi.o f_mus.o f_hmp.o f_midi.o f_hmi.o mus2mid.o xmi2mid.o internal_midi.o patches.o sample.o
PLAYER_OBJ= $(SB_OBJ) getopt_long.o wm_tty.o wildmidi.o
# Build targets
TARGETS = libWildMidi.a wildmidi.exe libWildMidi_dxe.a wildmidi.dxe
.PHONY: clean distclean
all: $(TARGETS)
libWildMidi.a: $(LIB_OBJ)
$(AR) $(ARFLAGS) $@ $^
$(RANLIB) $@
libWildMidi_dxe.a: wildmidi.dxe
wildmidi.dxe: $(LIB_OBJ)
-$(DXE3GEN) -Y libWildMidi_dxe.a -o $@ -E _WildMidi_ -U $^
wildmidi.exe: lib$(WM_LINK).a $(PLAYER_OBJ)
$(LD) -o $@ $(PLAYER_OBJ) $(LDFLAGS)
clean:
rm -rf $(LIB_OBJ) $(PLAYER_OBJ)
distclean: clean
rm -rf $(TARGETS)