Current section
Files
Jump to
Current section
Files
Makefile
ERLANG_PATH:=$(shell erl -eval 'io:format("~s~n", [lists:concat([code:root_dir(), "/erts-", erlang:system_info(version), "/include"])])' -s init stop -noshell)
ERLANG_FLAGS?=-I$(ERLANG_PATH)
CC?=clang
EBIN_DIR?=ebin
ifeq ($(shell uname),Darwin)
OPTIONS=-dynamiclib -undefined dynamic_lookup
endif
SRC_DIR=src
PRIV_DIR=priv
TMP_DIR=tmp
CMARK=cmark
CMARK_REPO=https://github.com/jgm/CommonMark.git
CMARK_SRC_DIR=$(TMP_DIR)/$(CMARK)
CMARK_SCANNERS=scanners
CMARK_SRC_SCANNERS_C=$(SRC_DIR)/$(CMARK_SCANNERS).c
CMARK_SRC_SCANNERS_C_PATH=$(CMARK_SRC_DIR)/$(CMARK_SRC_SCANNERS_C)
CMARK_OBJS=\
$(CMARK_SRC_DIR)/$(SRC_DIR)/html/html.o \
$(CMARK_SRC_DIR)/$(SRC_DIR)/html/houdini_href_e.o \
$(CMARK_SRC_DIR)/$(SRC_DIR)/html/houdini_html_e.o \
$(CMARK_SRC_DIR)/$(SRC_DIR)/html/houdini_html_u.o \
$(CMARK_SRC_DIR)/$(SRC_DIR)/inlines.o \
$(CMARK_SRC_DIR)/$(SRC_DIR)/buffer.o \
$(CMARK_SRC_DIR)/$(SRC_DIR)/blocks.o \
$(CMARK_SRC_DIR)/$(SRC_DIR)/scanners.c \
$(CMARK_SRC_DIR)/$(SRC_DIR)/utf8.o \
$(CMARK_SRC_DIR)/$(SRC_DIR)/references.c
NIF_SRC=$(SRC_DIR)/$(CMARK)_nif.c
NIF_LIB=$(PRIV_DIR)/$(CMARK).so
OPTFLAGS?=-fPIC
CFLAGS?=-g -O3 $(OPTFLAGS) -I$(CMARK_SRC_DIR)/$(SRC_DIR)
all: $(NIF_LIB)
clone_CMARK: $(CMARK_SRC_DIR)
$(CMARK_SRC_DIR): $(TMP_DIR)
git clone --quiet --depth 10 --branch master $(CMARK_REPO) $@
$(TMP_DIR):
@mkdir -p $@ 2>&1 >/dev/null
$(PRIV_DIR):
@mkdir -p $@ 2>&1 >/dev/null
build_scanners: $(CMARK_SRC_DIR)
cd $(CMARK_SRC_DIR) && $(MAKE) $(CMARK_SRC_SCANNERS_C) && \
cd - && cp $(CMARK_SRC_SCANNERS_C_PATH) $(CMARK_SRC_SCANNERS_C)
place_scanners: $(CMARK_SRC_SCANNERS_C) $(CMARK_SRC_DIR)
cp $(CMARK_SRC_SCANNERS_C) $(CMARK_SRC_SCANNERS_C_PATH) 2>&1 >/dev/null
$(CMARK_SRC_SCANNERS_C_PATH): $(CMARK_SRC_SCANNERS_C) $(CMARK_SRC_DIR)
@cp $(CMARK_SRC_SCANNERS_C) $@ 2>&1 >/dev/null
$(NIF_LIB): $(CMARK_SRC_DIR) $(CMARK_OBJS) $(PRIV_DIR) $(NIF_SRC)
$(CC) $(CFLAGS) \
$(ERLANG_FLAGS) \
-shared $(OPTIONS) \
$(CMARK_OBJS) \
$(NIF_SRC) \
-o $@
CMARK_ex:
@mix compile
clean:
-rm -rf tmp
-rm -rf priv
.PHONY: all CMARK_ex clean clone_CMARK build_scanners place_scanners