From 374311b891c587bbeb554057e04b55f69073d1af Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Fri, 3 Feb 2017 02:44:33 -0500 Subject: Less magic in the build system; don't hide the go workspace. --- Makefile | 87 +++++++++++++++++++++++++++++----------------------------------- 1 file changed, 39 insertions(+), 48 deletions(-) (limited to 'Makefile') 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 $@ -- cgit v1.2.2