summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile87
1 files changed, 39 insertions, 48 deletions
diff --git a/Makefile b/Makefile
index f7f51ac..775b42a 100644
--- a/Makefile
+++ b/Makefile
@@ -17,9 +17,12 @@ include config.mk
include $(topsrcdir)/build-aux/Makefile.head.mk
files.src.src := $(filter-out go/golang.org/x/sys/plan9/% go/golang.org/x/sys/windows/%,$(files.src.src))
-var = .var.
-programs = nshd nshd-setuid nshd-tester common.rb
-scripts = $(filter-out %.c %.o $(programs) common.rb common.rb.in,$(notdir $(wildcard $(srcdir)/bin/*)))
+
+bins_c = nshd-setuid nshd-tester
+bins_go = nshd
+bins_lib = common.rb
+bins_script = $(filter-out %.c %.o %.in $(bins_c) $(bins_go) $(bins_lib),$(notdir $(wildcard $(srcdir)/bin/*)))
+bins = $(bins_c) $(bins_go) $(bins_lib) $(bins_script)
.PHONY: FORCE
.SECONDARY:
@@ -36,12 +39,6 @@ cgo_variables = CGO_ENABLED CGO_CFLAGS CGO_CPPFLAGS CGO_CXXFLAGS CGO_LDFLAGS CC
$(foreach v,$(cgo_variables),$(eval $v ?=))
export $(cgo_variables)
-$(outdir)/.gopath/src:
- rm -rf -- $(@D)
- mkdir $(@D)
- ln -sr $(srcdir)/go $@
- touch $@
-
#
# Generate (pre-tarball)
@@ -56,58 +53,52 @@ $(srcdir)/LICENSE.apache-2.0.txt: $(NET)
$(srcdir)/LICENSE.wtfpl-2.txt: $(NET)
curl http://www.wtfpl.net/txt/copying/ > $@
-files.generate: go-generate
-go-generate: .gopath/src
- +GOPATH=$(abspath $(outdir)/.gopath) go generate git.lukeshu.com/...
+$(outdir)/$(files.generate): go-generate
+go-generate:
+ +GOPATH=$(abspath $(srcdir)/go) go generate git.lukeshu.com/...
.PHONY: go-generate
-files.src.int += .gopath/ .gopath/*
at.targets += go-generate
#
# Build (post-tarball)
-files.out.all += $(addprefix bin/,$(programs)) nshd.service nshd.sysusers
-files.out.int += bin/*.o .gopath/ .gopath/* .tmp* .var*
+files.out.all += $(addprefix bin/,$(filter-out $(bins_script),$(bins))) nshd.service nshd.sysusers
+files.out.int += go/pkg/ go/bin/ go/bin/*
-# Dependencies
-$(outdir)/bin/nshd-setuid: -ldl
-$(outdir)/nshd.service: $(var)user $(var)bindir
-$(outdir)/nshd.sysusers: $(var)user
-$(outdir)/bin/common.rb: $(var)conf_file
-
-$(outdir)/.gopath/bin/nshd: \
- $(outdir)/go/nshd/main.go \
- $(outdir)/go/nshd/nshd_files/users.go \
- $(outdir)/go/nshd/nshd_files/passwords.go
-$(outdir)/go/nshd/main.go: $(var)conf_file
-$(outdir)/go/nshd/nshd_files/users.go: $(var)bindir
-$(outdir)/go/nshd/nshd_files/passwords.go: $(var)shadow_file
-
-# Go: copy out of .gopath
-$(outdir)/bin/nshd: \
-$(outdir)/bin/%: $(outdir)/.gopath/bin/%
+# Go
+$(addprefix %/bin/,$(bins_go)): %/src
+ GOPATH=$(abspath $*) go install $(bins_go)
+$(outdir)/bin/%: $(outdir)/go/bin/%
cp -T $< $@
-# Go: compile+link
-$(outdir)/.gopath/bin/nshd: \
-$(outdir)/.gopath/bin/%: FORCE go-generate
- GOPATH=$(abspath $(outdir)/.gopath) go install $(@F)
-
-# C: compile
-$(outdir)/%.o: $(srcdir)/%.c $(var)CC $(var)CPPFLAGS $(var)CFLAGS
- $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $(filter-out $(var)%,$^)
-# C: link
-$(outdir)/bin/nshd-tester $(outdir)/bin/nshd-setuid: \
-$(outdir)/%: $(outdir)/%.o $(var)CC $(var)LDFLAGS
- $(CC) $(LDFLAGS) -o $@ $(filter-out $(var)%,$^)
-
+# C
+$(addprefix $(outdir)/bin/,$(bins_c)): \
+$(outdir)/%: $(srcdir)/%.c $(var.)CC $(var.)CPPFLAGS $(var.)CFLAGS
+ $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ $(filter-out $(var.)%,$^)
# Basic variable substitution
$(outdir)/%: $(srcdir)/%.in
- < $< sed $(foreach v,$(patsubst $(var)%,%,$(filter $(var)%,$^)), -e 's|@$v@|$($v)|g' ) > $@
+ < $< sed $(foreach v,$(patsubst $(var.)%,%,$(filter $(var.)%,$^)), -e 's|@$v@|$($v)|g' ) > $@
+
+# Dependencies
+$(outdir)/bin/nshd-setuid: -ldl
+$(outdir)/nshd.service: $(var.)user $(var.)bindir
+$(outdir)/nshd.sysusers: $(var.)user
+$(outdir)/bin/common.rb: $(var.)conf_file
+
+$(outdir)/go/src/nshd/main.go: $(var.)conf_file
+$(outdir)/go/src/nshd/nshd_files/users.go: $(var.)bindir
+$(outdir)/go/src/nshd/nshd_files/passwords.go: $(var.)shadow_file
+
+goconf = \
+ $(outdir)/go/src/nshd/main.go \
+ $(outdir)/go/src/nshd/nshd_files/users.go \
+ $(outdir)/go/src/nshd/nshd_files/passwords.go
+$(outdir)/go/bin/nshd: $(goconf) $(outdir)/$(files.generate)
+files.out.all += $(goconf)
# Install
-files.sys.all += $(addprefix $(bindir)/,$(programs) $(scripts)) $(systemunitdir)/nshd.socket $(systemunitdir)/nshd.service $(sysusersdir)/nshd.conf $(conf_file) $(shadow_file)
+files.sys.all += $(addprefix $(bindir)/,$(bins)) $(systemunitdir)/nshd.socket $(systemunitdir)/nshd.service $(sysusersdir)/nshd.conf $(conf_file) $(shadow_file)
$(DESTDIR)$(bindir)/%: $(outdir)/bin/%
$(NORMAL_INSTALL)
@@ -129,7 +120,7 @@ $(DESTDIR)$(bindir)/common.rb: $(srcdir)/bin/common.rb
$(DESTDIR)$(conf_file): $(srcdir)/parabola-hackers.yml
$(NORMAL_INSTALL)
install -TDm644 $< $@
-$(DESTDIR)$(shadow_file): $(var)user $(DESTDIR)$(sysusersdir)/nshd.conf
+$(DESTDIR)$(shadow_file): $(var.)user $(DESTDIR)$(sysusersdir)/nshd.conf
$(NORMAL_INSTALL)
install -d $(@D)
touch $@