github.com/zkry/enry@v1.6.3/Makefile (about) 1 # Package configuration 2 PROJECT = enry 3 COMMANDS = cli/enry 4 5 # Including ci Makefile 6 MAKEFILE = Makefile.main 7 CI_REPOSITORY = https://github.com/src-d/ci.git 8 CI_FOLDER = .ci 9 $(MAKEFILE): 10 @git clone --quiet $(CI_REPOSITORY) $(CI_FOLDER); \ 11 cp $(CI_FOLDER)/$(MAKEFILE) .; 12 -include $(MAKEFILE) 13 14 # Docsrv: configure the languages whose api-doc can be auto generated 15 LANGUAGES = go 16 # Docs: do not edit this 17 DOCS_REPOSITORY := https://github.com/src-d/docs 18 SHARED_PATH ?= $(shell pwd)/.docsrv-resources 19 DOCS_PATH ?= $(SHARED_PATH)/.docs 20 $(DOCS_PATH)/Makefile.inc: 21 git clone --quiet --depth 1 $(DOCS_REPOSITORY) $(DOCS_PATH); 22 -include $(DOCS_PATH)/Makefile.inc 23 24 LINGUIST_PATH = .linguist 25 26 # build CLI 27 LOCAL_TAG := $(shell git describe --tags --abbrev=0) 28 LOCAL_COMMIT := $(shell git rev-parse --short HEAD) 29 LOCAL_BUILD := $(shell date +"%m-%d-%Y_%H_%M_%S") 30 LOCAL_LDFLAGS = -s -X main.version=$(LOCAL_TAG) -X main.build=$(LOCAL_BUILD) -X main.commit=$(LOCAL_COMMIT) 31 32 # shared objects 33 RESOURCES_DIR=./.shared 34 LINUX_DIR=$(RESOURCES_DIR)/linux-x86-64 35 LINUX_SHARED_LIB=$(LINUX_DIR)/libenry.so 36 DARWIN_DIR=$(RESOURCES_DIR)/darwin 37 DARWIN_SHARED_LIB=$(DARWIN_DIR)/libenry.dylib 38 HEADER_FILE=libenry.h 39 NATIVE_LIB=./shared/enry.go 40 41 # source files to be patched for using "rubex" instead of "regexp" 42 RUBEX_PATCHED := internal/code-generator/generator/heuristics.go internal/tokenizer/tokenize.go common.go 43 RUBEX_ORIG := $(RUBEX_PATCHED:=.orig) 44 45 .PHONY: revert-onigumura 46 47 $(LINGUIST_PATH): 48 git clone https://github.com/github/linguist.git $@ 49 50 clean-linguist: 51 rm -rf $(LINGUIST_PATH) 52 53 clean-shared: 54 rm -rf $(RESOURCES_DIR) 55 56 clean: clean-linguist clean-shared 57 58 code-generate: $(LINGUIST_PATH) 59 mkdir -p data 60 go run internal/code-generator/main.go 61 62 benchmarks: $(LINGUIST_PATH) 63 go test -run=NONE -bench=. && benchmarks/linguist-total.sh 64 65 benchmarks-samples: $(LINGUIST_PATH) 66 go test -run=NONE -bench=. -benchtime=5us && benchmarks/linguist-samples.rb 67 68 benchmarks-slow: $(LINGUST_PATH) 69 mkdir -p benchmarks/output && go test -run=NONE -bench=. -slow -benchtime=100ms -timeout=100h >benchmarks/output/enry_samples.bench && \ 70 benchmarks/linguist-samples.rb 5 >benchmarks/output/linguist_samples.bench 71 72 $(RUBEX_ORIG): %.orig : % 73 sed -i.orig -e 's/"regexp"/regexp "github.com\/moovweb\/rubex"/g' $< 74 @touch $@ 75 76 onigumura: $(RUBEX_ORIG) 77 78 revert-onigumura: 79 @for file in $(RUBEX_PATCHED); do if [ -e "$$file.orig" ]; then mv "$$file.orig" "$$file" && echo mv "$$file.orig" "$$file"; fi; done 80 81 build-cli: 82 go build -o enry -ldflags "$(LOCAL_LDFLAGS)" cli/enry/main.go 83 84 linux-shared: $(LINUX_SHARED_LIB) 85 86 darwin-shared: $(DARWIN_SHARED_LIB) 87 88 $(DARWIN_SHARED_LIB): 89 mkdir -p $(DARWIN_DIR) && \ 90 CC="o64-clang" CXX="o64-clang++" CGO_ENABLED=1 GOOS=darwin go build -buildmode=c-shared -o $(DARWIN_SHARED_LIB) $(NATIVE_LIB) && \ 91 mv $(DARWIN_DIR)/$(HEADER_FILE) $(RESOURCES_DIR)/$(HEADER_FILE) 92 93 $(LINUX_SHARED_LIB): 94 mkdir -p $(LINUX_DIR) && \ 95 GOOS=linux GOARCH=amd64 go build -buildmode=c-shared -o $(LINUX_SHARED_LIB) $(NATIVE_LIB) && \ 96 mv $(LINUX_DIR)/$(HEADER_FILE) $(RESOURCES_DIR)/$(HEADER_FILE)