103 lines
1.9 KiB
Makefile
103 lines
1.9 KiB
Makefile
#Find the correct architecture to build for
|
|
ifndef ARCH
|
|
ARCH = $(shell getconf LONG_BIT)
|
|
endif
|
|
|
|
#Set correct flags for architecture
|
|
ifeq ($(ARCH), 32)
|
|
#Global
|
|
CXXFLAGS += -m32 -march=pentium4 -mtune=generic
|
|
|
|
#Arch name
|
|
ARCHNAME = x86
|
|
else
|
|
#Global
|
|
|
|
#Arch name
|
|
ARCHNAME = x64
|
|
endif
|
|
|
|
#Global flags
|
|
ifeq ($(origin AR), default)
|
|
AR = gcc-ar
|
|
endif
|
|
BIN = libsound.a
|
|
SRCDIR = source/sound/source
|
|
|
|
UNAME = $(shell uname)
|
|
ifeq ($(UNAME), Darwin)
|
|
OSNAME = osx
|
|
else
|
|
OSNAME = lin
|
|
endif
|
|
|
|
ifdef DEBUG
|
|
OBJDIR = obj_d/$(OSNAME)$(ARCH)/sound
|
|
BINDIR = obj_d/$(OSNAME)$(ARCH)
|
|
|
|
CXXFLAGS += -O0 -g
|
|
CXXFLAGS += -D_DEBUG
|
|
else
|
|
OBJDIR = obj/$(OSNAME)$(ARCH)/sound
|
|
BINDIR = obj/$(OSNAME)$(ARCH)
|
|
|
|
CXXFLAGS += -Ofast
|
|
CXXFLAGS += -DNDEBUG
|
|
ifndef NLTO
|
|
CXXFLAGS += -flto
|
|
else
|
|
CXXFLAGS += -fno-lto
|
|
endif
|
|
endif
|
|
|
|
ifndef CC
|
|
CC = g++
|
|
endif
|
|
|
|
CXXFLAGS += -std=c++11 -DLIN_MODE
|
|
CXXFLAGS += -Wall -Wno-invalid-offsetof -Wno-switch -Wno-reorder
|
|
CXXFLAGS += -I./source/sound/include -I./source/sound/source
|
|
CXXFLAGS += -I./source/sound/OpenALSoft -isystem./source/sound/vorbis
|
|
CXXFLAGS += -I./source/sound/ogg -I./source/os/include
|
|
|
|
#Source code files
|
|
SOURCES = \
|
|
CSound.cpp \
|
|
CSoundDevice.cpp \
|
|
CSoundSource.cpp \
|
|
CStreamSound.cpp \
|
|
CSSOgg.cpp \
|
|
CSSWave.cpp \
|
|
IAudioReference.cpp \
|
|
ISound.cpp \
|
|
ISoundDevice.cpp \
|
|
ISoundSource.cpp
|
|
|
|
CPP_FILES = $(addprefix $(SRCDIR)/, $(SOURCES))
|
|
OBJ_FILES = $(addprefix $(OBJDIR)/, $(SOURCES:.cpp=.o))
|
|
DEP_FILES = $(addprefix $(OBJDIR)/, $(SOURCES:.cpp=.d))
|
|
|
|
-include $(DEP_FILES)
|
|
|
|
compile: $(DEP_FILES) $(BINDIR)/$(BIN)
|
|
|
|
#Dependency files to take care of header changes
|
|
$(OBJDIR)/%.d: $(SRCDIR)/%.cpp
|
|
@mkdir -p $(dir $@)
|
|
@$(CC) $(CXXFLAGS) -MM -MT "$(@:.d=.o)" $< >> $@
|
|
|
|
#Object files are compiled separately
|
|
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp
|
|
@mkdir -p $(dir $@)
|
|
@echo $<
|
|
@$(CC) $(CXXFLAGS) $< -c -o $@
|
|
|
|
#Complete binary compile
|
|
$(BINDIR)/$(BIN): $(OBJ_FILES)
|
|
@mkdir -p $(BINDIR)
|
|
$(AR) rcs $@ $^
|
|
|
|
clean:
|
|
@rm -rf $(OBJDIR)
|
|
@rm -f ./.depend
|