Skip to content

Commit 916d638

Browse files
committed
Switch to autoconf for greater compatibility
1 parent 9c9529e commit 916d638

7 files changed

Lines changed: 5969 additions & 27 deletions

File tree

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
tweetapus/
22
tweeta
3+
Makefile
4+
config.log
5+
config.status
6+
autom4te.cache/
37
*.o
48
node_modules/
59
*.tgz

Makefile

Lines changed: 68 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,75 @@
1-
CC ?= cc
2-
PKG_CONFIG ?= pkg-config
3-
CFLAGS ?= -std=c11 -Wall -Wextra -Wpedantic -O2
4-
CPPFLAGS += -D_POSIX_C_SOURCE=200809L
5-
LDFLAGS ?=
6-
LIBCURL_CFLAGS := $(shell $(PKG_CONFIG) --cflags libcurl 2>/dev/null)
7-
LIBCURL_LIBS := $(shell $(PKG_CONFIG) --libs libcurl 2>/dev/null || echo -lcurl)
8-
SRC := src/main.c src/config.c src/util.c src/http.c src/routes.c src/commands.c src/jsonfmt.c src/cJSON.c
1+
srcdir = .
92

10-
PREFIX ?= /usr/local
11-
BINDIR ?= $(PREFIX)/bin
3+
prefix = /usr/local
4+
exec_prefix = ${prefix}
5+
bindir = ${exec_prefix}/bin
126

13-
all: tweeta
7+
CC = gcc
8+
INSTALL = /usr/bin/install -c
149

15-
tweeta: $(SRC) src/tweeta.h
16-
$(CC) $(CPPFLAGS) $(CFLAGS) $(LIBCURL_CFLAGS) $(LDFLAGS) -o $@ $(SRC) $(LIBCURL_LIBS)
10+
DEFS = -DPACKAGE_NAME=\"tweeta-cli\" -DPACKAGE_TARNAME=\"tweeta-cli\" -DPACKAGE_VERSION=\"0.1.0\" -DPACKAGE_STRING=\"tweeta-cli\ 0.1.0\" -DPACKAGE_BUGREPORT=\"https://github.com/tweetapus/tweeta-cli/issues\" -DPACKAGE_URL=\"\" -DHAVE_STDIO_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STRINGS_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_UNISTD_H=1 -DHAVE_WCHAR_H=1 -DSTDC_HEADERS=1 -D_ALL_SOURCE=1 -D_DARWIN_C_SOURCE=1 -D_GNU_SOURCE=1 -D_HPUX_ALT_XOPEN_SOCKET_API=1 -D_NETBSD_SOURCE=1 -D_OPENBSD_SOURCE=1 -D_POSIX_PTHREAD_SEMANTICS=1 -D__STDC_WANT_IEC_60559_ATTRIBS_EXT__=1 -D__STDC_WANT_IEC_60559_BFP_EXT__=1 -D__STDC_WANT_IEC_60559_DFP_EXT__=1 -D__STDC_WANT_IEC_60559_EXT__=1 -D__STDC_WANT_IEC_60559_FUNCS_EXT__=1 -D__STDC_WANT_IEC_60559_TYPES_EXT__=1 -D__STDC_WANT_LIB_EXT2__=1 -D__STDC_WANT_MATH_SPEC_FUNCS__=1 -D_TANDEM_SOURCE=1 -D__EXTENSIONS__=1
11+
CPPFLAGS =
12+
CFLAGS = -std=c11 -Wall -Wextra -Wpedantic -O2
13+
LDFLAGS =
14+
LIBS =
15+
LIBCURL_CFLAGS = -I/usr/include/p11-kit-1
16+
LIBCURL_LIBS = -lcurl
1717

