From 7371d1028b20e72991cba0fd85469f8dd953ca1d Mon Sep 17 00:00:00 2001 From: Jacob McDonnell Date: Sat, 4 Apr 2026 21:44:15 -0400 Subject: build: Restructured project --- .gitmodules | 3 +++ Makefile | 28 ++++++--------------- example.mat | Bin 192 -> 0 bytes example/Makefile | 18 ++++++++++++++ example/example.mat | Bin 0 -> 192 bytes example/libMatfile-test.m | 4 +++ example/main.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++ mk | 1 + src/Makefile | 18 ++++++++++++++ src/main.c | 61 ---------------------------------------------- test.mat | Bin 224 -> 0 bytes 11 files changed, 113 insertions(+), 81 deletions(-) create mode 100644 .gitmodules delete mode 100644 example.mat create mode 100644 example/Makefile create mode 100644 example/example.mat create mode 100644 example/libMatfile-test.m create mode 100644 example/main.c create mode 160000 mk create mode 100644 src/Makefile delete mode 100644 src/main.c delete mode 100644 test.mat diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..e4be46b --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "mk"] + path = mk + url = https://git.mcdonnell.dev/gnu-make-templates.git diff --git a/Makefile b/Makefile index 7746ba9..4bb3bef 100644 --- a/Makefile +++ b/Makefile @@ -1,21 +1,9 @@ -CC = gcc-15 -CFLAGS = -std=c17 \ - -Wall \ - -Werror \ - -Wextra \ - -Wpedantic \ - -Iinclude -SRCS = src/main.c \ - src/matfile.c -PROG = main - -all: $(PROG) - -$(PROG): $(SRCS) - $(CC) $(CFLAGS) -o $@ $^ - -clean: - rm -rf $(PROG) - -.PHONY: all clean +# +# Copyright (c) 2026 Jacob McDonnell +# +# SPDX-License-Identifier: BSD-2-Clause +# +SUBDIRS = src example + +include mk/mk/mcd.subdir.mk diff --git a/example.mat b/example.mat deleted file mode 100644 index 28494a0..0000000 Binary files a/example.mat and /dev/null differ diff --git a/example/Makefile b/example/Makefile new file mode 100644 index 0000000..6284df3 --- /dev/null +++ b/example/Makefile @@ -0,0 +1,18 @@ +# +# Copyright (c) 2026 Jacob McDonnell +# +# SPDX-License-Identifier: BSD-2-Clause +# +PROG = main +SRCS = main.c +CFLAGS = -Wall \ + -Werror \ + -Wextra \ + -Wpedantic \ + -I../include + -std=c17 +LDFLAGS = -L../src \ + -lMatfile + +include ../mk/mk/mcd.prog.mk + diff --git a/example/example.mat b/example/example.mat new file mode 100644 index 0000000..28494a0 Binary files /dev/null and b/example/example.mat differ diff --git a/example/libMatfile-test.m b/example/libMatfile-test.m new file mode 100644 index 0000000..51870db --- /dev/null +++ b/example/libMatfile-test.m @@ -0,0 +1,4 @@ +load "test.mat" +disp(A); +disp(doubles); + diff --git a/example/main.c b/example/main.c new file mode 100644 index 0000000..bda4c89 --- /dev/null +++ b/example/main.c @@ -0,0 +1,61 @@ +#include +#include +#include +#include + +double floats[5] = {0.0, 1.0, 3.14, 2.72, 5.5}; + +int main(void) { + FILE *fp = fopen("test.mat", "w"); + if (fp == NULL) { + perror("fopen"); + return -1; + } + + // Write File Header + assert(write_header(fp)); + + // Setup Array Dimensions + int32_t dims[2] = {1, 5}; + mData_t dim_data; + dim_data.data = (void *)&dims; + dim_data.tag.type = miINT32; + dim_data.tag.size = 8; + + // Array Flags + mArrayFlags_t flags; + memset(&flags, 0, sizeof(flags)); + flags.global = 0; + flags.complex = 0; + flags.logical = 0; + flags.class = mxDOUBLE_CLASS; + + mData_t flags_data; + flags_data.tag.type = miUINT32; + flags_data.tag.size = 8; + flags_data.data = (void *)&flags; + + // Name + mSmallData_t name; + name.tag.type = miINT8; + name.tag.size = 1; + name.data = 'A'; + + mData_t data; + data.tag.type = miDOUBLE; + data.tag.size = sizeof(floats); + data.data = (void *)floats; + + mTag_t array; + array.type = miMATRIX; + array.size = 96; + + fwrite((void *)&array, 1, sizeof(array), fp); + write_data(fp, flags_data); + write_data(fp, dim_data); + write_small_data(fp, name); + write_data(fp, data); + + fclose(fp); + return 0; +} diff --git a/mk b/mk new file mode 160000 index 0000000..d28e144 --- /dev/null +++ b/mk @@ -0,0 +1 @@ +Subproject commit d28e14493a7938a1bf63623a724edb665eb196c6 diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 0000000..2068926 --- /dev/null +++ b/src/Makefile @@ -0,0 +1,18 @@ +# +# Copyright (c) 2026 Jacob McDonnell +# +# SPDX-License-Identifier: BSD-2-Clause +# +LIB = Matfile +SHLIB_MAJOR = 1 +SHLIB_MINOR = 1 +CFLAGS = -Wall \ + -Werror \ + -Wextra \ + -Wpedantic \ + -std=c17 \ + -I../include +SRCS = matfile.c + +include ../mk/mk/mcd.lib.mk + diff --git a/src/main.c b/src/main.c deleted file mode 100644 index dda67fe..0000000 --- a/src/main.c +++ /dev/null @@ -1,61 +0,0 @@ -#include -#include -#include -#include "matfile.h" - -double floats[5] = {0.0, 1.0, 3.14, 2.72, 5.5}; - -int main(void) { - FILE *fp = fopen("test.mat", "w"); - if (fp == NULL) { - perror("fopen"); - return -1; - } - - // Write File Header - assert(write_header(fp)); - - // Setup Array Dimensions - int32_t dims[2] = {1, 5}; - mData_t dim_data; - dim_data.data = (void *)&dims; - dim_data.tag.type = miINT32; - dim_data.tag.size = 8; - - // Array Flags - mArrayFlags_t flags; - memset(&flags, 0, sizeof(flags)); - flags.global = 0; - flags.complex = 0; - flags.logical = 0; - flags.class = mxDOUBLE_CLASS; - - mData_t flags_data; - flags_data.tag.type = miUINT32; - flags_data.tag.size = 8; - flags_data.data = (void *)&flags; - - // Name - mSmallData_t name; - name.tag.type = miINT8; - name.tag.size = 1; - name.data = 'A'; - - mData_t data; - data.tag.type = miDOUBLE; - data.tag.size = sizeof(floats); - data.data = (void *)floats; - - mTag_t array; - array.type = miMATRIX; - array.size = 96; - - fwrite((void *)&array, 1, sizeof(array), fp); - write_data(fp, flags_data); - write_data(fp, dim_data); - write_small_data(fp, name); - write_data(fp, data); - - fclose(fp); - return 0; -} diff --git a/test.mat b/test.mat deleted file mode 100644 index a338ead..0000000 Binary files a/test.mat and /dev/null differ -- cgit v1.2.3