diff options
Diffstat (limited to 'configure')
-rwxr-xr-x | configure | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/configure b/configure new file mode 100755 index 0000000..ead98f8 --- /dev/null +++ b/configure @@ -0,0 +1,72 @@ +#!/bin/bash + +# These are the project-specific variables + +EXECUTABLE="test" + +# e.g., foo.so +LIBRARY= + +# List of libs as given to pkg-config +LIBS= + +CFLAGS="-c -Wall -fPIC -std=c++20" + +LDFLAGS= + +SOURCE_DIR="src" + +# Below here shouldn't need editing + +SOURCES=`ls $SOURCE_DIR/*.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 `ls $SOURCE_DIR/*.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 +$LIBRULE$EXERULE + +$ORULES + +clean: + rm -f $SOURCE_DIR/*.o \$(LIBRARY) \$(EXECUTABLE) +EOF |