#!/bin/bash # These are the project-specific variables EXECUTABLE="dmtool" # e.g., foo.so LIBRARY= TEST= # List of libs as given to pkg-config LIBS="libconfuse nlohmann_json" CXXFLAGS="-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) \$(CXX) \$(OBJECTS) -shared -o \$@ \$(LDFLAGS) \$(LDLIBS) " ALL="$ALL \$(LIBRARY)" fi EXERULE= if [ -n "$EXECUTABLE" ]; then EXERULE=" \$(EXECUTABLE): \$(OBJECTS) \$(CXX) \$(OBJECTS) -o \$@ \$(LDFLAGS) \$(LDLIBS) " ALL="$ALL \$(EXECUTABLE)" fi TESTRULE= if [ -n "$TEST" ]; then TESTRULE=" \$(TEST): \$(OBJECTS) \$(CXX) \$(OBJECTS) -o \$@ \$(LDFLAGS) \$(LDLIBS) -lcppunit test: \$(TEST) ./\$(TEST) " ALL="$ALL \$(TEST)" fi ORULES=$(for cc in `find $SOURCE_DIR | grep .cc$`; do g++ -MM -MT `cut -d'.' -f-1 <<< $cc`.o $cc; done) cat << EOF > Makefile LIBS=$LIBS override CXXFLAGS += $CXXFLAGS $PKG_CONFIG_CFLAGS override LDFLAGS += $LDFLAGS $PKG_CONFIG_LIBS CC=\$(CXX) SOURCES=$SOURCES OBJECTS=\$(SOURCES:.cc=.o) LIBRARY=$LIBRARY EXECUTABLE=$EXECUTABLE PREFIX := /usr $ALL $EXTRAS$INSTALL$LIBRULE$EXERULE$TESTRULE $ORULES clean: \$(RM) \$(LIBRARY) \$(EXECUTABLE) \$(TEST) \$(OBJECTS) EOF