#!/bin/bash # These are the project-specific variables EXECUTABLE="dmtool" # e.g., foo.so LIBRARY= # List of libs as given to pkg-config LIBS="libconfuse nlohmann_json" CFLAGS="-c -Wall -fPIC -std=c++20" LDFLAGS= SOURCE_DIR="src" EXTRAS=" parsed: parser/scrapeToJson.py parser/utils.py parser/verified.txt python parser/scrapeToJson.py touch parsed/ " INSTALL=" install: \$(EXECUTABLE) parsed install -d \$(DESTDIR)\$(PREFIX)/share/dmtool/ cp -r parsed/* \$(DESTDIR)\$(PREFIX)/share/dmtool/ install -d \$(DESTDIR)\$(PREFIX)/bin/ install -m 755 \$(EXECUTABLE) \$(DESTDIR)\$(PREFIX)/bin/ install -m 644 files/dmtool.bash \$(DESTDIR)`pkg-config --variable=completionsdir bash-completion`/dmtool install -m 644 files/dmtool.conf \$(DESTDIR)/etc/dmtool.conf " # Below here shouldn't need editing SOURCES=`find $SOURCE_DIR | grep .cc$ | tr '\n' ' '` PKG_CONFIG_CFLAGS= PKG_CONFIG_LIBS= if [ -n "$LIBS" ]; then PKG_CONFIG_CFLAGS='`pkg-config $(LIBS) --cflags`' PKG_CONFIG_LIBS='`pkg-config $(LIBS) --libs`' fi ALL="all: \$(SOURCES)" LIBRULE= if [ -n "$LIBRARY" ]; then LIBRULE=" \$(LIBRARY): \$(OBJECTS) \$(CC) \$(OBJECTS) -shared -o \$@ \$(LDFLAGS) $PKG_CONFIG_LIBS " ALL="$ALL \$(LIBRARY)" fi EXERULE= if [ -n "$EXECUTABLE" ]; then EXERULE=" \$(EXECUTABLE): \$(OBJECTS) \$(CC) \$(OBJECTS) -o \$@ \$(LDFLAGS) $PKG_CONFIG_LIBS " ALL="$ALL \$(EXECUTABLE)" fi ORULES=$(for cc in `find $SOURCE_DIR | grep .cc$`; do g++ -MM -MT `cut -d'.' -f-1 <<< $cc`.o $cc; echo -e "\t"'$(CC) $(CFLAGS) $< -o $@ '"$PKG_CONFIG_CFLAGS\n"; done) cat << EOF > Makefile CC=g++ LIBS=$LIBS CFLAGS=$CFLAGS LDFLAGS=$LDFLAGS SOURCES=$SOURCES OBJECTS=\$(SOURCES:.cc=.o) LIBRARY=$LIBRARY EXECUTABLE=$EXECUTABLE ifeq (\$(PREFIX),) PREFIX := /usr endif $ALL $EXTRAS$INSTALL$LIBRULE$EXERULE $ORULES clean: rm -f \$(LIBRARY) \$(EXECUTABLE) find . | grep .o\$ | xargs rm -f EOF