summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2024-08-05 07:34:39 -0300
committerEuAndreh <eu@euandre.org>2024-08-05 07:34:39 -0300
commit516ca9e257306420759b9531c7aac0c42872a778 (patch)
tree006687f9cfde35cab6bd49af52f5b0f6b171bfb2
parentrm src/cmd/main.go (diff)
downloadgobang-516ca9e257306420759b9531c7aac0c42872a778.tar.gz
gobang-516ca9e257306420759b9531c7aac0c42872a778.tar.xz
Makefile: Build with "go tool compile" and "go tool link"
-rw-r--r--.gitignore3
-rw-r--r--Makefile62
-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.go7
5 files changed, 58 insertions, 44 deletions
diff --git a/.gitignore b/.gitignore
index 85a298a..5dc8bc3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
-/*.bin
+/src/*.a
+/tests/*.a
/tests/*.bin
diff --git a/Makefile b/Makefile
index 3221899..cba5d37 100644
--- a/Makefile
+++ b/Makefile
@@ -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()
+}