# Makefile for building Parsee # ================================ # TODO: Consider making something akin to a configure script that checks # for dependencies, or maybe even use *autoconf* (the devil!) # =========================== Parsee Flags ============================= NAME=Parsee VERSION=0.0.0 REPOSITORY=$(shell git remote get-url origin) # =========================== Compilation Flags ============================ CYTO_INC=/usr/local/include/ # Where Cytoplasm's include path is # located. CYTO_LIB=/usr/local/lib # Where's Cytoplasm's library is # located. SOURCE=src OBJECT=build AYAS=ayaya ETC=etc INCLUDES=src/include CC=cc CFLAGS=-I$(SOURCE) -I$(INCLUDES) -I$(CYTO_INC) -DNAME="\"$(NAME)\"" -DVERSION="\"$(VERSION)\"" -DREPOSITORY=\"$(REPOSITORY)\" -g -ggdb -Wall -Werror LDFLAGS=-L $(CYTO_LIB) -lCytoplasm -g -ggdb AFLAGS=-C "$(ETC)/ayadoc/style.css" -p "$(NAME)" BINARY=parsee # ============================ Compilation ================================= SRC_FILES:=$(shell find $(SOURCE) -name '*.c') OBJ_FILES:=${subst $(SOURCE)/,$(OBJECT)/,$(patsubst %.c, %.o, $(SRC_FILES))} CPP_FILES:=$(shell find $(INCLUDES) -name '*.h') AYA_FILES:=${subst $(INCLUDES)/,$(AYAS)/,$(patsubst %.h, %.html, $(CPP_FILES))} all: binary utils binary: $(OBJ_FILES) $(CC) $(LDFLAGS) $(OBJ_FILES) -o $(BINARY) clean: rm -rf $(OBJECT) $(BINARY) $(AYAS) $(OBJECT)/%.o: $(SOURCE)/%.c @mkdir -p $(shell dirname "$@") $(CC) -c $(CFLAGS) $< -o $@ utils: (cd tools && make) ayadoc: utils $(AYA_FILES) $(AYAS)/%.html: $(INCLUDES)/%.h @mkdir -p $(shell dirname "$@") tools/out/aya $(AFLAGS) -i $< -o $@ # TODO: a install rule that reads prefix for software packagers?