111 lines
3.1 KiB
Makefile
111 lines
3.1 KiB
Makefile
#--- generic settings ----------------------------------------------
|
|
# settings for C++ compiler:
|
|
C = gcc
|
|
CC = g++
|
|
CFLAGS = -O2 -Wall -fPIC # -D_DEBUG -g
|
|
INCDIR = -Irtaudio -Irtaudio/include -I../lua/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 = -llua -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 -llua
|
|
CFLAGS += -DHAVE_GETTIMEOFDAY -D__MACOSX_CORE__
|
|
DLLFLAGS = -bundle
|
|
DLLSUFFIX = .so
|
|
EXESUFFIX = .app
|
|
|
|
else # windows, MinGW
|
|
LIBS = $(LIBDIR) $(LIB) -lole32 -ldsound -lwinmm -mconsole -s
|
|
LUALIB = -L../lua/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
|