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)