callisto/Makefile
Jeremy Baxter adb4091293 workaround esoteric gcc behaviour on Linux
ld would fail to find Lua symbols in liblua.a, the solution is
to put all object files before static libraries on the command line.
2024-01-17 20:29:42 +13:00

72 lines
1.9 KiB
Makefile

PREFIX = /usr/local
MANPREFIX = ${PREFIX}/man
CC = cc
CFLAGS = -std=c99 -pedantic -fpic -Oz -Iexternal/lua -Wall -Wextra
CPPFLAGS = -D_DEFAULT_SOURCE
LDFLAGS = -lm
# Enable readline
#CPPFLAGS += -DLUA_USE_READLINE
#LDFLAGS += -lreadline
OBJS = callisto.o lcl.o lenviron.o lextra.o lfs.o ljson.o lprocess.o util.o
LIBS = libcallisto.a liblua.a
CJSON_SRC = external/json
CJSON_OBJS = fpconv.o lua_cjson.o strbuf.o
CJSON_CFLAGS = -Wno-sign-compare -Wno-unused-function
all: csto libcallisto.a
csto: ${LIBS} csto.o
${CC} -o $@ csto.o libcallisto.a liblua.a ${LDFLAGS}
libcallisto.a: liblua.a ${CJSON_OBJS} ${OBJS}
ar cr $@ ${OBJS} ${CJSON_OBJS}
.SUFFIXES: .o
.c.o:
${CC} ${CFLAGS} ${CPPFLAGS} -c $<
csto.o: csto.c callisto.h
callisto.o: callisto.c callisto.h
lcl.o: lcl.c callisto.h util.h
lextra.o: lextra.c callisto.h util.h
lenviron.o: lenviron.c callisto.h
lfs.o: lfs.c callisto.h util.h
ljson.o: ljson.c callisto.h
lprocess.o: lprocess.c callisto.h util.h
${CC} ${CFLAGS} -Wno-override-init ${CPPFLAGS} -c lprocess.c
util.o: util.c
# cjson
fpconv.o: ${CJSON_SRC}/fpconv.c
${CC} ${CFLAGS} ${CJSON_CFLAGS} ${CPPFLAGS} -c $<
lua_cjson.o: ${CJSON_SRC}/lua_cjson.c
${CC} ${CFLAGS} ${CJSON_CFLAGS} ${CPPFLAGS} -c $<
strbuf.o: ${CJSON_SRC}/strbuf.c
${CC} ${CFLAGS} ${CJSON_CFLAGS} ${CPPFLAGS} -c $<
liblua.a: external/lua/*.c
${MAKE} -Cexternal/lua
mv -f external/lua/liblua.a .
clean:
rm -f csto libcallisto.a ${OBJS} ${CJSON_OBJS} ${LIBS}
rm -fr include doc/*.html doc/modules
${MAKE} -s -Cexternal/lua clean
doc:
ldoc -s . -q . >/dev/null
install:
mkdir -p include/callisto
mkdir -p "${DESTDIR}${PREFIX}"/{bin,include,lib}
cp -f callisto.h include/callisto
cp -f external/lua/{lua.h,lualib.h,lauxlib.h,luaconf.h} include/callisto
cp -f csto "${DESTDIR}${PREFIX}"/bin
cp -fR include/callisto "${DESTDIR}${PREFIX}"/include
cp -f libcallisto.a "${DESTDIR}${PREFIX}"/lib
.PHONY: all clean clean-all doc install