zaela-ZEQ-API/Makefile
2016-05-05 20:59:51 -07:00

191 lines
6.3 KiB
Makefile

CXX?= g++
CFLAG=
COPT= -O3 -fomit-frame-pointer -std=c++11 -fpic
CWARN= -Wall -Wextra -Wredundant-decls
CWARNIGNORE= -Wno-unused-result -Wno-strict-aliasing
CINCLUDE=
#ifdef debug
CFLAG+= -O0 -g -Wno-format
BUILDTYPE= debug
#else
#CFLAG+= -DNDEBUG
#BUILDTYPE= release
#endif
DIRBIN= bin/
CINCLUDE+= -Iinclude/
##############################################################################
# Core
SOPATH= $(DIRBIN)libzeq.so
APATH= $(DIRBIN)libzeq.a
HAPI= include/zeq.h
##############################################################################
# Common
##############################################################################
DIRCOMMON= src/common/
BCOMMON= build/$(BUILDTYPE)/common/
_OCOMMON= zeq_struct.o path.o clock.o timer.o timer_pool.o clock.o
_HCOMMON= define.hpp zeq_struct.hpp path.hpp clock.hpp timer.hpp timer_pool.hpp \
clock.hpp ref_counter.hpp
OCOMMON= $(patsubst %,$(BCOMMON)%,$(_OCOMMON))
HCOMMON= $(patsubst %,$(DIRCOMMON)%,$(_HCOMMON)) $(HAPI)
CINCLUDE+= -I$(DIRCOMMON)
##############################################################################
# Archive
##############################################################################
DIRARCHIVE= src/archive/
BARCHIVE= build/$(BUILDTYPE)/archive/
_OARCHIVE= archive.o file.o pfs.o wld.o conv_material.o conv_model.o \
wld_model.o wld_material.o conv_vertex_buffer.o eqg_model.o eqg_weight_buffer.o \
conv_skeleton.o eqg_material.o eqg_ani.o eqg_common.o
_HARCHIVE= archive.hpp file.hpp pfs.hpp wld.hpp conv_material.hpp conv_model.hpp \
wld_model.hpp wld_material.hpp fragments.hpp model_listing.hpp \
conv_vertex_buffer.hpp eqg_model.hpp eqg_weight_buffer.hpp conv_skeleton.hpp \
eqg_material.hpp eqg_ani.hpp eqg_common.hpp
OARCHIVE= $(patsubst %,$(BARCHIVE)%,$(_OARCHIVE))
HARCHIVE= $(patsubst %,$(DIRARCHIVE)%,$(_HARCHIVE)) $(HCOMMON)
CINCLUDE+= -I$(DIRARCHIVE)
##############################################################################
# Graphics
##############################################################################
DIRGRAPHICS= src/graphics/
BGRAPHICS= build/$(BUILDTYPE)/graphics/
_OGRAPHICS= vertex_buffer.o opengl.o material.o texture.o anim_texture.o \
zone_model.o camera.o model_prototype.o model_instance.o model_static.o \
transformable.o fog.o model_animated.o skeleton.o animation.o
_HGRAPHICS= vertex.hpp vertex_buffer.hpp opengl.hpp material.hpp texture.hpp \
anim_texture.hpp zone_model.hpp camera.hpp model_prototype.hpp \
model_instance.hpp model_static.hpp transformable.hpp fog.hpp model_animated.hpp \
skeleton.hpp animation.hpp
OGRAPHICS= $(patsubst %,$(BGRAPHICS)%,$(_OGRAPHICS))
HGRAPHICS= $(patsubst %,$(DIRGRAPHICS)%,$(_HGRAPHICS)) $(HCOMMON)
DIRMATH= $(DIRGRAPHICS)math/
_HMATH= frustum.hpp mat4.hpp plane.hpp vec3.hpp math.hpp axis_aligned_bounding_box.hpp
HMATH= $(patsubst %,$(DIRMATH)%,$(_HMATH))
CINCLUDE+= -I$(DIRGRAPHICS) -I$(DIRMATH)
##############################################################################
# Window
SOPATHWINDOW= $(DIRBIN)libzeq-window.so
APATHWINDOW= $(DIRBIN)libzeq-window.a
HAPIWINDOW= include/zeq_window.h
##############################################################################
# Window
##############################################################################
DIRWINDOW= src/window/
BWINDOW= build/$(BUILDTYPE)/window/
_OWINDOW= window.o zoneviewer.o
_HWINDOW= define_window.hpp window.hpp zoneviewer.hpp
OWINDOW= $(patsubst %,$(BWINDOW)%,$(_OWINDOW))
HWINDOW= $(patsubst %,$(DIRWINDOW)%,$(_HWINDOW)) $(HAPI) $(HAPIWINDOW)
CINCLUDE+= -I$(DIRWINDOW)
##############################################################################
# Core Linker flags
##############################################################################
LFLAGS= -rdynamic -shared
LSTATIC=
LDYNAMIC= -lm -ldl -lGL -lfreeimage -pthread
LPATH= -Lbin
##############################################################################
# Window Linker flags
##############################################################################
LDYNAMICWINDOW= -lzeq -lGL -lX11-xcb -lX11 -lxcb -ludev -lfreetype -lxcb-randr \
-lxcb-dri3 -lxcb-image -pthread -lsfml-window -lsfml-graphics -lsfml-system
##############################################################################
# Build Rules
##############################################################################
Q= @
E= @echo
RM= rm -f
AR= ar -cfr
##############################################################################
# Generic rules
##############################################################################
.PHONY: default all clean
default all: core window
clean-common:
$(Q)$(RM) $(BCOMMON)*.o
$(E) "Cleaned common"
clean-archive:
$(Q)$(RM) $(BARCHIVE)*.o
$(E) "Cleaned archive"
clean-graphics:
$(Q)$(RM) $(BGRAPHICS)*.o
$(E) "Cleaned graphics"
clean-window:
$(Q)$(RM) $(BWINDOW)*.o
$(E) "Cleaned window"
clean-so:
$(Q)$(RM) $(SOPATH) $(SOPATHWINDOW)
$(E) "Cleaned shared objects"
clean-a:
$(Q)$(RM) $(APATH) $(APATHWINDOW)
$(E) "Cleaned static libraries"
clean: clean-common clean-archive clean-graphics clean-window clean-so clean-a
##############################################################################
# Build rules
##############################################################################
core: $(SOPATH) $(APATH)
window: $(SOPATHWINDOW) $(APATHWINDOW)
$(SOPATH): $(OCOMMON) $(OARCHIVE) $(OGRAPHICS)
$(E) "Linking $@"
$(Q)$(CXX) -o $@ $^ $(LSTATIC) $(LPATH) $(LDYNAMIC) $(LFLAGS)
$(APATH): $(OCOMMON) $(OARCHIVE) $(OGRAPHICS)
$(E) "Packing $@"
$(Q)$(AR) $(APATH) $(OCOMMON) $(OARCHIVE) $(OGRAPHICS)
$(SOPATHWINDOW): $(OWINDOW) $(SOPATH)
$(E) "Linking $@"
$(Q)$(CXX) -o $@ $^ $(LSTATIC) $(LPATH) $(LDYNAMICWINDOW) $(LFLAGS)
$(APATHWINDOW): $(OWINDOW)
$(E) "Packing $@"
$(Q)$(AR) $(APATHWINDOW) $(OWINDOW)
$(BCOMMON)%.o: $(DIRCOMMON)%.cpp $(HCOMMON) $(HMATH)
$(E) "CXX $@"
$(Q)$(CXX) -c -o $@ $< $(COPT) $(CWARN) $(CWARNIGNORE) $(CFLAGS) $(CINCLUDE)
$(BARCHIVE)%.o: $(DIRARCHIVE)%.cpp $(HARCHIVE) $(HMATH)
$(E) "CXX $@"
$(Q)$(CXX) -c -o $@ $< $(COPT) $(CWARN) $(CWARNIGNORE) $(CFLAGS) $(CINCLUDE)
$(BGRAPHICS)%.o: $(DIRGRAPHICS)%.cpp $(HGRAPHICS) $(HMATH)
$(E) "CXX $@"
$(Q)$(CXX) -c -o $@ $< $(COPT) $(CWARN) $(CWARNIGNORE) $(CFLAGS) $(CINCLUDE)
$(BWINDOW)%.o: $(DIRWINDOW)%.cpp $(HWINDOW)
$(E) "CXX $@"
$(Q)$(CXX) -c -o $@ $< $(COPT) $(CWARN) $(CWARNIGNORE) $(CFLAGS) $(CINCLUDE)