fortrangoingonforty/karaopy / 92e11fb

Browse files

build things, makefile for the fortran

Authored by mfwolffe <wolffemf@dukes.jmu.edu>
SHA
92e11fbbffffba381cf878d079a518f744975906
Parents
cc8ce53
Tree
5005419

3 changed files

StatusFile+-
A Makefile 39 0
A pyproject.toml 8 0
A setup.py 18 0
Makefileadded
@@ -0,0 +1,39 @@
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)
pyproject.tomladded
@@ -0,0 +1,8 @@
1
+
2
+[build-system]
3
+requires = [
4
+  "setuptools>=61.0",
5
+  "wheel",
6
+  "numpy>=1.20"
7
+]
8
+build-backend = "setuptools.build_meta"
setup.pyadded
@@ -0,0 +1,18 @@
1
+# setup.py
2
+from numpy.distutils.core import setup, Extension
3
+
4
+ext = Extension(
5
+    name="dsp",
6
+    sources=["src/karaoke_dsp/dsp.f90"],
7
+    f2py_options=["--quiet"],
8
+)
9
+
10
+setup(
11
+    name="karaoke-dsp",
12
+    version="0.1.0",
13
+    description="Gesture-driven karaoke DSP (mid/side) module",
14
+    package_dir={"": "src"},
15
+    packages=["karaoke_dsp"],
16
+    ext_modules=[ext],
17
+    install_requires=["numpy"],
18
+)