diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 51 |
1 files changed, 44 insertions, 7 deletions
@@ -17,22 +17,23 @@ MANDIR = $(SHAREDIR)/man EXEC = ./ ## Where to store the installation. Empty by default. DESTDIR = -LDLIBS = +LDLIBS = --static -lscrypt-kdf GOCFLAGS = -I $(GOLIBDIR) GOLDFLAGS = -L $(GOLIBDIR) .SUFFIXES: -.SUFFIXES: .go .a .bin .bin-check +.SUFFIXES: .go .a .c .o .bin .bin-check + +.c.o: + $(CC) $(CFLAGS) -o $@ -c $< .go.a: - go tool compile $(GOCFLAGS) -I $(@D) -o $@ -p $(*F) \ - `find $< $$(if [ $(*F) != main ]; then \ - echo src/$(NAME).go src/version.go; fi) | uniq` + go tool compile $(GOCFLAGS) -I $(@D) -o $@ -p $(*F) $< .a.bin: - go tool link $(GOLDFLAGS) -L $(@D) -o $@ --extldflags '$(LDLIBS)' $< + go tool link $(GOLDFLAGS) -L $(@D) -o $@ --extldflags '$(LDLIBS)' $< @@ -47,6 +48,23 @@ functional-tests/lib.a = $(functional-tests/lib.go:.go=.a) fuzz-targets/lib.a = $(fuzz-targets/lib.go:.go=.a) benchmarks/lib.a = $(benchmarks/lib.go:.go=.a) +cgo.go = \ + src/_cgo_import.go \ + src/_cgo_gotypes.go \ + src/$(NAME).cgo1.go \ + +cgo.c = \ + src/_cgo_export.c \ + src/$(NAME).cgo2.c \ + +cgo.o = $(cgo.c:.c=.o) + +objects = \ + src/_cgo_.o \ + $(cgo.go) \ + $(cgo.c) \ + $(cgo.o) \ + sources = \ src/$(NAME).go \ src/version.go \ @@ -55,12 +73,15 @@ sources = \ derived-assets = \ src/version.go \ + $(objects) \ $(libs.a) \ $(mains.a) \ $(mains.bin) \ $(NAME).bin \ side-assets = \ + src/_cgo_export.h \ + src/_cgo_main.c \ tests/fuzz/corpus/ \ tests/benchmarks/*/main.txt \ @@ -71,13 +92,29 @@ side-assets = \ all: $(derived-assets) +$(objects): Makefile deps.mk $(libs.a): Makefile deps.mk $(libs.a): src/$(NAME).go src/version.go +$(libs.a): $(cgo.go) $(cgo.o) + +$(cgo.go) $(cgo.c) $(cgo.o): src/_cgo_.o + + +src/_cgo_.o: src/$(NAME).go + go tool cgo --objdir $(@D) src/$(NAME).go + +src/_cgo_import.go: src/_cgo_.o + go tool cgo --dynpackage $(NAME) --dynimport src/_cgo_.o --dynout $@ +src/$(NAME).a tests/$(NAME).a $(functional-tests/lib.a) $(benchmarks/lib.a): + go tool compile $(GOCFLAGS) -o $@ -p $(*F) $(cgo.go) src/version.go \ + `find $*.go | grep -Ev '^src/$(NAME)\.go$$'` + go tool pack r $@ $(cgo.o) $(fuzz-targets/lib.a): go tool compile $(GOCFLAGS) -o $@ -p $(NAME) -d=libfuzzer \ - src/version.go $*.go src/$(NAME).go + $*.go $(cgo.go) src/version.go + go tool pack r $@ $(cgo.o) src/version.go: Makefile echo 'package $(NAME); const Version = "$(VERSION)"' > $@ |