18-
install: tweeta
19-
install -d "$(DESTDIR)$(BINDIR)"
20-
install -m 0755 tweeta "$(DESTDIR)$(BINDIR)/tweeta"
18+
EXEEXT =
19+
OBJEXT = o
20+
21+
PROGRAM = tweeta$(EXEEXT)
22+
OBJ = \
23+
main.$(OBJEXT) \
24+
config.$(OBJEXT) \
25+
util.$(OBJEXT) \
26+
http.$(OBJEXT) \
27+
routes.$(OBJEXT) \
28+
commands.$(OBJEXT) \
29+
jsonfmt.$(OBJEXT) \
30+
cJSON.$(OBJEXT)
31+
32+
COMPILE = $(CC) $(DEFS) $(CPPFLAGS) $(LIBCURL_CFLAGS) $(CFLAGS)
33+
LINK = $(CC) $(CFLAGS) $(LDFLAGS)
34+
35+
all: $(PROGRAM)
36+
37+
$(PROGRAM): $(OBJ)
38+
$(LINK) -o $@ $(OBJ) $(LIBCURL_LIBS) $(LIBS)
39+
40+
main.$(OBJEXT): $(srcdir)/src/main.c $(srcdir)/src/tweeta.h $(srcdir)/src/cJSON.h
41+
$(COMPILE) -c -o $@ $(srcdir)/src/main.c
42+
43+
config.$(OBJEXT): $(srcdir)/src/config.c $(srcdir)/src/tweeta.h $(srcdir)/src/cJSON.h
44+
$(COMPILE) -c -o $@ $(srcdir)/src/config.c
45+
46+
util.$(OBJEXT): $(srcdir)/src/util.c $(srcdir)/src/tweeta.h $(srcdir)/src/cJSON.h
47+
$(COMPILE) -c -o $@ $(srcdir)/src/util.c
48+
49+
http.$(OBJEXT): $(srcdir)/src/http.c $(srcdir)/src/tweeta.h $(srcdir)/src/cJSON.h
50+
$(COMPILE) -c -o $@ $(srcdir)/src/http.c
51+
52+
routes.$(OBJEXT): $(srcdir)/src/routes.c $(srcdir)/src/tweeta.h $(srcdir)/src/cJSON.h
53+
$(COMPILE) -c -o $@ $(srcdir)/src/routes.c
54+
55+
commands.$(OBJEXT): $(srcdir)/src/commands.c $(srcdir)/src/tweeta.h $(srcdir)/src/cJSON.h
56+
$(COMPILE) -c -o $@ $(srcdir)/src/commands.c
57+
58+
jsonfmt.$(OBJEXT): $(srcdir)/src/jsonfmt.c $(srcdir)/src/tweeta.h $(srcdir)/src/cJSON.h
59+
$(COMPILE) -c -o $@ $(srcdir)/src/jsonfmt.c
60+
61+
cJSON.$(OBJEXT): $(srcdir)/src/cJSON.c $(srcdir)/src/cJSON.h
62+
$(COMPILE) -c -o $@ $(srcdir)/src/cJSON.c
63+
64+
install: $(PROGRAM)
65+
$(INSTALL) -d "$(DESTDIR)$(bindir)"
66+
$(INSTALL) -m 0755 $(PROGRAM) "$(DESTDIR)$(bindir)/$(PROGRAM)"
2167

2268
clean:
23-
rm -f tweeta
69+
rm -f $(PROGRAM) $(OBJ)
70+
71+
distclean: clean
72+
rm -f Makefile config.cache config.log config.status
73+
rm -rf autom4te.cache
2474

25-
.PHONY: all install clean
75+
.PHONY: all install clean distclean

