aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore4
-rw-r--r--Makefile17
-rwxr-xr-xbin/gentags19
-rw-r--r--rules.mk4
-rw-r--r--sys/libmath/blas.c5
-rw-r--r--sys/libmath/rules.mk1
-rw-r--r--sys/libmath/test.c2
7 files changed, 44 insertions, 8 deletions
diff --git a/.gitignore b/.gitignore
index 8e33690..fc20b4d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,7 +4,11 @@ build/
data/
share/
vendor/
+include/libc
sys/cc
sys/nixos
bin/fasttree
bin/mafft
+
+.cscope
+tags
diff --git a/Makefile b/Makefile
index 0821ef6..2d6485c 100644
--- a/Makefile
+++ b/Makefile
@@ -10,16 +10,23 @@ BIN_DIR := bin
LIB_DIR := lib
OBJ_DIR := build
+# C runtime library
+CINIT := $(LIB_DIR)/crt/crt1.o $(LIB_DIR)/crt/x86_64/crti.o `gcc --print-file-name=crtbeginT.o`
+CFINI := `gcc --print-file-name=crtendS.o` $(LIB_DIR)/crt/x86_64/crtn.o
+
# Flags, Libraries and Includes
-CFLAGS := -g -O3 -march=native -ffast-math -fno-strict-aliasing -fwrapv -fms-extensions -Wno-microsoft-anon-tag -Wno-incompatible-function-pointer-types
+CFLAGS := -g -O3 -march=native \
+ -ffast-math -fno-strict-aliasing -fwrapv -fms-extensions \
+ -Wno-microsoft-anon-tag -Wno-incompatible-function-pointer-types
+STATIC := -static -nodefaultlibs -nostartfiles
AFLAGS := -f elf64
-INCS := -I$(INC_DIR)
-ELIBS :=
+INCS := -isystem $(INC_DIR)/vendor/libc -I $(INC_DIR)
+ELIBS := -L$(LIB_DIR) -lc
# Named generic rules (must be evaluated lazily)
COMPILE = $(CC) -MMD $(CFLAGS) $(TCFLAGS) $(INCS) $(TCINCS) -o $@ -c $<
-LINK = $(CC) -MMD $(CFLAGS) $(TCFLAGS) -o $@ $^ $(ELIBS) $(TCLIBS)
-COMPLINK = $(CC) -MMD $(CFLAGS) $(TCFLAGS) $(INCS) $(TCINCS) -o $@ $^ $(ELIBS) $(TCLIBS)
+LINK = $(CC) -MMD $(CFLAGS) $(STATIC) $(TCFLAGS) -o $@ $(CINIT) $^ $(CFINI) $(TCLIBS) $(ELIBS)
+COMPLINK = $(CC) -MMD $(CFLAGS) $(STATIC) $(TCFLAGS) $u$(INCS) $(TCINCS) -o $@ $(CINIT) $^ $(CFINI) $(TCLIBS) $(ELIBS)
ASSEMBLE = $(AS) $(AFLAGS) $(TCFLAGS) -o $@ $<
ARCHIVE = $(AR) crs $@ $^
diff --git a/bin/gentags b/bin/gentags
new file mode 100755
index 0000000..f0494f0
--- /dev/null
+++ b/bin/gentags
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+CSCOPE_DIR="$PWD/.cscope"
+
+if [ ! -d "$CSCOPE_DIR" ]; then
+mkdir "$CSCOPE_DIR"
+fi
+
+echo "finding files ..."
+ROOT=/home/nolln/root
+find $ROOT \
+ -path "$ROOT/sys/*.[chs]" -prune -o \
+ -path "$ROOT/include/*.h" > "$CSCOPE_DIR/files"
+
+echo "adding files to cscope db: $ROOT/cscope.db ..."
+cscope -b -i "$CSCOPE_DIR/files"
+
+CSCOPE_DB="$ROOT/cscope.out"
+echo "exported CSCOPE_DB to: '$CSCOPE_DB'"
diff --git a/rules.mk b/rules.mk
index 0f81ea2..5260157 100644
--- a/rules.mk
+++ b/rules.mk
@@ -36,6 +36,10 @@ $(OBJ_DIR)/%: $(SRC_DIR)/%.c
.PHONY: targets
targets: $(LIBS) $(BINS)
+.PHONY: database
+database: $(LIBS) $(BINS)
+ gentags
+
.PHONY: clean
clean:
rm -f $(OBJS)
diff --git a/sys/libmath/blas.c b/sys/libmath/blas.c
index a672101..c2f7e6c 100644
--- a/sys/libmath/blas.c
+++ b/sys/libmath/blas.c
@@ -1,6 +1,6 @@
#include <u.h>
#include <libn.h>
-#include <vendor/cblas.h>
+#include <vendor/blas/cblas.h>
#include <x86intrin.h>
@@ -64,6 +64,7 @@ blas·scalevec(int len, double *x, double a)
* Daxpy
* y = ax + y
*/
+
static
void
@@ -416,7 +417,7 @@ main()
double *x, *y, *m[3];
double res[2], tprof[2];
- openblas_set_num_threads(1);
+ // openblas_set_num_threads(1);
x = malloc(sizeof(*x)*NCOL);
y = malloc(sizeof(*x)*NCOL);
diff --git a/sys/libmath/rules.mk b/sys/libmath/rules.mk
index 9f02522..049092a 100644
--- a/sys/libmath/rules.mk
+++ b/sys/libmath/rules.mk
@@ -31,6 +31,7 @@ BINS := $(BINS) $(BINS_$(d))
$(LIBS_$(d)): $(OBJS_$(d))
$(ARCHIVE)
+$(BINS_$(d)): TCFLAGS := -D_GNU_SOURCE
$(BINS_$(d)): TCLIBS := -lpthread -lm
$(BINS_$(d)): $(OBJS_$(d)) $(OBJ_DIR)/libn/libn.a $(LIB_DIR)/vendor/libblas.a
$(LINK)
diff --git a/sys/libmath/test.c b/sys/libmath/test.c
index 3dfaa31..485d549 100644
--- a/sys/libmath/test.c
+++ b/sys/libmath/test.c
@@ -1,6 +1,6 @@
#include <u.h>
#include <libn.h>
-#include <vendor/cblas.h>
+#include <vendor/blas/cblas.h>
#include <x86intrin.h>