summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile59
1 files changed, 35 insertions, 24 deletions
diff --git a/Makefile b/Makefile
index 4ddef29..3a546fe 100644
--- a/Makefile
+++ b/Makefile
@@ -34,14 +34,15 @@ CGO_CPPFLAGS = $(CPPFLAGS) -U_FORTIFY_SOURCE
CGO_CFLAGS = $(CFLAGS) -O0 -Wno-unused-parameter
CGO_ENABLED = 1
-at.subdirs += src/lukeshu.com/git/go/libnslcd.git/proto
+at.subdirs += go/lukeshu.com/git/go/libnslcd.git/proto
-scripts = $(filter-out common.rb common.rb.in,$(notdir $(wildcard $(srcdir)/scripts/*))) common.rb
+programs = setuid nshd-tester nshd common.rb
+scripts = $(filter-out %.c %.o $(programs) common.rb common.rb.in,$(notdir $(wildcard $(srcdir)/bin/*)))
std.gen_files += LICENSE.lgpl-2.1.txt LICENSE.gpl-2.txt LICENSE.apache-2.0.txt
-std.out_files += bin/cmd-nshd nshd.service nshd.sysusers scripts/common.rb test/runner
-std.sys_files += $(addprefix $(bindir)/,nshd $(scripts)) $(systemunitdir)/nshd.socket $(systemunitdir)/nshd.service $(sysusersdir)/nshd.conf $(conf_file) $(shadow_file)
-std.clean_files += test/*.o pkg/ .tmp* .var* $(_out)
+std.out_files += $(addprefix bin/,$(programs)) nshd.service nshd.sysusers
+std.sys_files += $(addprefix $(bindir)/,$(programs) $(scripts)) $(systemunitdir)/nshd.socket $(systemunitdir)/nshd.service $(sysusersdir)/nshd.conf $(conf_file) $(shadow_file)
+std.clean_files += bin/*.o .gopath/ .tmp* .var* $(_out)
$(srcdir)/LICENSE.lgpl-2.1.txt: $(NET)
curl https://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt > $@
@@ -52,39 +53,44 @@ $(srcdir)/LICENSE.apache-2.0.txt: $(NET)
$(srcdir)/LICENSE.wtfpl-2.txt: $(NET)
curl http://www.wtfpl.net/txt/copying/ > $@
-_gen += src/lukeshu.com/git/go/libnslcd.git/proto/server/interface_backend.go
-_gen += src/lukeshu.com/git/go/libnslcd.git/proto/server/func_handlerequest.go
-_gen += src/lukeshu.com/git/go/libnslcd.git/proto/server/type_nilbackend.go
-_out += src/parabola_hackers/users.go
-_out += src/parabola_hackers/passwords.go
-_out += src/cmd-nshd/main.go
-$(outdir)/bin/%-nshd: $(call golang.src,$(srcdir)) $(_gen) $(_out)
- $(call golang.install,$(topsrcdir),cmd-nshd)
+_gen += go/lukeshu.com/git/go/libnslcd.git/proto/server/interface_backend.go
+_gen += go/lukeshu.com/git/go/libnslcd.git/proto/server/func_handlerequest.go
+_gen += go/lukeshu.com/git/go/libnslcd.git/proto/server/type_nilbackend.go
+_out += go/parabola_hackers/users.go
+_out += go/parabola_hackers/passwords.go
+_out += go/cmd-nshd/main.go
+$(outdir)/bin/nshd: \
+$(outdir)/bin/%: $(outdir)/.gopath/bin/cmd-%
+ cp -T $< $@
+$(outdir)/.gopath/src: $(golang.var)
+ rm -rf -- $(@D)
+ mkdir $(@D)
+ ln -sr $(topsrcdir)/go $@
+ touch $@
+$(outdir)/.gopath/bin/cmd-nshd: $(call golang.src,$(outdir)/.gopath) $(_gen) $(_out)
+ $(call golang.install,$(topoutdir)/.gopath,cmd-nshd)
$(outdir)/%.o: $(srcdir)/%.c $(var)CC $(var)CPPFLAGS $(var)CFLAGS
$(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $(filter-out $(var)%,$^)
+$(outdir)/bin/nshd-tester $(outdir)/bin/setuid: \
$(outdir)/%: $(outdir)/%.o $(var)CC $(var)LDFLAGS
$(CC) $(LDFLAGS) -o $@ $(filter-out $(var)%,$^)
$(outdir)/%: $(srcdir)/%.in
< $< sed $(foreach v,$(patsubst $(var)%,%,$(filter $(var)%,$^)), -e 's|@$v@|$($v)|g' ) > $@
+$(outdir)/bin/setuid: -ldl
$(outdir)/nshd.service: $(var)user $(var)bindir
$(outdir)/nshd.sysusers: $(var)user
-$(outdir)/scripts/common.rb: $(var)conf_file
-$(outdir)/src/cmd-nshd/main.go: $(var)conf_file
-$(outdir)/src/parabola_hackers/users.go: $(var)bindir
-$(outdir)/src/parabola_hackers/passwords.go: $(var)shadow_file
+$(outdir)/bin/common.rb: $(var)conf_file
+$(outdir)/go/cmd-nshd/main.go: $(var)conf_file
+$(outdir)/go/parabola_hackers/users.go: $(var)bindir
+$(outdir)/go/parabola_hackers/passwords.go: $(var)shadow_file
-$(DESTDIR)$(bindir)/%: $(outdir)/bin/cmd-%
- $(NORMAL_INSTALL)
- install -TDm755 $< $@
-$(DESTDIR)$(bindir)/%: $(srcdir)/scripts/%
+# Patterns
+$(DESTDIR)$(bindir)/%: $(outdir)/bin/%
$(NORMAL_INSTALL)
install -TDm755 $< $@
-$(DESTDIR)$(bindir)/common.rb: $(srcdir)/scripts/common.rb
- $(NORMAL_INSTALL)
- install -TDm644 $< $@
$(DESTDIR)$(systemunitdir)/%.socket: $(outdir)/%.socket
$(NORMAL_INSTALL)
install -TDm644 $< $@
@@ -94,6 +100,11 @@ $(DESTDIR)$(systemunitdir)/%.service: $(outdir)/%.service
$(DESTDIR)$(sysusersdir)/%.conf: $(outdir)/%.sysusers
$(NORMAL_INSTALL)
install -TDm644 $< $@
+
+# Specific files
+$(DESTDIR)$(bindir)/common.rb: $(srcdir)/bin/common.rb
+ $(NORMAL_INSTALL)
+ install -TDm644 $< $@
$(DESTDIR)$(conf_file): $(srcdir)/parabola-hackers.yml
$(NORMAL_INSTALL)
install -TDm644 $< $@