# Target system.
# Leave blank for standard Linux builds.
# Put DINGOO for Dingoo A320 builds.
TARGET =

# Directories and files
OBJDIR = ../obj/
BINDIR = ../bin/
SRCS = $(wildcard *.cpp */*.cpp */*/*.cpp)
OBJS = $(patsubst %.cpp, $(OBJDIR)%.o, $(notdir $(SRCS)))

# Target-specific settings
CXX = i686-w64-mingw32-g++
CROSSTOOLS = /usr/local/cross-tools/i386-mingw32
PKGCONFIG = $(CROSSTOOLS)/bin/pkg-config
SMPEGCONFIG = $(CROSSTOOLS)/bin/smpeg-config
BIN = openxcom.exe

# Compiler settings
CXXFLAGS = -Wall -msse2 -O2 $(addprefix -D,$(TARGET)) `$(PKGCONFIG) --cflags sdl SDL_image SDL_gfx SDL_mixer yaml-cpp`
LDFLAGS = -lshlwapi `$(PKGCONFIG) --libs SDL_gfx SDL_mixer SDL_image yaml-cpp flac libmodplug libpng zlib ogg vorbis vorbisfile sdl` `$(SMPEGCONFIG) --libs` -ljpeg -lopengl32 -lws2_32

# Rules
all: $(BINDIR)$(BIN)

$(BINDIR)$(BIN): $(OBJS)
	$(CXX) $(OBJS) $(LDFLAGS) -o $(BINDIR)$(BIN)

$(OBJDIR)%.o:: %.cpp
	$(CXX) $(CXXFLAGS) -c -o $@ $<

$(OBJDIR)%.o:: Basescape/%.cpp
	$(CXX) $(CXXFLAGS) -c -o $@ $<
	
$(OBJDIR)%.o:: Battlescape/%.cpp
	$(CXX) $(CXXFLAGS) -c -o $@ $<

$(OBJDIR)%.o:: Engine/%.cpp
	$(CXX) $(CXXFLAGS) -c -o $@ $<

$(OBJDIR)%.o:: Engine/Scalers/%.cpp
	$(CXX) $(CXXFLAGS) -c -o $@ $<

$(OBJDIR)%.o:: Geoscape/%.cpp
	$(CXX) $(CXXFLAGS) -c -o $@ $<

$(OBJDIR)%.o:: Interface/%.cpp
	$(CXX) $(CXXFLAGS) -c -o $@ $<

$(OBJDIR)%.o:: Menu/%.cpp
	$(CXX) $(CXXFLAGS) -c -o $@ $<
	
$(OBJDIR)%.o:: Resource/%.cpp
	$(CXX) $(CXXFLAGS) -c -o $@ $<
	
$(OBJDIR)%.o:: Ruleset/%.cpp
	$(CXX) $(CXXFLAGS) -c -o $@ $<
	
$(OBJDIR)%.o:: Savegame/%.cpp
	$(CXX) $(CXXFLAGS) -c -o $@ $<
	
$(OBJDIR)%.o:: Ufopaedia/%.cpp
	$(CXX) $(CXXFLAGS) -c -o $@ $<

clean:
	rm -f $(BINDIR)$(BIN) $(OBJDIR)*.o

.PHONY: all clean
