dodo/Makefile

82 lines
2.4 KiB
Makefile
Raw Permalink Normal View History

2024-09-09 06:05:47 +00:00
.POSIX:
# DIRECTORIES
TEST_DIR = tests
2024-09-09 06:05:47 +00:00
SRC_DIR = src
OBJ_DIR = obj
X_STRING_DIR = $(SRC_DIR)/xlibc/x_string
X_CTYPES_DIR = $(SRC_DIR)/xlibc/x_ctypes
SQLITE_DIR = $(SRC_DIR)/sqlite3
2024-09-09 06:05:47 +00:00
# Sources
2024-09-09 06:05:47 +00:00
SRC = $(wildcard $(SRC_DIR)/*.c)
X_STRING_SRC = $(wildcard $(X_STRING_DIR)/src/*.c)
X_CTYPES_SRC = $(wildcard $(X_CTYPES_DIR)/src/*.c)
SQLITE_SRC = $(wildcard $(SQLITE_DIR)/src/*.c)
TEST_SRC = $(wildcard $(TEST_DIR)/*.c)
2024-09-09 06:05:47 +00:00
# Headers
HEADERS = $(wildcard $(SRC_DIR)/*.h)
X_STRING_HEADERS = $(wildcard $(X_STRING_DIR)/src/*.h)
X_CTYPES_HEADERS = $(wildcard $(X_CTYPES_DIR)/src/*.h)
SQLITE_HEADERS = $(wildcard $(SQLITE_DIR)/src/*.h)
TEST_HEADERS = $(wildcard $(TEST_DIR)/*.h)
2024-09-09 06:05:47 +00:00
# Objects
OBJ = $(patsubst $(SRC_DIR)/%.c, $(OBJ_DIR)/%.o, $(SRC))
X_STRING_OBJ = $(patsubst $(X_STRING_DIR)/src/%.c, $(OBJ_DIR)/%.o, $(X_STRING_SRC))
X_CTYPES_OBJ = $(patsubst $(X_CTYPES_DIR)/src/%.c, $(OBJ_DIR)/%.o, $(X_CTYPES_SRC))
SQLITE_OBJ = $(patsubst $(SQLITE_DIR)/src/%.c, $(OBJ_DIR)/%.o, $(SQLITE_SRC))
ALL_OBJS = $(wildcard $(OBJ_DIR)/*.o)
TEST_OBJ = $(patsubst $(TEST_DIR)/%.c, $(OBJ_DIR)/%.o, $(TEST_SRC))
2024-09-09 06:05:47 +00:00
SQLITE_DB_SCHEMA = $(SRC_DIR)/dodo.schema
INC_DIRS=-I./$(X_STRING_DIR)/src/ -I./$(X_CTYPES_DIR)/src/ -I./$(SQLITE_DIR)/src/ -I./src
2024-09-13 05:48:15 +00:00
CFLAGS = -ggdb
2024-09-09 06:05:47 +00:00
HOME_DIR = $$HOME
CONFIG_DIR = /.config/dodo
DB_FILE = $(CONFIG_DIR)/dodo.db
DFLAGS = -DDB_PATH=\"$(DB_FILE)\"
all: dodo
$(OBJ): $(SRC) $(X_STRING_OBJ) $(X_CTYPES_OBJ) $(SQLITE_OBJ) $(HEADERS)
2024-09-13 05:48:15 +00:00
$(CC) -c -o $(OBJ_DIR)/$(@F) $(INC_DIRS) $(CFLAGS) $(DFLAGS) $(SRC_DIR)/$(@F:.o=.c)
2024-09-09 06:05:47 +00:00
$(X_STRING_OBJ): $(X_STRING_SRC) $(X_STRING_HEADERS)
2024-09-13 05:48:15 +00:00
$(CC) -c -o $(OBJ_DIR)/$(@F) $(CFLAGS) $(X_STRING_SRC)
2024-09-09 06:05:47 +00:00
$(X_CTYPES_OBJ): $(X_CTYPES_SRC) $(X_CTYPES_HEADERS)
$(CC) -c -o $(OBJ_DIR)/$(@F) $(CFLAGS) $(X_CTYPES_SRC)
$(SQLITE_OBJ): $(SQLITE_SRC) $(SQLITE_HEADERS)
2024-09-13 05:48:15 +00:00
$(CC) -c -o $(OBJ_DIR)/$(@F) $(CFLAGS) $(SQLITE_SRC)
2024-09-09 06:05:47 +00:00
dodo: test $(OBJ) $(X_STRING_OBJ) $(X_CTYPES_OBJ) $(SQLITE_OBJ)
$(CC) -o $@ $(CFLAGS) $(OBJ) $(X_STRING_OBJ) $(X_CTYPES_OBJ) $(SQLITE_OBJ)
./test
rm test
2024-09-09 06:05:47 +00:00
test: $(OBJ) $(TEST_SRC) $(X_STRING_OBJ) $(X_CTYPES_OBJ) $(SQLITE_OBJ)
$(CC) -o $@ $(TEST_SRC) $(INC_DIRS) $(DFLAGS) $(CFLAGS) obj/dodo.o $(X_STRING_OBJ) $(X_CTYPES_OBJ) $(SQLITE_OBJ)
2024-09-09 06:05:47 +00:00
install:
mkdir -p $(HOME_DIR)$(CONFIG_DIR)
2024-09-09 16:58:24 +00:00
sqlite3 $(HOME_DIR)$(DB_FILE) < $(SQLITE_DB_SCHEMA)
2024-09-09 06:05:47 +00:00
uninstall:
rm -rf $(HOME_DIR)$(CONFIG_DIR)
clean_all:
rm -f dodo test $(ALL_OBJS)
2024-09-09 06:05:47 +00:00
clean:
rm -f dodo test $(OBJ) $(X_STRING_OBJ) $(X_CTYPES_OBJ)
2024-09-09 06:05:47 +00:00
.PHONY: all clean_all clean install uninstall