include common.mk PHONY += directories MKDIR_P = mkdir -p OBJ_DIR = bin C_SOURCES := set.c mutableset.c element.c function.c order.c table.c predicate.c boolean.c csolver.c structs.c constraint.c inc_solver.c TABBING_H := boolean.h classlist.h common.h config.h constraint.h csolver.h element.h function.h inc_solver.h mutableset.h mymemory.h ops.h order.h predicate.h set.h solver_interface.h structs.h table.h OBJECTS := $(CPP_SOURCES:%.cc=$(OBJ_DIR)/%.o) $(C_SOURCES:%.c=$(OBJ_DIR)/%.o) CPPFLAGS += -Iinclude -I. LDFLAGS := -ldl -lrt -rdynamic SHARED := -shared # Mac OSX options ifeq ($(UNAME), Darwin) LDFLAGS := -ldl SHARED := -Wl,-undefined,dynamic_lookup -dynamiclib endif MARKDOWN := ../docs/Markdown/Markdown.pl all: directories $(LIB_SO) directories: ${OBJ_DIR} ${OBJ_DIR}: ${MKDIR_P} ${OBJ_DIR} debug: CPPFLAGS += -DCONFIG_DEBUG debug: all PHONY += docs docs: *.c *.cc *.h doxygen $(LIB_SO): $(OBJECTS) $(CXX) -g $(SHARED) -o $(LIB_SO) $+ $(LDFLAGS) ${OBJ_DIR}/%.o: %.c $(CC) -fPIC -c $< -o $@ $(CPPFLAGS) -Wno-unused-variable ${OBJ_DIR}/%.o: %.cc $(CXX) -MMD -MF $@.d -o $@ -fPIC -c $< $(CPPFLAGS) %.pdf: %.dot dot -Tpdf $< -o $@ -include $(OBJECTS:%=$OBJ_DIR/.%.d) PHONY += clean clean: rm -f *.o *.so rm -rf $(OBJ_DIR) PHONY += mrclean mrclean: clean rm -rf docs PHONY += tags tags: ctags -R tabbing: uncrustify -c C.cfg --no-backup *.c uncrustify -c C.cfg --no-backup $(TABBING_H) .PHONY: $(PHONY) # A 1-inch margin PDF generated by 'pandoc' %.pdf: %.md pandoc -o $@ $< -V header-includes='\usepackage[margin=1in]{geometry}'