summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile95
1 files changed, 46 insertions, 49 deletions
diff --git a/Makefile b/Makefile
index 7f98070..80031c7 100644
--- a/Makefile
+++ b/Makefile
@@ -19,74 +19,71 @@
# License along with this manual; if not, see
# <http://www.gnu.org/licenses/>.
-MAKEFLAGS += --no-builtin-rules
-
-prefix = /usr/local
-bindir = $(prefix)/bin
-libdir = $(prefix)/lib
+PACKAGE = parabola-hackers
systemddir = $(libdir)/systemd
-
-Q ?= @
+conf_file = $(sysconfdir)/$(PACKAGE).yml
+NET ?=
#NET ?= FORCE
-
user = nshd
group = nshd
+CFLAGS = -Wall -Wextra -Werror -pedantic
+CC = gcc -std=c99
+
+MAKEFLAGS += --no-builtin-rules
+topsrcdir := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST))))
+topoutdir := $(topsrcdir)
+include $(topsrcdir)/build-aux/Makefile.head.mk
-CFLAGS = -std=c99 -Wall -Wextra -Werror -pedantic
CGO_CFLAGS = $(CFLAGS) -Wno-unused-parameter
CGO_ENABLED = 1
-deps += gopkg.in/yaml.v2
-deps += lukeshu.com/git/go/libgnulinux.git
-deps += lukeshu.com/git/go/libnslcd.git
-deps += lukeshu.com/git/go/libsystemd.git
-
-srcdir := $(abspath $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))))
-topdir := $(srcdir)
+at.subdirs += src/lukeshu.com/git/go/libnslcd.git/proto
-subdirs = src/lukeshu.com/git/go/libnslcd.git/proto
+scripts = $(notdir $(wildcard $(srcdir)/scripts/*))
-generate += $(addprefix $(topdir)/src/,$(deps))
-generate += $(topdir)/LICENSE.lgpl-2.1.txt $(topdir)/LICENSE.gpl-2.txt $(topdir)/LICENSE.apache-2.0.txt
-generate_secondary += $(topdir)/src/*.*/
-build += $(topdir)/bin/nshd $(topdir)/nshd.service $(topdir)/nshd.socket $(topdir)/test/runner
-build_secondary += $(topdir)/bin $(topdir)/pkg $(topdir)/test/*.o .var.*
-install += $(addprefix $(DESTDIR),$(bindir)/nshd $(systemddir)/system/nshd.socket $(systemddir)/system/nshd.service)
+std.gen_files += LICENSE.lgpl-2.1.txt LICENSE.gpl-2.txt LICENSE.apache-2.0.txt
+std.out_files += bin/nshd nshd.service nshd.socket test/runner
+std.sys_files += $(addprefix $(bindir)/,nshd $(scripts)) $(systemddir)/system/nshd.socket $(systemddir)/system/nshd.service
+std.clean_files += test/*.o pkg/
-ifeq (1,$(words $(MAKEFILE_LIST)))
- include $(topdir)/common.mk
-endif
-src/lukeshu.com/git/go/libnslcd.git/proto/Makefile: $(topdir)/src/lukeshu.com/git/go/libnslcd.git
-
-$(topdir)/LICENSE.lgpl-2.1.txt: $(NET)
+$(srcdir)/LICENSE.lgpl-2.1.txt: $(NET)
curl https://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt > $@
-$(topdir)/LICENSE.gpl-2.txt: $(NET)
+$(srcdir)/LICENSE.gpl-2.txt: $(NET)
curl https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt > $@
-$(topdir)/LICENSE.apache-2.0.txt: $(NET)
+$(srcdir)/LICENSE.apache-2.0.txt: $(NET)
curl https://www.apache.org/licenses/LICENSE-2.0 > $@
-$(topdir)/LICENSE.wtfpl-2.txt: $(NET)
+$(srcdir)/LICENSE.wtfpl-2.txt: $(NET)
curl http://www.wtfpl.net/txt/copying/ > $@
-
-include $(topdir)/golang.mk
-
-$(call goget,$(topdir),$(deps))
-$(topdir)/bin/nshd: $(generate) $(configure) $(call gosrc,$(topdir))
- $(call goinstall,$(topdir),nshd)
+$(outdir)/bin/nshd: private golang.FLAGS+=-ldflags '-X nshd.conf_file=$(conf_file)'
+$(outdir)/bin/nshd: src/lukeshu.com/git/go/libnslcd.git/proto/server/interface_backend.go
+$(outdir)/bin/nshd: src/lukeshu.com/git/go/libnslcd.git/proto/server/func_handlerequest.go
+$(outdir)/bin/nshd: src/lukeshu.com/git/go/libnslcd.git/proto/server/type_nilbackend.go
+$(outdir)/bin/nshd: $(call golang.src,$(srcdir)) $(var)conf_file
+ $(call golang.install,$(topsrcdir),nshd)
-%.o: %.c .var.CC .var.CPPFLAGS .var.CFLAGS
- $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $(filter-out .var.%,$^)
-%: %.o .var.CC .var.LDFLAGS .var.LOADLIBES .var.LDLIBS
- $(CC) $(LDFLAGS) -o $@ $(filter-out .var.%,$^) $(LOADLIBES) $(LDLIBS)
+$(outdir)/%.o: $(srcdir)/%.c $(var)CC $(var)CPPFLAGS $(var)CFLAGS
+ $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $(filter-out $(var)%,$^)
+$(outdir)/%: $(outdir)/%.o $(var)CC $(var)LDFLAGS
+ $(CC) $(LDFLAGS) -o $@ $(filter-out $(var)%,$^)
-%: %.in
- < $< sed $(foreach v,$(patsubst .var.%,%,$(filter .var.%,$^)), -e 's|@$v@|$($v)|g' ) > $@
-$(topdir)/nshd.service: .var.bindir .var.user .var.group
-$(topdir)/nshd.socket: .var.user .var.group
+$(outdir)/%: $(srcdir)/%.in
+ < $< sed $(foreach v,$(patsubst $(var)%,%,$(filter $(var)%,$^)), -e 's|@$v@|$($v)|g' ) > $@
+$(outdir)/nshd.service: $(var)user $(var)group $(var)bindir
+$(outdir)/nshd.socket: $(var)user $(var)group
-$(DESTDIR)$(bindir)/%: bin/%
+$(DESTDIR)$(bindir)/%: $(outdir)/bin/%
install -TDm755 $< $@
-$(DESTDIR)$(systemddir)/system/%.socket: %.socket
+$(DESTDIR)$(bindir)/%: $(srcdir)/scripts/%
+ install -TDm755 $< $@
+$(DESTDIR)$(bindir)/common.rb: $(srcdir)/scripts/common.rb
+ install -TDm644 $< $@
+$(DESTDIR)$(systemddir)/system/%.socket: $(outdir)/%.socket
install -TDm644 $< $@
-$(DESTDIR)$(systemddir)/system/%.service: %.service
+$(DESTDIR)$(systemddir)/system/%.service: $(outdir)/%.service
install -TDm644 $< $@
+
+.PHONY: FORCE
+.SECONDARY:
+.DELETE_ON_ERROR:
+include $(topsrcdir)/build-aux/Makefile.tail.mk