Skip to content

Instantly share code, notes, and snippets.

@skeeto
Created June 30, 2022 17:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save skeeto/ce0e97848ed1259603c158c09d59437a to your computer and use it in GitHub Desktop.
Save skeeto/ce0e97848ed1259603c158c09d59437a to your computer and use it in GitHub Desktop.
Newsraft Makefile generator
#!/bin/sh
set -e
cat <<EOF
.POSIX:
VERSION = 0.2
CC = cc
CFLAGS = -std=gnu18 -Wall -Wextra -O3
LDFLAGS = -s
LDLIBS = -lncursesw -lsqlite3 -lcurl -lexpat -lgumbo -lyajl
FEATURES = \\
-DNEWSRAFT_FORMAT_SUPPORT_ATOM10 \\
-DNEWSRAFT_FORMAT_SUPPORT_RSS \\
-DNEWSRAFT_FORMAT_SUPPORT_RSSCONTENT \\
-DNEWSRAFT_FORMAT_SUPPORT_DUBLINCORE \\
-DNEWSRAFT_FORMAT_SUPPORT_MEDIARSS \\
-DNEWSRAFT_FORMAT_SUPPORT_YANDEX \\
-DNEWSRAFT_FORMAT_SUPPORT_RBCNEWS \\
-DNEWSRAFT_FORMAT_SUPPORT_ATOM03 \\
-DNEWSRAFT_FORMAT_SUPPORT_GEORSS \\
-DNEWSRAFT_FORMAT_SUPPORT_GEORSS_GML \\
-DNEWSRAFT_FORMAT_SUPPORT_JSONFEED
all: newsraft
clean:
rm -f newsraft \$(obj)
.c.o:
\$(CC) -c -Isrc -DNEWSRAFT_VERSION='"\$(VERSION)"' \$(CFLAGS) \$(FEATURES) -o \$@ \$<
EOF
obj=
for c in $(find src -name '*.c'); do
o="${c%%.c}.o"
obj="$obj $o"
cc -Isrc -MM -MT "$o" "$c"
done
printf 'obj ='
printf ' \\\n %s' $obj
printf '\n\n'
cat <<EOF
newsraft: \$(obj)
\$(CC) \$(LDFLAGS) -o \$@ \$(obj) \$(LDLIBS)
EOF
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment