CXX=g++
INCLUDES=

UNAME := $(shell uname)


ifeq ($(UNAME), Linux)
#FLAGS=-D__LINUX_ALSASEQ__ -D__UNIX_JACK__  -DOSC_HOST_LITTLE_ENDIAN -c
#FLAGS=-D__LINUX_ALSASEQ__ -D__LINUX_ALSA__  -DOSC_HOST_LITTLE_ENDIAN -c -g #-O3
#FLAGS=-D__LINUX_PULSE__ -D__OS_LINUX__ -DOSC_HOST_LITTLE_ENDIAN -c -O3
#FLAGS=-D__LINUX_PULSE__ -D__OS_LINUX__ -DOSC_HOST_LITTLE_ENDIAN -D__LINUX_ALSA__ -c -g -O3
#FLAGS=-D__LINUX_PULSE__ -D__OS_LINUX__ -DOSC_HOST_LITTLE_ENDIAN -D__LINUX_ALSA__ -c -O3

#FLAGS=-D__LINUX_PULSE__ -DOSC_HOST_LITTLE_ENDIAN -D__LINUX_ALSA__ -c -g
FLAGS=-D__LINUX_PULSE__ -DOSC_HOST_LITTLE_ENDIAN -D__LINUX_ALSA__ -c -O3
#FLAGS=-D__LINUX_PULSE__ -DOSC_HOST_LITTLE_ENDIAN -D__LINUX_ALSA__ -c -g -O3

LIBS=-lpulse -lpulse-simple -lpthread -lasound -lstdc++ -lglut -lGL -lGLU -lm -lsndfile
endif
ifeq ($(UNAME), Darwin)
FLAGS=-D__MACOSX_CORE__ -c
LIBS=-framework CoreAudio -framework CoreMIDI -framework CoreFoundation \
	-framework IOKit -framework Carbon  -framework OpenGL \
	-framework GLUT -framework Foundation \
	-framework AppKit -lstdc++ -lm -lsndfile
endif

# This is needed by some oscpack sources
# If you did "brew install libsndfile"
# /usr/local/include and /lib are default brew prefix
# Check with "brew --prefix"
INC_PATH = -I./ -I"/usr/local/include"
LIB_PATH = -L"/usr/local/lib"

# executable
TARGET = silence---


# build binaries from sources in all these directories
VPATH = osc ip ip/posix


# the binary objects to compile 
# (only the first one should contain a main() )
OBJ_FILES = \
    App.o \
    AppControl.o \
    Parameter.o \
    ParameterProvider.o \
    Time.o\
    AudioFileSet.o \
    AudioFile.o \
    Envelope.o \
    AudioSource.o \
    GrainCloud.o \
    SingleGrain.o \
    LoopSource.o \
    SoundRect.o \
    KeyMap.o \
    UIStyleManager.o \
    UIStyle.o \
    UIScreen.o \
    UIParameter.o \
    UIGrain.o \
    UIGrainCloud.o \
    UISingleGrain.o \
    UILoopSource.o \
    UISoundRect.o \
    UIPieMenu.o \
    UIWindow.o \
    UICanvas.o \
    UIWidget.o \
    UIBufferCanvas.o \
    UILFOCanvas.o \
    UIEnvelopeTypeCanvas.o \
    UIEffectsCanvas.o \
    UIStereoEffect.o \
    UIVolumeEffect.o \
    UIBitCrushEffect.o \
    UISaturationEffect.o \
    UIDelayEffect.o \
    UIEffectWidget.o \
    UIKnobWidget.o \
    StereoEffect.o \
    StereoWidener.o \
    VolumeEffect.o \
    BitCrushEffect.o \
    SaturationEffect.o \
    DelayEffect.o \
    DelayLine.o \
    EffectsBox.o \
    Reverb.o \
    ReverbEffect.o \
    UIReverbEffect.o \
    UIEffect.o \
    UICheckboxWidget.o \
    Source.o \
    Serializer.o \
    Spectrogram.o \
    SamplesToSpectro.o \
    SpectroToSamples.o \
    OverlapAdd.o \
    SpectroOverlapAddProcessor.o \
    ChromaScale.o \
    ChromaOverlapAddProcessor.o \
    SpectroToSamplesOverlapAddProcessor.o \
    ChromaToSamplesOverlapAddProcessor.o \
    Scale.o \
    FilterBank.o \
    SmoothSpace.o \
    WaveformPyramid.o \
    DSP.o \
    MidiQueue.o \
    Stereoizer.o \
    Convolver.o \
    Ops.o \
    Algos.o \
    PitchShiftOverlapAddProcessor.o \
    MyRtAudio.o \
    MyRtMidiIn.o \
    MyRtMidiOut.o \
    Stk.o \
    Thread.o \
    RtAudio.o \
    RtMidi.o \
    kiss_fft.o


# Build executable
${TARGET} : ${OBJ_FILES}
	${CXX} -o ${TARGET} ${OBJ_FILES} ${LIB_PATH} ${LIBS}

# Build C objects (uses substitution)
%.o: %.c
	${CXX} ${FLAGS} ${INC_PATH} -c $< -o $@

# Build C++objects (uses substitution)
%.o: %.cpp
	${CXX} ${FLAGS} ${INC_PATH} -c $< -o $@


# Clean up build
clean :
	rm -f ${OBJ_FILES}
	rm -f ${TARGET}
	rm -f *~
