2017-07-11 14:32:01 +00:00
|
|
|
# Package configuration
|
|
|
|
PROJECT = enry
|
2018-04-28 13:02:50 +00:00
|
|
|
COMMANDS = cmd/enry
|
2017-07-11 14:32:01 +00:00
|
|
|
|
|
|
|
# Including ci Makefile
|
|
|
|
MAKEFILE = Makefile.main
|
|
|
|
CI_REPOSITORY = https://github.com/src-d/ci.git
|
|
|
|
CI_FOLDER = .ci
|
|
|
|
$(MAKEFILE):
|
|
|
|
@git clone --quiet $(CI_REPOSITORY) $(CI_FOLDER); \
|
|
|
|
cp $(CI_FOLDER)/$(MAKEFILE) .;
|
|
|
|
-include $(MAKEFILE)
|
2017-06-27 08:42:46 +00:00
|
|
|
|
2017-10-16 06:33:00 +00:00
|
|
|
# Docsrv: configure the languages whose api-doc can be auto generated
|
|
|
|
LANGUAGES = go
|
|
|
|
# Docs: do not edit this
|
|
|
|
DOCS_REPOSITORY := https://github.com/src-d/docs
|
2017-10-17 05:07:08 +00:00
|
|
|
SHARED_PATH ?= $(shell pwd)/.docsrv-resources
|
2017-10-16 06:33:00 +00:00
|
|
|
DOCS_PATH ?= $(SHARED_PATH)/.docs
|
|
|
|
$(DOCS_PATH)/Makefile.inc:
|
|
|
|
git clone --quiet --depth 1 $(DOCS_REPOSITORY) $(DOCS_PATH);
|
|
|
|
-include $(DOCS_PATH)/Makefile.inc
|
|
|
|
|
2017-04-05 16:38:42 +00:00
|
|
|
LINGUIST_PATH = .linguist
|
2016-07-13 20:21:18 +00:00
|
|
|
|
2017-07-07 09:20:54 +00:00
|
|
|
# build CLI
|
2017-07-11 14:32:01 +00:00
|
|
|
LOCAL_TAG := $(shell git describe --tags --abbrev=0)
|
|
|
|
LOCAL_COMMIT := $(shell git rev-parse --short HEAD)
|
|
|
|
LOCAL_BUILD := $(shell date +"%m-%d-%Y_%H_%M_%S")
|
|
|
|
LOCAL_LDFLAGS = -s -X main.version=$(LOCAL_TAG) -X main.build=$(LOCAL_BUILD) -X main.commit=$(LOCAL_COMMIT)
|
2017-07-07 09:20:54 +00:00
|
|
|
|
2017-08-08 10:02:27 +00:00
|
|
|
# shared objects
|
|
|
|
RESOURCES_DIR=./.shared
|
|
|
|
LINUX_DIR=$(RESOURCES_DIR)/linux-x86-64
|
|
|
|
LINUX_SHARED_LIB=$(LINUX_DIR)/libenry.so
|
|
|
|
DARWIN_DIR=$(RESOURCES_DIR)/darwin
|
|
|
|
DARWIN_SHARED_LIB=$(DARWIN_DIR)/libenry.dylib
|
|
|
|
HEADER_FILE=libenry.h
|
|
|
|
NATIVE_LIB=./shared/enry.go
|
|
|
|
|
2017-10-25 10:30:25 +00:00
|
|
|
# source files to be patched for using "rubex" instead of "regexp"
|
|
|
|
RUBEX_PATCHED := internal/code-generator/generator/heuristics.go internal/tokenizer/tokenize.go common.go
|
|
|
|
RUBEX_ORIG := $(RUBEX_PATCHED:=.orig)
|
|
|
|
|
2018-03-28 18:52:49 +00:00
|
|
|
.PHONY: revert-oniguruma
|
2017-10-25 10:30:25 +00:00
|
|
|
|
2017-04-05 16:38:42 +00:00
|
|
|
$(LINGUIST_PATH):
|
2017-04-05 17:27:19 +00:00
|
|
|
git clone https://github.com/github/linguist.git $@
|
2017-04-05 16:38:42 +00:00
|
|
|
|
2017-07-11 14:32:01 +00:00
|
|
|
clean-linguist:
|
|
|
|
rm -rf $(LINGUIST_PATH)
|
|
|
|
|
2017-08-08 10:02:27 +00:00
|
|
|
clean-shared:
|
|
|
|
rm -rf $(RESOURCES_DIR)
|
|
|
|
|
|
|
|
clean: clean-linguist clean-shared
|
2017-06-27 08:42:46 +00:00
|
|
|
|
2017-04-05 16:38:42 +00:00
|
|
|
code-generate: $(LINGUIST_PATH)
|
2017-06-08 10:28:36 +00:00
|
|
|
mkdir -p data
|
2017-04-05 16:38:42 +00:00
|
|
|
go run internal/code-generator/main.go
|
|
|
|
|
2017-06-28 11:01:36 +00:00
|
|
|
benchmarks: $(LINGUIST_PATH)
|
2017-07-10 15:08:21 +00:00
|
|
|
go test -run=NONE -bench=. && benchmarks/linguist-total.sh
|
2017-06-28 11:01:36 +00:00
|
|
|
|
|
|
|
benchmarks-samples: $(LINGUIST_PATH)
|
2017-07-10 15:08:21 +00:00
|
|
|
go test -run=NONE -bench=. -benchtime=5us && benchmarks/linguist-samples.rb
|
2017-06-28 11:01:36 +00:00
|
|
|
|
|
|
|
benchmarks-slow: $(LINGUST_PATH)
|
2017-07-10 15:08:21 +00:00
|
|
|
mkdir -p benchmarks/output && go test -run=NONE -bench=. -slow -benchtime=100ms -timeout=100h >benchmarks/output/enry_samples.bench && \
|
|
|
|
benchmarks/linguist-samples.rb 5 >benchmarks/output/linguist_samples.bench
|
2017-06-28 11:01:36 +00:00
|
|
|
|
2017-10-25 10:30:25 +00:00
|
|
|
$(RUBEX_ORIG): %.orig : %
|
|
|
|
sed -i.orig -e 's/"regexp"/regexp "github.com\/moovweb\/rubex"/g' $<
|
|
|
|
@touch $@
|
|
|
|
|
2018-03-28 18:52:49 +00:00
|
|
|
oniguruma: $(RUBEX_ORIG)
|
2017-09-29 10:38:57 +00:00
|
|
|
|
2018-03-28 18:52:49 +00:00
|
|
|
revert-oniguruma:
|
2017-10-25 10:30:25 +00:00
|
|
|
@for file in $(RUBEX_PATCHED); do if [ -e "$$file.orig" ]; then mv "$$file.orig" "$$file" && echo mv "$$file.orig" "$$file"; fi; done
|
2017-09-29 10:38:57 +00:00
|
|
|
|
2017-07-07 09:20:54 +00:00
|
|
|
build-cli:
|
2018-04-28 13:02:50 +00:00
|
|
|
go build -o enry -ldflags "$(LOCAL_LDFLAGS)" cmd/enry/main.go
|
2017-08-08 10:02:27 +00:00
|
|
|
|
|
|
|
linux-shared: $(LINUX_SHARED_LIB)
|
|
|
|
|
|
|
|
darwin-shared: $(DARWIN_SHARED_LIB)
|
|
|
|
|
|
|
|
$(DARWIN_SHARED_LIB):
|
|
|
|
mkdir -p $(DARWIN_DIR) && \
|
2017-09-28 16:07:55 +00:00
|
|
|
CC="o64-clang" CXX="o64-clang++" CGO_ENABLED=1 GOOS=darwin go build -buildmode=c-shared -o $(DARWIN_SHARED_LIB) $(NATIVE_LIB) && \
|
2017-08-08 10:02:27 +00:00
|
|
|
mv $(DARWIN_DIR)/$(HEADER_FILE) $(RESOURCES_DIR)/$(HEADER_FILE)
|
|
|
|
|
|
|
|
$(LINUX_SHARED_LIB):
|
|
|
|
mkdir -p $(LINUX_DIR) && \
|
|
|
|
GOOS=linux GOARCH=amd64 go build -buildmode=c-shared -o $(LINUX_SHARED_LIB) $(NATIVE_LIB) && \
|
|
|
|
mv $(LINUX_DIR)/$(HEADER_FILE) $(RESOURCES_DIR)/$(HEADER_FILE)
|