diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 4eb987fc2..82f9caff4 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -71,3 +71,5 @@ jobs: if: contains(matrix.os, 'ubuntu') && contains(matrix.gcc_v, '9') run: | make -f Makefile.manual + make -f Makefile.manual test + make -f Makefile.manual clean diff --git a/Makefile.manual b/Makefile.manual index a3e59040e..3fd085ed6 100644 --- a/Makefile.manual +++ b/Makefile.manual @@ -1,17 +1,21 @@ # Fortran stdlib Makefile FC = gfortran -FCFLAGS=-O0 +FFLAGS = -Wall -Wextra -Wimplicit-interface -fPIC -g -fcheck=all -.PHONY: all clean +export FC +export FFLAGS -all: stdlib tests +.PHONY: all clean test -stdlib: - $(MAKE) -f Makefile.manual FC=${FC} FCFLAGS=${FCFLAGS} --directory=src +all: + $(MAKE) -f Makefile.manual --directory=src + $(MAKE) -f Makefile.manual --directory=src/tests -tests: stdlib - $(MAKE) -f Makefile.manual FC=${FC} FCFLAGS=${FCFLAGS} --directory=src/tests +test: + $(MAKE) -f Makefile.manual --directory=src/tests test + @echo + @echo "All tests passed." clean: $(MAKE) -f Makefile.manual clean --directory=src diff --git a/src/Makefile.manual b/src/Makefile.manual index 05640fc34..0c27ff41c 100644 --- a/src/Makefile.manual +++ b/src/Makefile.manual @@ -1,20 +1,19 @@ +LIB = libstdlib.a + OBJS = stdlib_experimental_ascii.o \ stdlib_experimental_error.o \ stdlib_experimental_io.o \ + f18estop.o .PHONY: all clean -.SUFFIXES: .f90 .o - -all: $(OBJS) -.f90.o: - $(FC) $(FCFLAGS) -c $< +all: $(LIB) -%.o: %.mod - -stdlib_experimental_ascii.o: stdlib_experimental_ascii.f90 -stdlib_experimental_error.o: stdlib_experimental_error.f90 -stdlib_experimental_io.o: stdlib_experimental_io.f90 +$(LIB): $(OBJS) + ar rcs $@ $(OBJS) clean: - $(RM) *.o *.mod + $(RM) $(LIB) $(OBJS) *.mod + +%.o: %.f90 + $(FC) $(FFLAGS) -c $< diff --git a/src/tests/Makefile.manual b/src/tests/Makefile.manual index 2669a98f8..778f3a81a 100644 --- a/src/tests/Makefile.manual +++ b/src/tests/Makefile.manual @@ -1,13 +1,13 @@ -.PHONY: all clean +.PHONY: all clean test -all: ascii/test_ascii loadtxt/test_loadtxt - -ascii/test_ascii: +all: $(MAKE) -f Makefile.manual --directory=ascii - -loadtxt/test_loadtxt: $(MAKE) -f Makefile.manual --directory=loadtxt +test: + $(MAKE) -f Makefile.manual --directory=ascii test + $(MAKE) -f Makefile.manual --directory=loadtxt test + clean: $(MAKE) -f Makefile.manual --directory=ascii clean $(MAKE) -f Makefile.manual --directory=loadtxt clean diff --git a/src/tests/ascii/Makefile.manual b/src/tests/ascii/Makefile.manual index f2d9e03c6..4d555cb19 100644 --- a/src/tests/ascii/Makefile.manual +++ b/src/tests/ascii/Makefile.manual @@ -1,17 +1,21 @@ +PROG = test_ascii +OBJS = test_ascii.o + CPPFLAGS = -I../.. -OBJS = ../../stdlib_experimental_ascii.o \ - ../../stdlib_experimental_error.o +LDFLAGS = -L../.. -lstdlib -.PHONY: all clean -.SUFFIXES: .f90 .o +.PHONY: all clean test -all: test_ascii +all: $(PROG) -test_ascii: test_ascii.f90 $(OBJS) - $(FC) $(FCFLAGS) $(CPPFLAGS) $< -o $@ $(OBJS) +$(PROG): $(OBJS) + $(FC) $(FFLAGS) $(CPPFLAGS) -o $@ $(OBJS) $(LDFLAGS) -%.o: %.mod +test: + ./$(PROG) clean: - $(RM) test_ascii - $(RM) *.o *.mod + $(RM) $(PROG) $(OBJS) *.mod + +%.o: %.f90 + $(FC) $(FFLAGS) $(CPPFLAGS) -c $< diff --git a/src/tests/loadtxt/Makefile.manual b/src/tests/loadtxt/Makefile.manual index 716f41678..f86861866 100644 --- a/src/tests/loadtxt/Makefile.manual +++ b/src/tests/loadtxt/Makefile.manual @@ -1,20 +1,25 @@ CPPFLAGS = -I../.. -OBJS = ../../stdlib_experimental_error.o \ - ../../stdlib_experimental_io.o +LDFLAGS = -L../.. -lstdlib -.PHONY: all clean -.SUFFIXES: .f90 .o +.PHONY: all clean test -all: test_loadtxt test_savetxt +PROGS = test_loadtxt test_savetxt test_loadtxt_qp test_savetxt_qp +OBJS = $(PROGS:=.o) -test_loadtxt: test_loadtxt.f90 $(OBJS) - $(FC) $(FCFLAGS) $(CPPFLAGS) $< -o $@ $(OBJS) -test_savetxt: test_savetxt.f90 $(OBJS) - $(FC) $(FCFLAGS) $(CPPFLAGS) $< -o $@ $(OBJS) +all: $(PROGS) -%.o: %.mod +$(PROGS): %: %.o + $(FC) $(FFLAGS) $(CPPFLAGS) -o $@ $^ $(LDFLAGS) + +test: + ./test_loadtxt + ./test_loadtxt_qp + ./test_savetxt + ./test_savetxt_qp clean: - $(RM) test_loadtxt test_savetxt - $(RM) *.o *.mod + $(RM) $(PROGS) $(OBJS) tmp.dat tmp_qp.dat + +%.o: %.f90 + $(FC) $(FFLAGS) $(CPPFLAGS) -c $<