mirror of
https://github.com/uselessd/alcove.git
synced 2026-04-15 17:25:33 +00:00
Support building with rebar3 and rebar2 using the makefile generated from "rebar3 new cmake". Do a straightforward port of the compiler options from the rebar port compiler. The optimizations/warnings can be re-enabled later. Use the fancy pants incremental building of each compilation unit from the template. It's a lot slower than compiling in one go but is slightly faster when running any rebar command (rebar runs make on each command which recreates the target. The Makefile needs to be fixed).
67 lines
2.1 KiB
Makefile
67 lines
2.1 KiB
Makefile
CURDIR := $(shell pwd)
|
|
BASEDIR := $(abspath $(CURDIR)/..)
|
|
|
|
PROJECT ?= $(notdir $(BASEDIR))
|
|
PROJECT := $(strip $(PROJECT))
|
|
|
|
ERTS_INCLUDE_DIR ?= $(shell erl -noshell -s init stop -eval "io:format(\"~s/erts-~s/include/\", [code:root_dir(), erlang:system_info(version)]).")
|
|
ERL_INTERFACE_INCLUDE_DIR ?= $(shell erl -noshell -s init stop -eval "io:format(\"~s\", [code:lib_dir(erl_interface, include)]).")
|
|
ERL_INTERFACE_LIB_DIR ?= $(shell erl -noshell -s init stop -eval "io:format(\"~s\", [code:lib_dir(erl_interface, lib)]).")
|
|
|
|
C_SRC_DIR = $(CURDIR)
|
|
C_SRC_OUTPUT ?= $(CURDIR)/../priv/$(PROJECT)
|
|
|
|
# System type and C compiler/flags.
|
|
|
|
UNAME_SYS := $(shell uname -s)
|
|
ifeq ($(UNAME_SYS), Darwin)
|
|
CC ?= cc
|
|
# CFLAGS ?= -O3 -std=c99 -arch x86_64 -finline-functions -Wall -Wmissing-prototypes
|
|
# LDFLAGS ?= -arch x86_64 -flat_namespace -undefined suppress
|
|
else ifeq ($(UNAME_SYS), FreeBSD)
|
|
CC ?= cc
|
|
# CFLAGS ?= -O3 -std=c99 -finline-functions -Wall -Wmissing-prototypes
|
|
else ifeq ($(UNAME_SYS), Linux)
|
|
CC ?= gcc
|
|
# CFLAGS ?= -O3 -std=c99 -finline-functions -Wall -Wmissing-prototypes
|
|
else ifeq ($(UNAME_SYS), SunOS)
|
|
LDFLAGS += -lsocket -lnsl
|
|
CFLAGS += -std=c99 -D_POSIX_C_SOURCE=200112L -D__EXTENSIONS__=1
|
|
endif
|
|
|
|
CFLAGS += -g -Wall $(ALCOVE_CFLAGS) -I $(C_SRC_DIR) -I $(ERTS_INCLUDE_DIR) -I $(ERL_INTERFACE_INCLUDE_DIR)
|
|
|
|
LDLIBS += -L $(ERL_INTERFACE_LIB_DIR) -lerl_interface -lei
|
|
|
|
# Verbosity.
|
|
|
|
c_verbose_0 = @echo " C " $(?F);
|
|
c_verbose = $(c_verbose_$(V))
|
|
|
|
link_verbose_0 = @echo " LD " $(@F);
|
|
link_verbose = $(link_verbose_$(V))
|
|
|
|
SOURCES := $(shell find $(C_SRC_DIR) -type f \( -name "*.c" \))
|
|
OBJECTS = $(addsuffix .o, $(basename $(SOURCES)))
|
|
|
|
COMPILE_C = $(c_verbose) $(CC) $(CFLAGS) -c
|
|
|
|
#all: privdir $(OBJECTS)
|
|
# $(CC) $(CFLAGS) -o $(C_SRC_OUTPUT) $(SOURCES) $(LDFLAGS) $(LDLIBS)
|
|
|
|
$(C_SRC_OUTPUT): privdir $(OBJECTS)
|
|
$(link_verbose) $(CC) $(OBJECTS) $(LDFLAGS) $(LDLIBS) -o $(C_SRC_OUTPUT)
|
|
|
|
%.o: %.c
|
|
$(COMPILE_C) $(OUTPUT_OPTION) $<
|
|
|
|
privdir:
|
|
@mkdir -p $(BASEDIR)/priv/
|
|
|
|
clean:
|
|
@rm -f $(C_SRC_OUTPUT) $(OBJECTS) \
|
|
c_src/alcove_call.h \
|
|
c_src/alcove_calls.h \
|
|
c_src/alcove_version.h \
|
|
src/alcove.erl
|