### Do not edit -- Generated by 'configure --with-whatever' from Makefile.in
### RtMidi tests Makefile - for various flavors of unix

# WARNING If moving Makefile only the PROJ_DIR variale should require altering to reflect new path

PROJ_DIR = .

# .cpp module containing main()
TX_MAIN = xmidi_transmit

RX_MAIN = xmidi_receive

ALL_MAIN = $(RX_MAIN) $(TX_MAIN) 

# common .cpp modules
COM_MODS = RtMidi \
					 Socket_lite \
					 xmidi_common \
					 xmidi_callback \
					 xmidi_check \
					 xmidi_generate

# Extra header names
XTRA_HDR_NAMS =	types64bit \
					 			xmidi_globals

# Generate .cpp modules
TX_MODS = $(COM_MODS) $(TX_MAIN) 

# Check .cpp modules
RX_MODS = $(COM_MODS) $(RX_MAIN) 

ALL_HDR_NAMS = $(XTRA_HDR_NAMS) $(COM_MODS) $(TX_MAIN) $(RX_MAIN) 

# Detect Operating System: NB one of [ Linux Darwin(mac) Windows_NT ]
OS_NAME = Windows_NT
OS_NAME = $(shell uname)

# Initialise OS dependent variables
ifeq (Linux,$(OS_NAME))
	EXE_EXT = x
	DEFS = -D__LINUX_ALSA__
	LIBRARY = -lasound -lpthread
else
	ifeq (Darwin,$(OS_NAME))
		EXE_EXT = x
		DEFS = -D__MACOSX_CORE__
		LIBRARY  = -framework CoreMIDI -framework CoreFoundation -framework CoreAudio
	else
		ifeq (Windows_NT,$(OS_NAME))
			EXE_EXT = exe
			DEFS = -D__WINDOWS_MM__
			LIBRARY = winmm.lib wsock32.lib multithreaded
		else
      $(error ERROR: $(OS_NAME) NOT supported")
		endif # ifeq
	endif # ifeq
endif # ifeq

SRC_DIR = $(PROJ_DIR)/src
INC_DIR = $(PROJ_DIR)/src
OS_DIR = $(PROJ_DIR)/midi_$(OS_NAME).dir
OBJ_DIR = $(OS_DIR)/obj.dir
EXE_DIR = $(OS_DIR)/bin.dir

TX_EXE = $(TX_MAIN:%=$(EXE_DIR)/%.$(EXE_EXT))
RX_EXE = $(RX_MAIN:%=$(EXE_DIR)/%.$(EXE_EXT))
ALL_EXES = $(RX_EXE) $(TX_EXE) 

TX_OBJS = $(TX_MODS:%=$(OBJ_DIR)/%.o)
RX_OBJS = $(RX_MODS:%=$(OBJ_DIR)/%.o)

ALL_HDRS = $(ALL_HDR_NAMS:%=$(SRC_DIR)/%.h)

RM = /bin/rm

CC       = g++
CFLAGS   = -g -O3 -Wall -Wextra
CFLAGS  += -I$(INC_DIR) -I$(INC_DIR)/include

all : $(ALL_EXES)
	@echo "Done"

$(TX_EXE) : $(TX_OBJS)
	$(CC) $(CFLAGS) $(DEFS) $(TX_OBJS) $(LIBRARY) -o $(TX_EXE)

$(RX_EXE) : $(RX_OBJS)
	$(CC) $(CFLAGS) $(DEFS) $(RX_OBJS) $(LIBRARY) -o $(RX_EXE)

$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp $(ALL_HDRS)
	$(CC) $(CFLAGS) $(DEFS) -c $(<) -o $@

clean : 
	$(RM) -f $(OBJ_DIR)/*.o
	$(RM) -f $(EXE_DIR)/*.$(EXE_EXT)
	$(RM) -fR *.dSYM

distclean: clean
	$(RM) -f Makefile

strip : 
	strip $(PROGRAMS)
