proteaAudio/Makefile

116 lines
3.2 KiB
Makefile

#LIBFLAG,
#--- generic settings ----------------------------------------------
# settings for C++ compiler:
C = gcc
CC = g++
CFLAGS = -O2 -Wall -fPIC # -D_DEBUG -g
INCDIR = -Irtaudio -Irtaudio/include -Iluajit/src
# linker settings:
LCC = ar
LFLAGS = -rcs
LNAME = libproAudio.a
LIB = $(LNAME)
LIBDIR =
# settings for optional libSDL backend:
INCDIR += $(shell sdl-config --cflags)
SDLLIB = $(shell sdl-config --libs)
USE_PULSE=1
#--- platform specific settings ------------------------------------
ARCH = $(shell uname -s)
ifeq ($(ARCH),Linux)
LIBS = $(LIBDIR) $(LIB) -lpthread -lasound
ifeq ($(USE_PULSE),1)
INCDIR += $(shell pkg-config --cflags libpulse-simple)
LIBS += $(shell pkg-config --libs libpulse-simple)
endif
LUALIB = -lluajit -ldl
CFLAGS += -DHAVE_GETTIMEOFDAY $(if $(filter 1,$(USE_PULSE)),-D__LINUX_PULSE__,-D__LINUX_ALSA__) #-D__LINUX_OSS__
DLLFLAGS = -fPIC -shared
DLLSUFFIX = .so
EXESUFFIX =
else
ifeq ($(ARCH),Darwin) # MacOSX
LIBS = $(LIBDIR) $(LIB)
LUALIB = -L/usr/local/lib -lluajit
CFLAGS += -DHAVE_GETTIMEOFDAY -D__MACOSX_CORE__
DLLFLAGS = -bundle
DLLSUFFIX = .so
EXESUFFIX = .app
else # windows, MinGW
LIBS = $(LIBDIR) $(LIB) -lole32 -ldsound -lwinmm -mconsole -s
LUALIB = -Lluajit/src -llua51
SDLLIB = -lmingw32 -lSDLmain -lSDL -mconsole -s
CFLAGS += -D__WINDOWS_DS__
DLLFLAGS = -shared
DLLSUFFIX = .dll
EXESUFFIX = .exe
endif
endif
#--- make targets and rules ----------------------------------------
# by default, proteaAudio makes use of the included rtAudio backend
rtaudio: $(LNAME) example$(EXESUFFIX) playAudioRt$(EXESUFFIX)
# the make all target additionally builds the Lua frontend and SDL backend, and therefore has additional dependencies
ALL = $(LNAME) example$(EXESUFFIX) playAudioRt$(EXESUFFIX) proAudioRt$(DLLSUFFIX) playAudioSdl$(EXESUFFIX)
all: $(ALL)
# static library
OBJ = proAudio.o proAudioRt.o stb_vorbis.o rtaudio/RtAudio.o
$(LNAME) : $(OBJ)
$(LCC) $(LFLAGS) $@ $^
# minimal example
example$(EXESUFFIX) : example.o
$(CC) $^ $(LIBS) -o $@
# flexible example
playAudioRt$(EXESUFFIX) : playAudioRt.o
$(CC) $^ $(LIBS) -o $@
# optional Lua frontend
lua: proAudioRt$(DLLSUFFIX)
proAudioRt$(DLLSUFFIX): proAudioRt_lua.o
$(CC) -o $@ $(DLLFLAGS) $^ $(LIBS) $(LUALIB)
# example for optional libSDL backend
sdl: playAudioSdl$(EXESUFFIX)
playAudioSdl$(EXESUFFIX): playAudioSdl.o proAudio.o proAudioSdl.o stb_vorbis.o
$(CC) $(CFLAGS) $^ $(SDLLIB) -o $@
# generic rules
.c.o:
$(C) $(CFLAGS) $(INCDIR) -c $< -o $@
.cpp.o:
$(CC) $(CFLAGS) $(INCDIR) -c $< -o $@
clean:
rm -f *.o *~ $(OBJ) $(ALL)
#--- project specific dependencies ---------------------------------
HDR = proAudio.h proAudioRt.h
playAudioRt.o: playAudioRt.cpp $(HDR)
serverAudioRt.o: serverAudioRt.cpp $(HDR)
proAudioRt_lua.o: proAudioRt_lua.cpp $(HDR)
proAudio.o: proAudio.cpp proAudio.h
proAudioRt.o: proAudioRt.cpp $(HDR)
stb_vorbis.o: stb_vorbis.c
rtaudio/RtAudio.o: rtaudio/RtAudio.cpp rtaudio/RtAudio.h rtaudio/RtError.h
example.o: example.cpp $(HDR)
playAudioSdl.o: playAudioSdl.cpp proAudioSdl.h proAudio.h
proAudioSdl.o: proAudioSdl.cpp proAudioSdl.h proAudio.h
install:
echo "install"