Makefile · 869 bytes Raw Blame History
1 # Simple, but not-so-simple, Makefile
2 # (for karaoke_dsp Fortran module + test driver)
3 # 2025, mfw
4
5 FC := gfortran
6 FFLAGS := -O2 -Wall
7 MODDIR := src/karaoke_dsp
8 BINDIR := build
9 MODFLAGS := -J $(BINDIR)
10 SRCS := $(MODDIR)/dsp.f90
11 DRIVER := $(MODDIR)/dsp_driver.f90
12 MODULE_OBJ:= $(BINDIR)/dsp.o
13 DRIVER_OBJ:= $(BINDIR)/dsp_driver.o
14 EXE := $(BINDIR)/dsp_test
15
16 .PHONY: all clean
17
18 all: $(EXE)
19
20 # ensure build directory exists
21 $(BINDIR):
22 mkdir -p $@
23
24 # compile module
25 $(MODULE_OBJ): $(SRCS) | $(BINDIR)
26 $(FC) $(FFLAGS) $(MODFLAGS) -c $< -o $@
27
28 # compile driver (depends on the module .mod file in $(BINDIR))
29 $(DRIVER_OBJ): $(DRIVER) $(MODULE_OBJ)
30 $(FC) $(FFLAGS) $(MODFLAGS) -c $< -o $@
31
32 # link into executable
33 $(EXE): $(MODULE_OBJ) $(DRIVER_OBJ)
34 $(FC) $(FFLAGS) -o $@ \
35 $(MODFLAGS) \
36 $(MODULE_OBJ) $(DRIVER_OBJ)
37
38 clean:
39 rm -rf $(BINDIR)