1 # Nathan's generic Makefile -*- mode:Makefile -*-
2 # Copyright (C) 2019-2020 Nathan Sidwell, nathan@acm.org
7 exec_prefix := @
exec_prefix@
10 includedir := @
includedir@
15 # We have to place the -I paths last, so that building will see -I paths to us
16 CXX
:= $(filter-out -I
%,@CXX@
)
19 INSTALL
:= $(srcdir)/build-aux
/install-sh
21 # C++ compiler options
22 CXXFLAGS
:= @CXXFLAGS@
23 CXXINC
:= $(filter -I
%,@CXX@
)
24 CXXOPTS
:= $(CXXFLAGS
) @PICFLAG@
26 ifneq (@EXCEPTIONS@
,yes
)
27 CXXOPTS
+= -fno-exceptions
-fno-rtti
31 CXXOPTS
+= $(filter-out -DHAVE_CONFIG_H
,@DEFS@
) -include config.h
37 # Per-source & per-directory compile flags (warning: recursive)
38 SRC_CXXFLAGS
= $(CXXFLAGS
$(patsubst $(srcdir)%,%,$1)) \
39 $(if
$(filter-out $(srcdir)/,$1),\
40 $(call
$0,$(dir $(patsubst %/,%,$1))))
42 ifneq ($(MAINTAINER
),)
43 override MAINTAINER
+= $1
45 ifeq (@MAINTAINER@
,yes
)
48 MAINTAINER
= \
# --enable-maintainer-mode to rebuild $1, or make MAINTAINER=touch
58 $(CXX
) $(strip $(CXXOPTS
) $(call SRC_CXXFLAGS
,$<) $(CXXINC
)) \
59 -MMD
-MP
-MF
${@
:.o
=.d
} -c
-o
$@
$<
66 revision.stamp
: $(srcdir)/.
67 @revision
=$$(git
-C
$(srcdir) rev-parse HEAD
2>/dev
/null
) ;\
68 if
test -n
"$$revision" ;\
69 then revision
=git-
$$revision ;\
70 if git
-C
$(srcdir) status
--porcelain
2>/dev
/null | grep
-vq
'^ ' ;\
73 else revision
=unknown
;\
77 revision
: revision.stamp
78 @cmp
-s
$< $@ || cp
-f
$< $@
81 rm -f revision.stamp revision
84 rm -f config.log config.status
86 $(srcdir)/configure
: $(srcdir)/configure.ac
$(srcdir)/config.m4
87 $(call MAINTAINER
,$@
,cd
$(@D
) && autoconf
-W
all,error
)
89 $(srcdir)/config.h.in
: $(srcdir)/configure.ac
$(srcdir)/config.m4
90 $(call MAINTAINER
,$@
,cd
$(@D
) && autoheader
-f
-W
all,error
)
92 config.h
: config.status config.h.in
96 ifeq ($(filter %clean,$(MAKECMDGOALS
)),)
97 Makefile
: config.status Makefile.in
102 config.status
: $(srcdir)/configure
$(srcdir)/config.h.in
103 if
test -x
$@
; then .
/$@
-recheck
; else $< @configure_args@
; fi
108 maintainer-clean
:: distclean
109 rm -f
$(srcdir)/config.h.in
112 rm -f
$(shell find
$(srcdir) -name
'*~')
114 .PHONY
: all check clean distclean maintainer-clean
116 CXXFLAGS
/ := -I
$(srcdir)
117 LIBCODY.O
:= buffer.o client.o fatal.o netclient.o netserver.o \
118 resolver.o packet.o server.o
122 libcody.a
: $(LIBCODY.O
)
127 rm -f
$(LIBCODY.O
) $(LIBCODY.O
:.o
=.d
)
130 CXXFLAGS
/fatal.
cc = -DSRCDIR
='"$(srcdir)"'
132 fatal.o
: Makefile revision
135 $(INSTALL
) -d
$(libdir) $(includedir)
136 $(INSTALL
) libcody.a
$(libdir)
137 $(INSTALL
) $(srcdir)/cody.hh
$(includedir)
139 ifeq ($(filter clean%,$(MAKECMDGOALS
)),)
140 -include $(LIBCODY.O
:.o
=.d
)