-TARGET := ircd
-SOURCES := \
+ircd_SOURCES := \
src/main.cpp \
src/admin.cpp \
src/irc.cpp \
src/map.cpp \
src/util.cpp \
src/crypt_blowfish.cpp
-HEADERS := \
- src/common.h \
- src/admin.h \
- src/irc.h \
- src/ircfmt.h \
- src/job.h \
- src/net.h \
- src/netpoll.h \
- src/netsock.h \
- src/passwd.h \
- src/map.h \
- src/util.h \
- src/crypt_blowfish.h
+setpass_SOURCES := \
+ src/setpass.cpp \
+ src/passwd.cpp \
+ src/crypt_blowfish.cpp
+SOURCES := $(ircd_SOURCES) $(filter-out $(ircd_SOURCES),$(setpass_SOURCES))
-include config.mk
LDLIBS += $(shell pkg-config --libs $(WANTLIBS))
endif
-.PHONY: all clean
-all: $(TARGET) setpass
+.PHONY: all clean deps
+all: ircd setpass
clean:
- $(RM) $(TARGET) setpass
+ $(RM) ircd setpass $(SOURCES:src/%.cpp=obj/%.o) deps.mk
+
+deps.mk deps:
+ $(CXX) $(CXXFLAGS) -MM $(SOURCES) | sed 's!.*:!obj/&!' >deps.mk
+-include deps.mk
+
+V_CXX=$(V_CXX_$(V))
+V_CXX_=$(V_CXX_0)
+V_CXX_0=@echo " CXX " $@;
+V_CXX_1=
+V_CXXLD=$(V_CXXLD_$(V))
+V_CXXLD_=$(V_CXXLD_0)
+V_CXXLD_0=@echo " CXXLD " $@;
+V_CXXLD_1=
-$(TARGET): $(SOURCES) $(HEADERS)
- $(CXX) $(CXXFLAGS) $(LDFLAGS) $(SOURCES) $(LDLIBS) -o $@
-setpass: src/setpass.cpp src/passwd.cpp src/crypt_blowfish.cpp src/passwd.h src/netsock.h
- $(CXX) $(CXXFLAGS) $(LDFLAGS) src/setpass.cpp src/passwd.cpp src/crypt_blowfish.cpp $(LDLIBS) -o $@
+obj/%.o: src/%.cpp
+ $(V_CXX)$(CXX) $(CXXFLAGS) -c $< -o $@
+ircd: $(ircd_SOURCES:src/%.cpp=obj/%.o)
+ $(V_CXXLD)$(CXX) $(CXXFLAGS) $(LDFLAGS) $(ircd_SOURCES:src/%.cpp=obj/%.o) $(LDLIBS) -o $@
+setpass: $(setpass_SOURCES:src/%.cpp=obj/%.o)
+ $(V_CXXLD)$(CXX) $(CXXFLAGS) $(LDFLAGS) $(setpass_SOURCES:src/%.cpp=obj/%.o) $(LDLIBS) -o $@