changeset 90:a6d6497adb60

make: cleanup a bit and add appropriate dependencies
author David Demelier <markand@malikania.fr>
date Thu, 12 Mar 2020 20:31:50 +0100
parents 30baadb6f6a2
children 8bfb90e85b28
files INSTALL.md Makefile
diffstat 2 files changed, 70 insertions(+), 53 deletions(-) [+]
line wrap: on
line diff
--- a/INSTALL.md	Thu Mar 12 20:22:02 2020 +0100
+++ b/INSTALL.md	Thu Mar 12 20:31:50 2020 +0100
@@ -26,6 +26,13 @@
 	# sudo make install
 	$ molko
 
+Available general make targets:
+
+- `all`: (default): build only molko,
+- `tools`: build tools (e.g. molko-map),
+- `tests`: build tests and run them,
+- `everything`: build molko, tools and tests without running them.
+
 Platform: Windows
 -----------------
 
--- a/Makefile	Thu Mar 12 20:22:02 2020 +0100
+++ b/Makefile	Thu Mar 12 20:31:50 2020 +0100
@@ -19,7 +19,8 @@
 .POSIX:
 
 CC=             cc
-CFLAGS=         -O0 -std=c11 -Wall -Wextra -g -ggdb
+AR=             ar
+CFLAGS=         -O0 -std=c11 -g
 # Use this instead to build a release.
 # CFLAGS=         -O3 -DNDEBUG -std=c11 -Wall -Wextra
 PROG=           molko
@@ -33,36 +34,36 @@
                 -DSQLITE_OMIT_DEPRECATED \
                 -DSQLITE_DEFAULT_FOREIGN_KEYS=1
 
-CORE_SRCS=      src/core/animation.c \
-                src/core/clock.c \
-                src/core/debug.c \
-                src/core/error.c \
-                src/core/event.c \
-                src/core/font.c \
-                src/core/game.c \
-                src/core/image.c \
-                src/core/inhibit.c \
-                src/core/inventory.c \
-                src/core/map.c \
-                src/core/map_state.c \
-                src/core/message.c \
-                src/core/painter.c \
-                src/core/panic.c \
-                src/core/save.c \
-                src/core/script.c \
-                src/core/sprite.c \
-                src/core/sys.c \
-                src/core/texture.c \
-                src/core/util.c \
-                src/core/walksprite.c \
-                src/core/wait.c \
+CORE_SRCS=      src/core/animation.c                    \
+                src/core/clock.c                        \
+                src/core/debug.c                        \
+                src/core/error.c                        \
+                src/core/event.c                        \
+                src/core/font.c                         \
+                src/core/game.c                         \
+                src/core/image.c                        \
+                src/core/inhibit.c                      \
+                src/core/inventory.c                    \
+                src/core/map.c                          \
+                src/core/map_state.c                    \
+                src/core/message.c                      \
+                src/core/painter.c                      \
+                src/core/panic.c                        \
+                src/core/save.c                         \
+                src/core/script.c                       \
+                src/core/sprite.c                       \
+                src/core/sys.c                          \
+                src/core/texture.c                      \
+                src/core/util.c                         \
+                src/core/walksprite.c                   \
+                src/core/wait.c                         \
                 src/core/window.c
 CORE_OBJS=      ${CORE_SRCS:.c=.o}
 CORE_DEPS=      ${CORE_SRCS:.c=.d}
 
-ADV_SRCS=       src/adventure/main.c \
-                src/adventure/panic_state.c \
-                src/adventure/splashscreen_state.c \
+ADV_SRCS=       src/adventure/main.c                    \
+                src/adventure/panic_state.c             \
+                src/adventure/splashscreen_state.c      \
                 src/adventure/mainmenu_state.c
 ADV_OBJS=       ${ADV_SRCS:.c=.o}
 ADV_DEPS=       ${ADV_SRCS:.c=.d}
@@ -77,40 +78,46 @@
 JANSSON_CFLAGS= `pkg-config --cflags jansson`
 JANSSON_LDFLAGS=`pkg-config --libs jansson`
 
-TESTS=          tests/test-color.c \
-                tests/test-error.c \
-                tests/test-inventory.c \
-                tests/test-map.c \
-                tests/test-panic.c \
-                tests/test-save.c \
+TESTS=          tests/test-color.c                      \
+                tests/test-error.c                      \
+                tests/test-inventory.c                  \
+                tests/test-map.c                        \
+                tests/test-panic.c                      \
+                tests/test-save.c                       \
                 tests/test-script.c
 TESTS_INCS=     -I extern/libgreatest -I src/core ${SDL_CFLAGS}
-TESTS_LIBS=     ${LIB} ${SDL_LDFLAGS} ${LDFLAGS}
-TESTS_OBJS=     ${TESTS:.c=}
+TESTS_PRGS=     ${TESTS:.c=}
+TESTS_OBJS=     ${TESTS:.c=.o}
 TESTS_DEPS=     ${TESTS:.c=.d}
 
 TOOLS=          tools/molko-map.c
