diff options
author | EuAndreh <eu@euandre.org> | 2024-08-05 07:34:39 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2024-08-05 07:34:39 -0300 |
commit | 516ca9e257306420759b9531c7aac0c42872a778 (patch) | |
tree | 006687f9cfde35cab6bd49af52f5b0f6b171bfb2 | |
parent | rm src/cmd/main.go (diff) | |
download | gobang-516ca9e257306420759b9531c7aac0c42872a778.tar.gz gobang-516ca9e257306420759b9531c7aac0c42872a778.tar.xz |
Makefile: Build with "go tool compile" and "go tool link"
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | Makefile | 62 | ||||
-rw-r--r-- | src/gobang.go (renamed from src/lib.go) | 0 | ||||
-rw-r--r-- | tests/gobang.go (renamed from tests/lib_test.go) | 30 | ||||
-rw-r--r-- | tests/gobang_main.go | 7 |
5 files changed, 58 insertions, 44 deletions
@@ -1,2 +1,3 @@ -/*.bin +/src/*.a +/tests/*.a /tests/*.bin @@ -8,8 +8,8 @@ LANGUAGES = en PREFIX = /usr BINDIR = $(PREFIX)/bin LIBDIR = $(PREFIX)/lib +GOLIBDIR = $(LIBDIR)/go INCLUDEDIR = $(PREFIX)/include -LIBDDIR = $(PREFIX)/lib/$(NAME) SRCDIR = $(PREFIX)/src/$(NAME) SHAREDIR = $(PREFIX)/share LOCALEDIR = $(SHAREDIR)/locale @@ -22,19 +22,26 @@ LDLIBS = .SUFFIXES: -.SUFFIXES: .go .bin +.SUFFIXES: .go .a .bin +all: +include deps.mk + + sources = \ - go.mod \ - src/lib.go \ - src/cmd/main.go \ + src/$(NAME).go \ + +objects = \ + src/$(NAME).a \ + tests/$(NAME).a \ + tests/$(NAME)_main.a \ derived-assets = \ - $(NAME).bin \ - tests/lib_test.bin \ + $(objects) \ + tests/$(NAME)_main.bin \ side-assets = \ @@ -45,23 +52,28 @@ side-assets = \ all: $(derived-assets) -$(NAME).bin: src/lib.go src/cmd/main.go Makefile - go build -o $@ -v src/cmd/main.go +src/$(NAME).a: src/$(NAME).go + go tool compile $(GOCFLAGS) -o $@ -p $(*F) $*.go -tests/lib_test.bin: src/lib.go tests/lib_test.go Makefile - go test -c -o $@ -v $*.go +tests/$(NAME).a: tests/$(NAME).go src/$(NAME).go + go tool compile $(GOCFLAGS) -o $@ -p $(*F) $*.go src/$(NAME).go +tests/$(NAME)_main.a: tests/$(NAME)_main.go tests/$(NAME).a + go tool compile $(GOCFLAGS) -o $@ -I $(@D) $*.go +tests/$(NAME)_main.bin: tests/$(NAME)_main.a + go tool link $(GOLDFLAGS) -o $@ -L $(@D) $*.a -check-unit: tests/lib_test.bin - ./tests/lib_test.bin +$(objects): Makefile -integration-tests = \ - tests/cli-opts.sh \ -$(integration-tests): $(NAME).bin ALWAYS - sh $@ $(EXEC)$(NAME).bin + +check-unit: tests/$(NAME)_main.bin + ./tests/$(NAME)_main.bin + + +integration-tests = \ check-integration: $(integration-tests) @@ -83,23 +95,19 @@ clean: ## ensures that all installable artifacts are crafted beforehand. install: all mkdir -p \ - '$(DESTDIR)$(BINDIR)' \ + '$(DESTDIR)$(GOLIBDIR)' \ + '$(DESTDIR)$(SRCDIR)' \ - cp $(NAME).bin '$(DESTDIR)$(BINDIR)'/$(NAME) - for f in $(sources); do \ - dir='$(DESTDIR)$(SRCDIR)'/"`dirname "$${f#src/}"`"; \ - mkdir -p "$$dir"; \ - cp -P "$$f" "$$dir"; \ - done + cp src/$(NAME).a '$(DESTDIR)$(GOLIBDIR)' + cp $(sources) '$(DESTDIR)$(SRCDIR)' ## Uninstalls from $(DESTDIR)$(PREFIX). This is a perfect mirror ## of the "install" target, and removes *all* that was installed. ## A dedicated test asserts that this is always true. uninstall: rm -rf \ - '$(DESTDIR)$(BINDIR)'/$(NAME) \ - '$(DESTDIR)$(LIBDDIR)' \ - '$(DESTDIR)$(SRCDIR)' \ + '$(DESTDIR)$(GOLIBDIR)'/$(NAME).a \ + '$(DESTDIR)$(SRCDIR)' \ ALWAYS: diff --git a/src/lib.go b/src/gobang.go index 4ce13ff..4ce13ff 100644 --- a/src/lib.go +++ b/src/gobang.go diff --git a/tests/lib_test.go b/tests/gobang.go index 701747b..3abdf6f 100644 --- a/tests/lib_test.go +++ b/tests/gobang.go @@ -1,4 +1,4 @@ -package gobang_test +package gobang import ( "bytes" @@ -10,8 +10,6 @@ import ( "hash" "log/slog" "testing" - - "euandre.org/gobang/src" ) @@ -150,14 +148,14 @@ func testHash( vectors []pbkdfTestVector, ) { for i, v := range vectors { - out := gobang.PBKDF2Key( + out := PBKDF2Key( []byte(v.password), []byte(v.salt), v.iter, len(v.output), h, ) - gobang.AssertEqualI(t, i, out, v.output) + AssertEqualI(t, i, out, v.output) } } @@ -286,7 +284,7 @@ var good = []scryptTestVector { // }, } -const halfMax = gobang.MaxInt / 2 +const halfMax = MaxInt / 2 var bad = []scryptTestVector { {"p", "s", 0, 1, 1, nil}, // N == 0 {"p", "s", 1, 1, 1, nil}, // N == 1 @@ -296,7 +294,7 @@ var bad = []scryptTestVector { func TestKey(t *testing.T) { for i, v := range good { - k, err := gobang.Scrypt( + k, err := Scrypt( []byte(v.password), []byte(v.salt), v.N, @@ -304,11 +302,11 @@ func TestKey(t *testing.T) { v.p, len(v.output), ) - gobang.ErrorIf(t, err) - gobang.AssertEqualI(t, i, k, v.output) + ErrorIf(t, err) + AssertEqualI(t, i, k, v.output) } for _, v := range bad { - _, err := gobang.Scrypt( + _, err := Scrypt( []byte(v.password), []byte(v.salt), v.N, @@ -316,7 +314,7 @@ func TestKey(t *testing.T) { v.p, 32, ) - gobang.ErrorNil(t, err) + ErrorNil(t, err) } } @@ -326,11 +324,11 @@ func TestExample(t *testing.T) { // a good length. salt := []byte{0xc8, 0x28, 0xf2, 0x58, 0xa7, 0x6a, 0xad, 0x7b} - dk, err := gobang.Scrypt([]byte("some password"), salt, 1<<15, 8, 1, 32) - gobang.ErrorIf(t, err) + dk, err := Scrypt([]byte("some password"), salt, 1<<15, 8, 1, 32) + ErrorIf(t, err) given := base64.StdEncoding.EncodeToString(dk) - gobang.AssertEqual(t, given, expected) + AssertEqual(t, given, expected) } func TestSetLoggerOutput(t *testing.T) { @@ -349,8 +347,8 @@ func TestSetLoggerOutput(t *testing.T) { err := json.Unmarshal([]byte(s), &e) if err != nil { t.Fail() - // gobang.Mmain() - gobang.Main() + // Mmain() + Main() } if e.msg != "the message" { t.Fail() diff --git a/tests/gobang_main.go b/tests/gobang_main.go new file mode 100644 index 0000000..d5cb7f2 --- /dev/null +++ b/tests/gobang_main.go @@ -0,0 +1,7 @@ +package main + +import "gobang" + +func main() { + gobang.Main() +} |