From 74dcf14174a8c5b0ad36fff6409e356cfcf547f1 Mon Sep 17 00:00:00 2001 From: SisMaker <1713699517@qq.com> Date: Fri, 21 Feb 2020 13:29:52 +0800 Subject: [PATCH] =?UTF-8?q?nif=E7=BC=96=E8=AF=91=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- c_src/Makefile | 15 --------- c_src/cq/Makefile | 73 ----------------------------------------- c_src/cq/rebar.config | 30 +++++++++++++++++ c_src/cq1/Makefile | 73 ----------------------------------------- c_src/cq1/rebar.config | 26 +++++++++++++++ c_src/cq2/Makefile | 73 ----------------------------------------- c_src/cq2/rebar.config | 26 +++++++++++++++ c_src/erlNpc | Bin 0 -> 25623 bytes c_src/erlNpc.cmd | 4 +++ rebar.config | 4 +-- 10 files changed, 88 insertions(+), 236 deletions(-) delete mode 100644 c_src/Makefile delete mode 100644 c_src/cq/Makefile create mode 100644 c_src/cq/rebar.config delete mode 100644 c_src/cq1/Makefile create mode 100644 c_src/cq1/rebar.config delete mode 100644 c_src/cq2/Makefile create mode 100644 c_src/cq2/rebar.config create mode 100644 c_src/erlNpc create mode 100644 c_src/erlNpc.cmd diff --git a/c_src/Makefile b/c_src/Makefile deleted file mode 100644 index 1f80e4d..0000000 --- a/c_src/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -AllNifDirs :=$(shell ls -l | grep ^d | awk '{print $$9}') - -CurDir := $(shell pwd) -MdPriv := $(shell mkdir -p $(CurDir)/../priv/) - -ECHO: - @echo $(AllNifDirs) - -all:$(AllNifDirs) - -$(AllNifDirs):ECHO - @make -C $@ - -clean: - @for OneNifDir in $(AllNifDirs); do make -C $$OneNifDir clean; done diff --git a/c_src/cq/Makefile b/c_src/cq/Makefile deleted file mode 100644 index b5844b0..0000000 --- a/c_src/cq/Makefile +++ /dev/null @@ -1,73 +0,0 @@ -# Based on c_src.mk from erlang.mk by Loic Hoguin - -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).so - -# 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 - CXXFLAGS ?= -O3 -arch x86_64 -finline-functions -Wall - LDFLAGS ?= -arch x86_64 -flat_namespace -undefined suppress -else ifeq ($(UNAME_SYS), FreeBSD) - CC ?= cc - CFLAGS ?= -O3 -std=c99 -finline-functions -Wall -Wmissing-prototypes - CXXFLAGS ?= -O3 -finline-functions -Wall -else ifeq ($(UNAME_SYS), Linux) - CC ?= gcc - CFLAGS ?= -O3 -std=c99 -finline-functions -Wall -Wmissing-prototypes - CXXFLAGS ?= -O3 -finline-functions -Wall -endif - -CFLAGS += -fPIC -I $(ERTS_INCLUDE_DIR) -I $(ERL_INTERFACE_INCLUDE_DIR) -CXXFLAGS += -fPIC -I $(ERTS_INCLUDE_DIR) -I $(ERL_INTERFACE_INCLUDE_DIR) - -LDLIBS += -L $(ERL_INTERFACE_LIB_DIR) -lerl_interface -lei -LDFLAGS += -shared - -# Verbosity. - -c_verbose_0 = @echo " C " $(?F); -c_verbose = $(c_verbose_$(V)) - -cpp_verbose_0 = @echo " CPP " $(?F); -cpp_verbose = $(cpp_verbose_$(V)) - -link_verbose_0 = @echo " LD " $(@F); -link_verbose = $(link_verbose_$(V)) - -SOURCES := $(shell find $(C_SRC_DIR) -type f \( -name "*.c" -o -name "*.C" -o -name "*.cc" -o -name "*.cpp" \)) -OBJECTS = $(addsuffix .o, $(basename $(SOURCES))) - -COMPILE_C = $(c_verbose) $(CC) $(CFLAGS) $(CPPFLAGS) -c -COMPILE_CPP = $(cpp_verbose) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c - -$(C_SRC_OUTPUT): $(OBJECTS) - $(link_verbose) $(CC) $(OBJECTS) $(LDFLAGS) $(LDLIBS) -o $(C_SRC_OUTPUT) - -%.o: %.c - $(COMPILE_C) $(OUTPUT_OPTION) $< - -%.o: %.cc - $(COMPILE_CPP) $(OUTPUT_OPTION) $< - -%.o: %.C - $(COMPILE_CPP) $(OUTPUT_OPTION) $< - -%.o: %.cpp - $(COMPILE_CPP) $(OUTPUT_OPTION) $< - -clean: - @rm -f $(C_SRC_OUTPUT) $(OBJECTS) diff --git a/c_src/cq/rebar.config b/c_src/cq/rebar.config new file mode 100644 index 0000000..c55438b --- /dev/null +++ b/c_src/cq/rebar.config @@ -0,0 +1,30 @@ +{port_specs, [ + {"../../priv/cq.so", [ + "*.c", + "*.cc" + ]} +]}. + +%% {port_env, [ +%% {"(linux|solaris|freebsd|netbsd|openbsd|dragonfly|darwin|gnu)", +%% "CFLAGS", "$CFLAGS -Ic_src/ -g -Wall -flto -Werror -O3"}, +%% {"(linux|solaris|freebsd|netbsd|openbsd|dragonfly|darwin|gnu)", +%% "CXXFLAGS", "$CXXFLAGS -Ic_src/ -g -Wall -flto -Werror -O3"}, +%% +%% {"(linux|solaris|freebsd|netbsd|openbsd|dragonfly|darwin|gnu)", +%% "LDFLAGS", "$LDFLAGS -flto -lstdc++"}, +%% +%% %% OS X Leopard flags for 64-bit +%% {"darwin9.*-64$", "CXXFLAGS", "-m64"}, +%% {"darwin9.*-64$", "LDFLAGS", "-arch x86_64"}, +%% +%% %% OS X Snow Leopard flags for 32-bit +%% {"darwin10.*-32$", "CXXFLAGS", "-m32"}, +%% {"darwin10.*-32$", "LDFLAGS", "-arch i386"}, +%% +%% {"win32", "CXXFLAGS", "$CXXFLAGS /O2 /DNDEBUG"} +%% ]}. + + + + diff --git a/c_src/cq1/Makefile b/c_src/cq1/Makefile deleted file mode 100644 index b5844b0..0000000 --- a/c_src/cq1/Makefile +++ /dev/null @@ -1,73 +0,0 @@ -# Based on c_src.mk from erlang.mk by Loic Hoguin - -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).so - -# 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 - CXXFLAGS ?= -O3 -arch x86_64 -finline-functions -Wall - LDFLAGS ?= -arch x86_64 -flat_namespace -undefined suppress -else ifeq ($(UNAME_SYS), FreeBSD) - CC ?= cc - CFLAGS ?= -O3 -std=c99 -finline-functions -Wall -Wmissing-prototypes - CXXFLAGS ?= -O3 -finline-functions -Wall -else ifeq ($(UNAME_SYS), Linux) - CC ?= gcc - CFLAGS ?= -O3 -std=c99 -finline-functions -Wall -Wmissing-prototypes - CXXFLAGS ?= -O3 -finline-functions -Wall -endif - -CFLAGS += -fPIC -I $(ERTS_INCLUDE_DIR) -I $(ERL_INTERFACE_INCLUDE_DIR) -CXXFLAGS += -fPIC -I $(ERTS_INCLUDE_DIR) -I $(ERL_INTERFACE_INCLUDE_DIR) - -LDLIBS += -L $(ERL_INTERFACE_LIB_DIR) -lerl_interface -lei -LDFLAGS += -shared - -# Verbosity. - -c_verbose_0 = @echo " C " $(?F); -c_verbose = $(c_verbose_$(V)) - -cpp_verbose_0 = @echo " CPP " $(?F); -cpp_verbose = $(cpp_verbose_$(V)) - -link_verbose_0 = @echo " LD " $(@F); -link_verbose = $(link_verbose_$(V)) - -SOURCES := $(shell find $(C_SRC_DIR) -type f \( -name "*.c" -o -name "*.C" -o -name "*.cc" -o -name "*.cpp" \)) -OBJECTS = $(addsuffix .o, $(basename $(SOURCES))) - -COMPILE_C = $(c_verbose) $(CC) $(CFLAGS) $(CPPFLAGS) -c -COMPILE_CPP = $(cpp_verbose) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c - -$(C_SRC_OUTPUT): $(OBJECTS) - $(link_verbose) $(CC) $(OBJECTS) $(LDFLAGS) $(LDLIBS) -o $(C_SRC_OUTPUT) - -%.o: %.c - $(COMPILE_C) $(OUTPUT_OPTION) $< - -%.o: %.cc - $(COMPILE_CPP) $(OUTPUT_OPTION) $< - -%.o: %.C - $(COMPILE_CPP) $(OUTPUT_OPTION) $< - -%.o: %.cpp - $(COMPILE_CPP) $(OUTPUT_OPTION) $< - -clean: - @rm -f $(C_SRC_OUTPUT) $(OBJECTS) diff --git a/c_src/cq1/rebar.config b/c_src/cq1/rebar.config new file mode 100644 index 0000000..6fd2f2c --- /dev/null +++ b/c_src/cq1/rebar.config @@ -0,0 +1,26 @@ +{port_specs, [ + {"../../priv/cq1.so", [ + "*.c", + "*.cc" + ]} +]}. + +%% {port_env, [ +%% {"(linux|solaris|freebsd|netbsd|openbsd|dragonfly|darwin|gnu)", +%% "CFLAGS", "$CFLAGS -Ic_src/ -g -Wall -flto -Werror -O3"}, +%% {"(linux|solaris|freebsd|netbsd|openbsd|dragonfly|darwin|gnu)", +%% "CXXFLAGS", "$CXXFLAGS -Ic_src/ -g -Wall -flto -Werror -O3"}, +%% +%% {"(linux|solaris|freebsd|netbsd|openbsd|dragonfly|darwin|gnu)", +%% "LDFLAGS", "$LDFLAGS -flto -lstdc++"}, +%% +%% %% OS X Leopard flags for 64-bit +%% {"darwin9.*-64$", "CXXFLAGS", "-m64"}, +%% {"darwin9.*-64$", "LDFLAGS", "-arch x86_64"}, +%% +%% %% OS X Snow Leopard flags for 32-bit +%% {"darwin10.*-32$", "CXXFLAGS", "-m32"}, +%% {"darwin10.*-32$", "LDFLAGS", "-arch i386"}, +%% +%% {"win32", "CXXFLAGS", "$CXXFLAGS /O2 /DNDEBUG"} +%% ]}. diff --git a/c_src/cq2/Makefile b/c_src/cq2/Makefile deleted file mode 100644 index b5844b0..0000000 --- a/c_src/cq2/Makefile +++ /dev/null @@ -1,73 +0,0 @@ -# Based on c_src.mk from erlang.mk by Loic Hoguin - -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).so - -# 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 - CXXFLAGS ?= -O3 -arch x86_64 -finline-functions -Wall - LDFLAGS ?= -arch x86_64 -flat_namespace -undefined suppress -else ifeq ($(UNAME_SYS), FreeBSD) - CC ?= cc - CFLAGS ?= -O3 -std=c99 -finline-functions -Wall -Wmissing-prototypes - CXXFLAGS ?= -O3 -finline-functions -Wall -else ifeq ($(UNAME_SYS), Linux) - CC ?= gcc - CFLAGS ?= -O3 -std=c99 -finline-functions -Wall -Wmissing-prototypes - CXXFLAGS ?= -O3 -finline-functions -Wall -endif - -CFLAGS += -fPIC -I $(ERTS_INCLUDE_DIR) -I $(ERL_INTERFACE_INCLUDE_DIR) -CXXFLAGS += -fPIC -I $(ERTS_INCLUDE_DIR) -I $(ERL_INTERFACE_INCLUDE_DIR) - -LDLIBS += -L $(ERL_INTERFACE_LIB_DIR) -lerl_interface -lei -LDFLAGS += -shared - -# Verbosity. - -c_verbose_0 = @echo " C " $(?F); -c_verbose = $(c_verbose_$(V)) - -cpp_verbose_0 = @echo " CPP " $(?F); -cpp_verbose = $(cpp_verbose_$(V)) - -link_verbose_0 = @echo " LD " $(@F); -link_verbose = $(link_verbose_$(V)) - -SOURCES := $(shell find $(C_SRC_DIR) -type f \( -name "*.c" -o -name "*.C" -o -name "*.cc" -o -name "*.cpp" \)) -OBJECTS = $(addsuffix .o, $(basename $(SOURCES))) - -COMPILE_C = $(c_verbose) $(CC) $(CFLAGS) $(CPPFLAGS) -c -COMPILE_CPP = $(cpp_verbose) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c - -$(C_SRC_OUTPUT): $(OBJECTS) - $(link_verbose) $(CC) $(OBJECTS) $(LDFLAGS) $(LDLIBS) -o $(C_SRC_OUTPUT) - -%.o: %.c - $(COMPILE_C) $(OUTPUT_OPTION) $< - -%.o: %.cc - $(COMPILE_CPP) $(OUTPUT_OPTION) $< - -%.o: %.C - $(COMPILE_CPP) $(OUTPUT_OPTION) $< - -%.o: %.cpp - $(COMPILE_CPP) $(OUTPUT_OPTION) $< - -clean: - @rm -f $(C_SRC_OUTPUT) $(OBJECTS) diff --git a/c_src/cq2/rebar.config b/c_src/cq2/rebar.config new file mode 100644 index 0000000..9bbec13 --- /dev/null +++ b/c_src/cq2/rebar.config @@ -0,0 +1,26 @@ +{port_specs, [ + {"../../priv/cq2.so", [ + "*.c", + "*.cc" + ]} +]}. + +%% {port_env, [ +%% {"(linux|solaris|freebsd|netbsd|openbsd|dragonfly|darwin|gnu)", +%% "CFLAGS", "$CFLAGS -Ic_src/ -g -Wall -flto -Werror -O3"}, +%% {"(linux|solaris|freebsd|netbsd|openbsd|dragonfly|darwin|gnu)", +%% "CXXFLAGS", "$CXXFLAGS -Ic_src/ -g -Wall -flto -Werror -O3"}, +%% +%% {"(linux|solaris|freebsd|netbsd|openbsd|dragonfly|darwin|gnu)", +%% "LDFLAGS", "$LDFLAGS -flto -lstdc++"}, +%% +%% %% OS X Leopard flags for 64-bit +%% {"darwin9.*-64$", "CXXFLAGS", "-m64"}, +%% {"darwin9.*-64$", "LDFLAGS", "-arch x86_64"}, +%% +%% %% OS X Snow Leopard flags for 32-bit +%% {"darwin10.*-32$", "CXXFLAGS", "-m32"}, +%% {"darwin10.*-32$", "LDFLAGS", "-arch i386"}, +%% +%% {"win32", "CXXFLAGS", "$CXXFLAGS /O2 /DNDEBUG"} +%% ]}. diff --git a/c_src/erlNpc b/c_src/erlNpc new file mode 100644 index 0000000000000000000000000000000000000000..369cceca994ecb4278ef7585c61028c879ae901a GIT binary patch literal 25623 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 G)c*r)%{7Ps literal 0 HcmV?d00001 diff --git a/c_src/erlNpc.cmd b/c_src/erlNpc.cmd new file mode 100644 index 0000000..6c7a1ca --- /dev/null +++ b/c_src/erlNpc.cmd @@ -0,0 +1,4 @@ +@echo off +setlocal +set rebarscript=%~f0 +escript.exe "%rebarscript:.cmd=%" %* diff --git a/rebar.config b/rebar.config index 4b556b2..bc69599 100644 --- a/rebar.config +++ b/rebar.config @@ -2,7 +2,7 @@ {deps, []}. {pre_hooks, - [{"linux", compile, "make -C c_src all"}]}. + [{"", compile, "escript c_src/erlNpc compile"}]}. {post_hooks, - [{"linux", clean, "make -C c_src clean"}]}. + [{"", clean, "escript c_src/erlNpc clean"}]}.