-TOOLS_OBJS=     ${TOOLS:.c=}
+TOOLS_PRGS=     ${TOOLS:.c=}
 TOOLS_DEPS=     ${TOOLS:.c=.d}
 
-FLAGS=          -MMD -D_XOPEN_SOURCE=700
-DEFINES=        -DPREFIX=\""${PREFIX}"\" \
+MY_CFLAGS=      -D_XOPEN_SOURCE=700 \
+                -DPREFIX=\""${PREFIX}"\" \
                 -DBINDIR=\""${BINDIR}"\" \
-                -DSHAREDIR=\""${SHAREDIR}"\"
-INCLUDES=       -I extern/libsqlite -I src/core -I src/adventure
+                -DSHAREDIR=\""${SHAREDIR}"\" \
+                -Iextern/libsqlite \
+                -Iextern/libgreatest \
+                -Isrc/core \
+                -Isrc/adventure
 
 .SUFFIXES:
-.SUFFIXES: .c .o
+.SUFFIXES: .o .c
 
 all: ${PROG}
 
 -include ${CORE_DEPS} ${ADV_DEPS} ${TESTS_DEPS} ${TOOLS_DEPS}
 
 .c.o:
-	${CC} ${FLAGS} ${DEFINES} ${INCLUDES} ${SDL_CFLAGS} ${CFLAGS} -MMD -c $< -o $@
+	${CC} ${MY_CFLAGS} ${SDL_CFLAGS} ${CFLAGS} -MMD -c $< -o $@
 
 .c:
-	${CC} ${FLAGS} ${TESTS_INCS} -o $@ ${CFLAGS} $< ${TESTS_LIBS} ${SQLITE_LIB}
+	${CC} ${MY_CFLAGS} -o $@ ${CFLAGS} $< ${LIB} ${SQLITE_LIB} ${SDL_LDFLAGS} ${LDFLAGS}
+
+.o:
+	${CC} -o $@ $< ${LIB} ${SQLITE_LIB} ${SDL_LDFLAGS} ${LDFLAGS}
 
 ${SQLITE_OBJ}: ${SQLITE_SRC}
 	${CC} ${CFLAGS} ${SQLITE_FLAGS} -c ${SQLITE_SRC} -o $@
@@ -118,25 +125,28 @@
 ${SQLITE_LIB}: ${SQLITE_OBJ}
 	${AR} -rc $@ ${SQLITE_OBJ}
 
-${LIB}: ${CORE_OBJS}
+${LIB}: ${CORE_OBJS} ${SQLITE_LIB}
 	${AR} -rc $@ ${CORE_OBJS}
 
-${PROG}: ${LIB} ${ADV_OBJS} ${SQLITE_LIB}
+${PROG}: ${LIB} ${ADV_OBJS}
 	${CC} -o $@ ${ADV_OBJS} ${LIB} ${SQLITE_LIB} ${SDL_LDFLAGS} ${LDFLAGS}
 
-${TESTS_OBJS}: ${LIB} ${SQLITE_LIB}
+${TESTS_OBJS}: ${LIB}
 
-tests: ${TESTS_OBJS}
-	for t in $?; do ./$$t; done
+tests: ${TESTS_PRGS}
+	for t in ${TESTS_PRGS}; do ./$$t; done
 
-tools: ${TOOLS_OBJS}
+tools: ${TOOLS_PRGS}
 
+# Custom rule: does not depend on anything else than jansson.
 tools/molko-map: tools/molko-map.c
-	${CC} -o $@ $< ${CFLAGS} ${JANSSON_CFLAGS} ${JANSSON_LDFLAGS}
+	${CC} ${MY_CFLAGS} -o $@ $< ${CFLAGS} ${JANSSON_CFLAGS} ${JANSSON_LDFLAGS}
 
 doxygen:
 	doxygen doxygen/Doxyfile
 
+everything: ${PROG} ${TOOLS_PRGS} ${TESTS_PRGS}
+
 install:
 	mkdir -p ${DESTDIR}${BINDIR}
 	cp molko ${DESTDIR}${BINDIR}
@@ -150,7 +160,7 @@
 	rm -f ${LIB} ${PROG}
 	rm -f ${CORE_OBJS} ${CORE_DEPS}
 	rm -f ${ADV_OBJS} ${ADV_DEPS}
-	rm -f ${TESTS_OBJS} ${TESTS_DEPS}
-	rm -f ${TOOLS_OBJS} ${TOOLS_DEPS}
+	rm -f ${TESTS_PRGS} ${TESTS_OBJS} ${TESTS_DEPS}
+	rm -f ${TOOLS_PRGS} ${TOOLS_DEPS}
 
-.PHONY: all clean doxygen tests tools
+.PHONY: all clean doxygen everything tests tools