123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- # Nathan's generic Makefile -*- mode:Makefile -*-
- # Copyright (C) 2019-2020 Nathan Sidwell, nathan@acm.org
- # License: Apache v2.0
- srcdir := @srcdir@
- prefix := @prefix@
- exec_prefix := @exec_prefix@
- bindir := @bindir@
- libdir := @libdir@
- includedir := @includedir@
- # Linker options
- LDFLAGS := @LDFLAGS@
- LIBS := @LIBS@
- # We have to place the -I paths last, so that building will see -I paths to us
- CXX := $(filter-out -I%,@CXX@)
- AR := @AR@
- RANLIB := @RANLIB@
- INSTALL := $(srcdir)/build-aux/install-sh
- # C++ compiler options
- CXXFLAGS := @CXXFLAGS@
- CXXINC := $(filter -I%,@CXX@)
- CXXOPTS := $(CXXFLAGS) @PICFLAG@
- ifneq (@EXCEPTIONS@,yes)
- CXXOPTS += -fno-exceptions -fno-rtti
- endif
- # Config
- CXXOPTS += $(filter-out -DHAVE_CONFIG_H,@DEFS@) -include config.h
- # Linker options
- LDFLAGS := @LDFLAGS@
- LIBS := @LIBS@
- # Per-source & per-directory compile flags (warning: recursive)
- SRC_CXXFLAGS = $(CXXFLAGS$(patsubst $(srcdir)%,%,$1)) \
- $(if $(filter-out $(srcdir)/,$1),\
- $(call $0,$(dir $(patsubst %/,%,$1))))
- ifneq ($(MAINTAINER),)
- override MAINTAINER += $1
- endif
- ifeq (@MAINTAINER@,yes)
- MAINTAINER = $2
- else
- MAINTAINER = \# --enable-maintainer-mode to rebuild $1, or make MAINTAINER=touch
- endif
- vpath %.in $(srcdir)
- vpath %.cc $(srcdir)
- .SUFFIXES: .o .cc
- %.o: %.cc
- @mkdir -p $(dir $@)
- $(CXX) $(strip $(CXXOPTS) $(call SRC_CXXFLAGS,$<) $(CXXINC)) \
- -MMD -MP -MF ${@:.o=.d} -c -o $@ $<
- all:: Makefile
- mostlyclean::
- clean:: Makefile
- # FIXME: Delete
- revision.stamp: $(srcdir)/.
- @revision=$$(git -C $(srcdir) rev-parse HEAD 2>/dev/null) ;\
- if test -n "$$revision" ;\
- then revision=git-$$revision ;\
- if git -C $(srcdir) status --porcelain 2>/dev/null | grep -vq '^ ' ;\
- then revision+=M ;\
- fi ;\
- else revision=unknown ;\
- fi ;\
- echo $$revision > $@
- revision: revision.stamp
- @cmp -s $< $@ || cp -f $< $@
- mostlyclean::
- clean:: mostlyclean
- rm -f revision.stamp revision
- distclean:: clean
- rm -f config.log config.status
- $(srcdir)/configure: $(srcdir)/configure.ac $(srcdir)/config.m4
- $(call MAINTAINER,$@,cd $(@D) && autoconf -W all,error)
- $(srcdir)/config.h.in: $(srcdir)/configure.ac $(srcdir)/config.m4
- $(call MAINTAINER,$@,cd $(@D) && autoheader -f -W all,error)
- config.h: config.status config.h.in
- ./$< --header=$@
- touch $@
- ifeq ($(filter %clean,$(MAKECMDGOALS)),)
- Makefile: config.status Makefile.in
- ./$< --file=$@
- touch $@
- endif
- config.status: $(srcdir)/configure $(srcdir)/config.h.in
- if test -x $@; then ./$@ -recheck; else $< @configure_args@; fi
- mostlyclean::
- clean:: mostlyclean
- rm -f $(shell find $(srcdir) -name '*~')
- distclean:: clean
- rm -f config.h
- maintainer-clean:: distclean
- rm -f $(srcdir)/config.h.in
- .PHONY: all check clean distclean maintainer-clean mostlyclean
- CXXFLAGS/ := -I$(srcdir)
- LIBCODY.O := buffer.o client.o fatal.o netclient.o netserver.o \
- resolver.o packet.o server.o
- all:: libcody.a
- libcody.a: $(LIBCODY.O)
- $(AR) -cr $@ $^
- $(RANLIB) $@
- mostlyclean::
- clean:: mostlyclean
- rm -f $(LIBCODY.O) $(LIBCODY.O:.o=.d)
- rm -f libcody.a
- CXXFLAGS/fatal.cc = -DSRCDIR='"$(srcdir)"'
- fatal.o: Makefile revision
- install::
- $(INSTALL) -d $(libdir) $(includedir)
- $(INSTALL) libcody.a $(libdir)
- $(INSTALL) $(srcdir)/cody.hh $(includedir)
- ifeq ($(filter clean%,$(MAKECMDGOALS)),)
- -include $(LIBCODY.O:.o=.d)
- endif
|