IS_GIT := $(if $(shell git rev-parse --show-toplevel 2>/dev/null),1) IS_HG := $(if $(shell hg root 2>/dev/null),1) ifeq ($(IS_HG),1) $(info This is a hg repository) GIT_VERSION := "hg:$(shell hg identify --id)" VERSION_BUILD := 0 endif ifeq ($(IS_GIT),1) $(info This is a git repository) GIT_VERSION := "git:$(shell git describe --always --long --dirty=+ 2>/dev/null)" VERSION_BUILD := 0 endif ifeq ($(or $(IS_GIT),$(IS_HG)),) $(info Not inside a repository) GIT_VERSION := "?" VERSION_BUILD := 0 endif CXX ?= g++ LD := $(CXX) WINDRES ?= windres OBJECTS := \ Debug.o \ DirectInput.o \ FileAccess.o \ GBCart.o \ Interface.o \ International.o \ NRagePluginV2.o \ PakIO.o \ XInputController.o RESOURCE := NRagePluginV2.res TARGET := PJ64_NRage.dll CPPFLAGS := \ -DGIT_VERSION=\"$(GIT_VERSION)\" \ -DVERSION_BUILD=$(VERSION_BUILD) \ -DNOMINMAX CXXFLAGS := \ -shared \ -fPIC \ -Os \ -Wno-write-strings LIBS := \ -lcomctl32 \ -lcomdlg32 \ -ldinput8 \ -lgdi32 \ -lole32 \ -loleaut32 \ -luuid ifeq ($(DYN_WINPTHREAD),1) LIBS += -lwinpthread else LIBS += -static -lwinpthread endif LDFLAGS := \ -mwindows \ -static-libgcc \ -static-libstdc++ DEPFILES := $(addprefix .deps/,$(OBJECTS:.o=.d)) .PHONY: all clean all: .deps Version.h $(TARGET) -include $(DEPFILES) clean: -rm -f $(TARGET) -rm -f $(OBJECTS) $(RESOURCE) -rm -f $(DEPFILES) -rm -rf .deps -rm -f Version.h .deps: mkdir -p $@ Version.h: Version.h.in cp $< $@ %.res: %.rc $(WINDRES) -O coff -o $@ -i $< %.o: %.cpp $(CXX) $(CXXFLAGS) $(CPPFLAGS) -MMD -MP -MF .deps/$(@:.o=.d) -o $@ -c $< $(TARGET): $(OBJECTS) $(RESOURCE) $(LD) $(CXXFLAGS) $(LDFLAGS) $^ $(LIBS) -o $@