star-uvm

Spatial structuring of unstructured volumetric meshes
git clone git://git.meso-star.fr/star-uvm.git
Log | Files | Refs | README | LICENSE

commit a1665a50d3a9a7d08ffd3ad73db8d4c6bc7014e0
parent 633ffadce5a03eaa839cb18cf4212afa28679fd0
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Fri, 23 May 2025 12:06:19 +0200

Makefile updates

Several small changes to simplify the build system.

Diffstat:
MMakefile | 106++++++++++++++++++++++++++++++++++++++++++-------------------------------------
Mconfig.mk | 4++--
2 files changed, 58 insertions(+), 52 deletions(-)

diff --git a/Makefile b/Makefile @@ -14,7 +14,7 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. */ .POSIX: -.SUFFIXES: .b .c .d .o +.SUFFIXES: .t .c .d .o include config.mk @@ -22,8 +22,8 @@ LIBNAME_STATIC = libsuvm.a LIBNAME_SHARED = libsuvm.so LIBNAME = $(LIBNAME_$(LIB_TYPE)) -default: library $(ADDONS) -all: default tests +default: library +all: default tests $(ADDON) ################################################################################ # Library building @@ -37,6 +37,9 @@ SRC =\ OBJ = $(SRC:.c=.o) DEP = $(SRC:.c=.d) +CFLAGS_LIB = -std=c99 $(CFLAGS_SO) $(INCS) -DSUVM_SHARED_BUILD +LDFLAGS_LIB = $(LDFLAGS_SO) $(LIBS) + library: .config $(DEP) @$(MAKE) -fMakefile $$(for i in $(DEP); do echo -f $${i}; done) \ $$(if [ -n "$(LIBNAME)" ]; then\ @@ -48,7 +51,7 @@ library: .config $(DEP) $(DEP) $(OBJ): config.mk $(LIBNAME_SHARED): $(OBJ) - $(CC) -std=c99 $(CFLAGS_SO) $(INCS) -o $@ $(OBJ) $(LDFLAGS_SO) $(LIBS) + $(CC) $(CFLAGS_LIB) -o $@ $(OBJ) $(LDFLAGS_LIB) $(LIBNAME_STATIC): libsuvm.o $(AR) -rc $@ $? @@ -64,14 +67,10 @@ libsuvm.o: $(OBJ) @echo "config done" > $@ .c.d: - @$(CC) -std=c99 $(CFLAGS_SO) $(INCS) -MM -MT "$(@:.d=.o) $@" $< -MF $@ + @$(CC) $(CFLAGS_LIB) -MM -MT "$(@:.d=.o) $@" $< -MF $@ .c.o: - $(CC) -std=c99 $(CFLAGS_SO) $(INCS) -DSUVM_SHARED_BUILD -c $< -o $@ - -clean: clean_test clean_utils - rm -f $(DEP) $(OBJ) $(LIBNAME) - rm -f .config libsuvm.o suvm.pc suvm-local.pc + $(CC) $(CFLAGS_LIB) -c $< -o $@ ################################################################################ # Installation @@ -92,21 +91,18 @@ suvm-local.pc: suvm.pc.in -e 's#@RSYS_VERSION@#$(RSYS_VERSION)#g'\ suvm.pc.in > $@ -install: library pkg $(INSTALL_$(ADDON)) - mkdir -p "$(DESTDIR)$(INCPREFIX)/star" - mkdir -p "$(DESTDIR)$(LIBPREFIX)" - mkdir -p "$(DESTDIR)$(LIBPREFIX)/pkgconfig" - mkdir -p "$(DESTDIR)$(PREFIX)/share/doc/star-uvm" - cp $(LIBNAME) "$(DESTDIR)$(LIBPREFIX)" - cp suvm.pc "$(DESTDIR)$(LIBPREFIX)/pkgconfig" - cp src/suvm.h "$(DESTDIR)$(INCPREFIX)/star" - cp COPYING README.md "$(DESTDIR)$(PREFIX)/share/doc/star-uvm" - chmod 755 "$(DESTDIR)$(LIBPREFIX)/$(LIBNAME)" - chmod 644 "$(DESTDIR)$(LIBPREFIX)/pkgconfig/suvm.pc" - chmod 644 "$(DESTDIR)$(INCPREFIX)/star/suvm.h" - chmod 644 "$(DESTDIR)$(PREFIX)/share/doc/star-uvm/COPYING" - chmod 644 "$(DESTDIR)$(PREFIX)/share/doc/star-uvm/README.md" - @for i in $(ADDONS); do $(MAKE) -fMakefile install_"$${i}"; done +install: library pkg install_$(ADDON) + install() { mode="$$1"; prefix="$$2"; shift 2; \ + mkdir -p "$${prefix}"; \ + cp "$$@" "$${prefix}"; \ + chmod "$${mode}" "$$@"; \ + }; \ + install 755 "$(DESTDIR)$(LIBPREFIX)" $(LIBNAME); \ + install 644 "$(DESTDIR)$(LIBPREFIX)/pkgconfig" suvm.pc; \ + install 644 "$(DESTDIR)$(INCPREFIX)/star" src/suvm.h; \ + install 644 "$(DESTDIR)$(PREFIX)/share/doc/star-uvm" COPYING README.md + +install_: # Dummy target run when ADDON is disabled uninstall: uninstall_utils rm -f "$(DESTDIR)$(LIBPREFIX)/$(LIBNAME)" @@ -117,6 +113,10 @@ uninstall: uninstall_utils lint: lint_utils +clean: clean_test clean_utils + rm -f $(DEP) $(OBJ) $(LIBNAME) + rm -f .config libsuvm.o suvm.pc suvm-local.pc + ################################################################################# # Utils ################################################################################# @@ -141,25 +141,26 @@ utils: library .config_utils @echo "config done" > $@ src/suvm_voxelize.d: config.mk suvm-local.pc - @$(CC) -std=c89 $(CFLAGS_UTIL) -MM -MT "$(@:.d=.o) $@" $(@:.d=.c) -MF $@ + @$(CC) $(CFLAGS_UTIL) -MM -MT "$(@:.d=.o) $@" $(@:.d=.c) -MF $@ src/suvm_voxelize.o: config.mk suvm-local.pc - $(CC) -std=c89 $(CFLAGS_UTIL) -c $(@:.o=.c) -o $@ + $(CC) $(CFLAGS_UTIL) -c $(@:.o=.c) -o $@ suvm-voxelize: config.mk suvm-local.pc $(LIBNAME) src/suvm_voxelize.o - $(CC) -std=c89 $(CFLAGS_UTIL) -o $@ src/suvm_voxelize.o $(LDFLAGS_UTIL) + $(CC) $(CFLAGS_UTIL) -o $@ src/suvm_voxelize.o $(LDFLAGS_UTIL) clean_utils: rm -f $(UTIL_DEP) $(UTIL_OBJ) suvm-voxelize rm -f .config_utils install_utils: utils - mkdir -p "$(DESTDIR)$(BINPREFIX)" - mkdir -p "$(DESTDIR)$(MANPREFIX)/man1" - cp suvm-voxelize "$(DESTDIR)$(BINPREFIX)" - cp suvm-voxelize.1 "$(DESTDIR)$(MANPREFIX)/man1/" - chmod 755 "$(DESTDIR)$(BINPREFIX)/suvm-voxelize" - chmod 644 "$(DESTDIR)$(MANPREFIX)/man1/suvm-voxelize.1" + install() { mode="$$1"; prefix="$$2"; shift 2; \ + mkdir -p "$${prefix}"; \ + cp "$$@" "$${prefix}"; \ + chmod "$${mode}" "$$@"; \ + }; \ + install 755 "$(DESTDIR)$(BINPREFIX)" suvm-voxelize; \ + install 644 "$(DESTDIR)$(MANPREFIX)/man1" doc/suvm-voxelize.1 uninstall_utils: rm -f "$(DESTDIR)$(BINPREFIX)/suvm-voxelize" @@ -177,7 +178,7 @@ TEST_SRC =\ src/test_suvm_primitive_intersection.c TEST_OBJ = $(TEST_SRC:.c=.o) TEST_DEP = $(TEST_SRC:.c=.d) -TEST_BIN = $(TEST_SRC:.c=.b) +TEST_TGT = $(TEST_SRC:.c=.t) INCS_TEST = $$($(PKG_CONFIG_LOCAL) $(PCFLAGS) --cflags rsys suvm-local.pc) LIBS_TEST = $$($(PKG_CONFIG_LOCAL) $(PCFLAGS) --libs rsys suvm-local.pc) -lm @@ -185,25 +186,17 @@ LIBS_TEST = $$($(PKG_CONFIG_LOCAL) $(PCFLAGS) --libs rsys suvm-local.pc) -lm CFLAGS_TEST = -std=c89 $(CFLAGS_EXE) $(INCS_TEST) LDFLAGS_TEST = $(LDFLAGS_EXE) $(LIBS_TEST) -test: tests - @for i in $(TEST_SRC); do \ - bin="$$(basename "$${i}" ".c")"; \ - "./$${bin}" > /dev/null 2>&1 \ - || >&2 printf '%s: error %s\n' "$${bin}" "$$?"; \ - done - @echo "Tests done" - -tests: library $(TEST_DEP) $(TEST_BIN) +tests: library $(TEST_DEP) $(TEST_TGT) @$(MAKE) -fMakefile \ $$(for i in $(TEST_DEP); do echo -f"$${i}"; done) \ - $$(for i in $(TEST_BIN); do echo -f"$${i}"; done) \ - test_bin + $$(for i in $(TEST_TGT); do echo -f"$${i}"; done) \ + test_list -.c.b: +.c.t: @{ \ - bin="$$(basename "$<" ".c")"; \ - printf '%s: %s\n' "$${bin}" $(<:.c=.o); \ - printf 'test_bin: %s\n' "$${bin}"; \ + tgt="$$(basename "$<" ".c")"; \ + printf '%s: %s\n' "$${tgt}" $(<:.c=.o); \ + printf 'test_list: %s\n' "$${tgt}"; \ } > $@ $(TEST_DEP): config.mk suvm-local.pc @@ -222,3 +215,16 @@ clean_test: rm -f $(TEST_BIN) $(TEST_DEP) $(TEST_OBJ) rm -f ball.vtk box.vtk for i in $(TEST_SRC); do rm -f "$$(basename "$${i}" ".c")"; done + +test: tests + @err=0; \ + for i in $(TEST_SRC); do \ + test="$$(basename "$${i}" ".c")"; \ + if "./$${test}" > /dev/null 2>&1; then \ + printf '%s\n' "$${test}"; \ + else \ + >&2 printf '%s: error %s\n' "$${test}" "$$?"; \ + err=$$((err+1)); \ + fi \ + done; \ + [ "$${err}" -eq 0 ] diff --git a/config.mk b/config.mk @@ -12,9 +12,9 @@ LIBPREFIX = $(PREFIX)/lib INCPREFIX = $(PREFIX)/include/stardis MANPREFIX = $(PREFIX)/share/man -# Define additional targets +# Enable building and installation of additional utilities # Comment it to build and install the library only -#ADDONS = utils +#ADDON = utils ################################################################################ # Tools