diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index bc5506b..a95b602 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -29,3 +29,9 @@ jobs: - name: Tangle run: nix-shell --run 'make tangle' + + - name: Build lib + run: nix-shell --run 'make lib' + + - name: Build bench + run: nix-shell --run 'make lib' diff --git a/Makefile b/Makefile index 5c12e14..e885a22 100644 --- a/Makefile +++ b/Makefile @@ -8,11 +8,29 @@ include ./etc/config/$(CONFIG).mk include ./bench/config.mk MAIN = README.org +OBJ_FILES = $(patsubst %.cxx,%.o,$(filter-out %.hpp,$(SOURCES))) +DEP_FILES = $(patsubst %.o,%.d,$(OBJ_FILES)) +SHARED_LIBRARY = lib/libatrip.so +STATIC_LIBRARY = lib/libatrip.a + +lib: ctf +lib: $(SHARED_LIBRARY) $(STATIC_LIBRARY) + +$(SHARED_LIBRARY): $(OBJ_FILES) + mkdir -p $(@D) + $(CXX) -shared $< $(CXXFLAGS) $(LDFLAGS) -o $@ + +$(STATIC_LIBRARY): $(OBJ_FILES) + mkdir -p $(@D) + $(AR) rcs $@ $< $(SOURCES_FILE): $(MAIN) config.el echo -n "SOURCES = " > $@ $(EMACS) --eval '(atrip-print-sources)' >> $@ +print: + $(info $(filter-out %.hpp,$(SOURCES))) + $(SOURCES): $(MAIN) $(call tangle,$<) @@ -33,3 +51,5 @@ bench: $(BENCH_TARGETS) %.o: %.cxx $(CXX) -c $< $(CXXFLAGS) -o $@ +%.d: %.cxx + $(CXX) -M $< $(CXXFLAGS) -o $@ diff --git a/bench/config.mk b/bench/config.mk index 4e09f2f..6ce132a 100644 --- a/bench/config.mk +++ b/bench/config.mk @@ -3,5 +3,7 @@ BENCH_TARGETS = $(patsubst %.cxx,%,$(BENCH_SOURCES)) $(BENCH_TARGETS): CXXFLAGS += -I. $(BENCH_TARGETS): CXXFLAGS += -fopenmp +$(BENCH_TARGETS): lib bench-clean: -rm -v $(BENCH_TARGETS) + diff --git a/config.el b/config.el index f837321..290ca58 100644 --- a/config.el +++ b/config.el @@ -29,6 +29,7 @@ (atrip-def-hdr atrip-unions-h "Unions.hpp") (atrip-def-hdr atrip-tuples-h "Tuples.hpp") (atrip-def-hdr atrip-equations-h "Equations.hpp") +(atrip-def-hdr atrip-debug-h "Debug.hpp") (atrip-def-hdr atrip-atrip-h "Atrip.hpp") (atrip-def-src atrip-atrip-cxx "Atrip.cxx") diff --git a/shell.nix b/shell.nix index 5550b0d..4630cd4 100644 --- a/shell.nix +++ b/shell.nix @@ -10,10 +10,15 @@ pkgs.mkShell rec { gcc blas openmpi + mpi emacs ]; + openblas = pkgs.openblas.override { + enableStatic = true; + }; + scalapack = import ./etc/nix/scalapack.nix { lib = pkgs.lib; stdenv = pkgs.stdenv; @@ -29,6 +34,7 @@ pkgs.mkShell rec { shellHook = '' export LAPACK_PATH=${pkgs.lapack} export BLAS_PATH=${pkgs.blas} + export OPENBLAS_PATH=${openblas} export SCALAPACK_PATH=${scalapack} export LD_LIBRARY_PATH=${scalapack}/lib:$LD_LIBRARY_PATH '';