summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2024-10-18 13:45:15 -0300
committerEuAndreh <eu@euandre.org>2024-10-18 18:04:41 -0300
commit804ca010dd354ff30e12dbf2c40dcb83e9820918 (patch)
tree434bd43a59308089c1de4e38fb6980fc61a3f9c4 /Makefile
parentAdd baseline functional test, fuzz target and benchmark (diff)
downloadscrypt-804ca010dd354ff30e12dbf2c40dcb83e9820918.tar.gz
scrypt-804ca010dd354ff30e12dbf2c40dcb83e9820918.tar.xz
Remove Go code in favor of upstream libscrypt-kdf
Adapt build to handle cgo shenanigans.
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile51
1 files changed, 44 insertions, 7 deletions
diff --git a/Makefile b/Makefile
index b25ed41..ca227e9 100644
--- a/Makefile
+++ b/Makefile
@@ -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)"' > $@