From dc04e5aae6c52d05f1ce8e8fbc3b97041fb84a3f Mon Sep 17 00:00:00 2001
From: Dorian Stoll <dorian.stoll@uni-potsdam.de>
Date: Sun, 9 Jun 2024 21:33:39 +0200
Subject: [PATCH] zellularautomat: c: Switch to Meson

---
 .cmake-format.json                           |  6 --
 CMakeLists.txt                               | 13 -----
 meson.build                                  | 11 ++++
 src/benchmarks/meson.build                   |  1 +
 src/benchmarks/zellularautomat/c/Makefile    | 60 --------------------
 src/benchmarks/zellularautomat/c/meson.build | 24 ++++++++
 src/benchmarks/zellularautomat/meson.build   |  1 +
 src/meson.build                              |  1 +
 8 files changed, 38 insertions(+), 79 deletions(-)
 delete mode 100644 .cmake-format.json
 delete mode 100644 CMakeLists.txt
 create mode 100644 meson.build
 create mode 100644 src/benchmarks/meson.build
 delete mode 100644 src/benchmarks/zellularautomat/c/Makefile
 create mode 100644 src/benchmarks/zellularautomat/c/meson.build
 create mode 100644 src/benchmarks/zellularautomat/meson.build
 create mode 100644 src/meson.build

diff --git a/.cmake-format.json b/.cmake-format.json
deleted file mode 100644
index f0c505c3..00000000
--- a/.cmake-format.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-	"format": {
-		"line_width": 100,
-		"use_tabchars": true
-	}
-}
diff --git a/CMakeLists.txt b/CMakeLists.txt
deleted file mode 100644
index f6f53d44..00000000
--- a/CMakeLists.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-cmake_minimum_required(VERSION 3.14)
-project(praktikum)
-
-# Always create a compile_commands.json for clangd
-set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
-
-# Enable optimization by default
-if(NOT CMAKE_BUILD_TYPE)
-	set(CMAKE_BUILD_TYPE Release)
-endif()
-
-# Enable LTO
-set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
diff --git a/meson.build b/meson.build
new file mode 100644
index 00000000..39cd472e
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,11 @@
+project(
+	'praktikum',
+	'c',
+	default_options: [
+		'warning_level=3',
+		'buildtype=release',
+		'b_lto=true',
+	],
+)
+
+subdir('src')
diff --git a/src/benchmarks/meson.build b/src/benchmarks/meson.build
new file mode 100644
index 00000000..cd38a8b2
--- /dev/null
+++ b/src/benchmarks/meson.build
@@ -0,0 +1 @@
+subdir('zellularautomat')
diff --git a/src/benchmarks/zellularautomat/c/Makefile b/src/benchmarks/zellularautomat/c/Makefile
deleted file mode 100644
index 86371619..00000000
--- a/src/benchmarks/zellularautomat/c/Makefile
+++ /dev/null
@@ -1,60 +0,0 @@
-BASE_CC=gcc
-
-COMMON_CFLAGS=-O2
-COMMON_LDFLAGS=-lcrypto -lrt
-
-BASE_CFLAGS=-Wall -std=gnu99 -pedantic
-
-OMP_CFLAGS=-fopenmp
-
-C_DEPS=ca_common.c random.c
-
-TARGETS=ca_openmp
-
-.PHONY: all
-all: $(TARGETS)
-
-.PHONY: cpu
-cpu: ca_openmp
-
-ca_openmp: ca_openmp.c $(C_DEPS)
-	$(BASE_CC) $(COMMON_CFLAGS) $(BASE_CFLAGS) $(OMP_CFLAGS) $^ $(COMMON_LDFLAGS) -o $@
-
-.PHONY: test
-
-test: $(TARGETS)
-	@for ITS in 10 31 57 100; do \
-		for LINES in 10 33 47 100; do \
-			echo "$$LINES lines, $$ITS iterations"; \
-			for BINARY in $^; do printf '%-10s\t' $$BINARY; ./$$BINARY $$LINES $$ITS; done; \
-		done \
-	done
-
-.PHONY: bench
-
-bench: ca_openmp
-	@for ITS in 128 256 512; do \
-		for LINES in 1000 10000 50000; do \
-			echo "$$LINES lines, $$ITS iterations"; \
-			for BINARY in $^; do printf '%-10s\t' $$BINARY; time ./$$BINARY $$LINES $$ITS; done; \
-		done \
-	done
-
-.PHONY: omp_scaling
-
-omp_scaling: ca_openmp
-	@for ITS in 128 256 512; do \
-		for LINES in 1000 10000 50000; do \
-			echo "$$LINES lines, $$ITS iterations"; \
-			for THREADS in `seq \`nproc\``; do \
-				printf "$$THREADS threads\t"; \
-				OMP_NUM_THREADS=$$THREADS ./ca_openmp $$LINES $$ITS; \
-			done; \
-		done; \
-	done
-
-.PHONY: clean
-
-clean:
-	rm -f *.o
-	rm -f $(TARGETS)
diff --git a/src/benchmarks/zellularautomat/c/meson.build b/src/benchmarks/zellularautomat/c/meson.build
new file mode 100644
index 00000000..4ff650e7
--- /dev/null
+++ b/src/benchmarks/zellularautomat/c/meson.build
@@ -0,0 +1,24 @@
+cc = meson.get_compiler('c')
+
+sources = [
+	'ca_common.c',
+	'ca_openmp.c',
+	'random.c',
+]
+
+dependencies = [
+	dependency('openmp'),
+	cc.find_library('crypto'),
+	cc.find_library('rt'),
+]
+
+options = [
+	'c_std=c99',
+]
+
+executable(
+	'zellularautomat-c',
+	sources,
+	dependencies: dependencies,
+	override_options: options,
+)
diff --git a/src/benchmarks/zellularautomat/meson.build b/src/benchmarks/zellularautomat/meson.build
new file mode 100644
index 00000000..76d1974f
--- /dev/null
+++ b/src/benchmarks/zellularautomat/meson.build
@@ -0,0 +1 @@
+subdir('c')
diff --git a/src/meson.build b/src/meson.build
new file mode 100644
index 00000000..46c5c1ca
--- /dev/null
+++ b/src/meson.build
@@ -0,0 +1 @@
+subdir('benchmarks')
-- 
GitLab