Makefile.in

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
srcdir = @srcdir@
2+
3+
prefix = @prefix@
4+
exec_prefix = @exec_prefix@
5+
bindir = @bindir@
6+
7+
CC = @CC@
8+
INSTALL = @INSTALL@
9+
10+
DEFS = @DEFS@
11+
CPPFLAGS = @CPPFLAGS@
12+
CFLAGS = @CFLAGS@
13+
LDFLAGS = @LDFLAGS@
14+
LIBS = @LIBS@
15+
LIBCURL_CFLAGS = @LIBCURL_CFLAGS@
16+
LIBCURL_LIBS = @LIBCURL_LIBS@
17+
18+
EXEEXT = @EXEEXT@
19+
OBJEXT = @OBJEXT@
20+
21+
PROGRAM = tweeta$(EXEEXT)
22+
OBJ = \
23+
main.$(OBJEXT) \
24+
config.$(OBJEXT) \
25+
util.$(OBJEXT) \
26+
http.$(OBJEXT) \
27+
routes.$(OBJEXT) \
28+
commands.$(OBJEXT) \
29+
jsonfmt.$(OBJEXT) \
30+
cJSON.$(OBJEXT)
31+
32+
COMPILE = $(CC) $(DEFS) $(CPPFLAGS) $(LIBCURL_CFLAGS) $(CFLAGS)
33+
LINK = $(CC) $(CFLAGS) $(LDFLAGS)
34+
35+
all: $(PROGRAM)
36+
37+
$(PROGRAM): $(OBJ)
38+
$(LINK) -o $@ $(OBJ) $(LIBCURL_LIBS) $(LIBS)
39+
40+
main.$(OBJEXT): $(srcdir)/src/main.c $(srcdir)/src/tweeta.h $(srcdir)/src/cJSON.h
41+
$(COMPILE) -c -o $@ $(srcdir)/src/main.c
42+
43+
config.$(OBJEXT): $(srcdir)/src/config.c $(srcdir)/src/tweeta.h $(srcdir)/src/cJSON.h
44+
$(COMPILE) -c -o $@ $(srcdir)/src/config.c
45+
46+
util.$(OBJEXT): $(srcdir)/src/util.c $(srcdir)/src/tweeta.h $(srcdir)/src/cJSON.h
47+
$(COMPILE) -c -o $@ $(srcdir)/src/util.c
48+
49+
http.$(OBJEXT): $(srcdir)/src/http.c $(srcdir)/src/tweeta.h $(srcdir)/src/cJSON.h
50+
$(COMPILE) -c -o $@ $(srcdir)/src/http.c
51+
52+
routes.$(OBJEXT): $(srcdir)/src/routes.c $(srcdir)/src/tweeta.h $(srcdir)/src/cJSON.h
53+
$(COMPILE) -c -o $@ $(srcdir)/src/routes.c
54+
55+
commands.$(OBJEXT): $(srcdir)/src/commands.c $(srcdir)/src/tweeta.h $(srcdir)/src/cJSON.h
56+
$(COMPILE) -c -o $@ $(srcdir)/src/commands.c
57+
58+
jsonfmt.$(OBJEXT): $(srcdir)/src/jsonfmt.c $(srcdir)/src/tweeta.h $(srcdir)/src/cJSON.h
59+
$(COMPILE) -c -o $@ $(srcdir)/src/jsonfmt.c
60+
61+
cJSON.$(OBJEXT): $(srcdir)/src/cJSON.c $(srcdir)/src/cJSON.h
62+
$(COMPILE) -c -o $@ $(srcdir)/src/cJSON.c
63+
64+
install: $(PROGRAM)
65+
$(INSTALL) -d "$(DESTDIR)$(bindir)"
66+
$(INSTALL) -m 0755 $(PROGRAM) "$(DESTDIR)$(bindir)/$(PROGRAM)"
67+
68+
clean:
69+
rm -f $(PROGRAM) $(OBJ)
70+
71+
distclean: clean
72+
rm -f Makefile config.cache config.log config.status
73+
rm -rf autom4te.cache
74+
75+
.PHONY: all install clean distclean

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ It exposes:
1111
Install from source:
1212

1313
```sh
14+
./configure
1415
make
1516
make install
1617
```
@@ -22,7 +23,7 @@ npm install -g tweetapus
2223
```
2324

2425
The npm package is published as `tweetapus` and contains prebuilt static `tweeta` binaries for all supported platforms, so installation on the end user's machine does not compile anything and does not fetch additional artifacts.
25-
This makes the npm install much larger than building or installing with `make`: the binaries are statically linked except for libc on macOS, which cannot be statically linked and therefore is not, and the package includes all four platform binaries regardless of the platform installing it. As of this writing, a locally built dynamically linked AMD64 Linux binary is 148KB on my system because it only includes one binary for that machine; the npm install is nearly 61MB.
26+
This makes the npm install much larger than building or installing from source: the binaries are statically linked except for libc on macOS, which cannot be statically linked and therefore is not, and the package includes all four platform binaries regardless of the platform installing it. As of this writing, a locally built dynamically linked AMD64 Linux binary is 148KB on my system because it only includes one binary for that machine; the npm install is nearly 61MB.
2627

2728
The package is published from CI after a successful default-branch release.
2829

0 commit comments

Comments
 (0)