github.com/nycdavid/zeus@v0.0.0-20201208104106-9ba439429e03/Makefile (about)

     1  PACKAGE=github.com/burke/zeus
     2  VERSION=$(shell cat VERSION)
     3  GEM=rubygem/pkg/zeus-$(VERSION).gem
     4  GEMPATH=$(realpath rubygem)
     5  VAGRANT_PLUGIN=vagrant/pkg/vagrant-zeus-$(VERSION).gem
     6  VAGRANT_WRAPPERS=$(wildcard vagrant/ext/inotify-wrapper/*)
     7  BINARIES=zeus-linux-386 zeus-linux-amd64
     8  GO_SRC=$(shell find go -name '*.go')
     9  GEM_SRC=$(shell find rubygem -name '*.rb')
    10  VAGRANT_SRC=$(shell find vagrant -name '*.rb')
    11  
    12  ifeq ($(shell uname -s),Darwin)
    13  	VAGRANT_WRAPPERS += vagrant/build/fsevents-wrapper
    14  	BINARIES += zeus-darwin-amd64
    15  endif
    16  
    17  CXX=g++
    18  CXXFLAGS=-O3 -g -Wall
    19  
    20  .PHONY: default all clean fmt test test-go test-rubygem install govendor bundler
    21  default: all
    22  
    23  all: test fmt man/build $(GEM) $(VAGRANT_PLUGIN)
    24  
    25  fmt: govendor
    26  	govendor fmt +local
    27  
    28  test: test-go test-rubygem
    29  
    30  test-go: go/zeusversion/zeusversion.go rubygem/lib/zeus/version.rb govendor
    31  	ZEUS_TEST_GEMPATH="$(GEMPATH)" GO15VENDOREXPERIMENT=1 govendor test +local
    32  
    33  test-rubygem: rubygem/lib/zeus/version.rb rubygem/Gemfile.lock
    34  	cd rubygem && bin/rspec
    35  
    36  man/build: Gemfile.lock
    37  	cd man && ../bin/rake
    38  
    39  rubygem/pkg/%: \
    40  	rubygem/man \
    41  	rubygem/examples \
    42  	rubygem/lib/zeus/version.rb \
    43  	rubygem/Gemfile.lock \
    44  	$(GEM_SRC) \
    45  	$(addprefix rubygem/build/,$(BINARIES))
    46  	cd rubygem && bundle install && bin/rake
    47  
    48  rubygem/man: man/build
    49  	mkdir -p $@
    50  	cp -R $< $@
    51  
    52  rubygem/examples: examples
    53  	rm -rf $@
    54  	cp -r $< $@
    55  
    56  vagrant/pkg/%: vagrant/lib/vagrant-zeus/version.rb $(VAGRANT_WRAPPERS) $(VAGRANT_SRC) vagrant/Gemfile.lock
    57  	cd vagrant && bundle install && bundle exec rake
    58  
    59  vagrant/build/fsevents-wrapper: vagrant/ext/fsevents/build/Release/fsevents-wrapper
    60  	mkdir -p $(@D)
    61  	cp $< $@
    62  
    63  vagrant/ext/fsevents/build/Release/fsevents-wrapper: vagrant/ext/fsevents/main.m
    64  	cd vagrant/ext/fsevents && xcodebuild
    65  
    66  rubygem/build/zeus-%: go/zeusversion/zeusversion.go $(GO_SRC)
    67  	mkdir -p rubygem/build
    68  	go get github.com/mitchellh/gox
    69  	GO15VENDOREXPERIMENT=1 gox -osarch="$(subst -,/,$*)" \
    70  		-output="rubygem/build/zeus-{{.OS}}-{{.Arch}}" \
    71  		$(PACKAGE)/go/cmd/zeus
    72  
    73  go/zeusversion/zeusversion.go: VERSION
    74  	mkdir -p $(@D)
    75  	@echo 'package zeusversion\n\nconst VERSION string = "$(VERSION)$(GO_VERSION_SUFFIX)"' > $@
    76  rubygem/lib/zeus/version.rb: VERSION
    77  	mkdir -p $(@D)
    78  	@echo 'module Zeus\n  VERSION = "$(VERSION)"\nend' > $@
    79  vagrant/lib/vagrant-zeus/version.rb: VERSION
    80  	mkdir -p $(@D)
    81  	@echo 'module VagrantPlugins\n  module Zeus\n    VERSION = "$(VERSION)"\n  end\nend' > $@
    82  
    83  
    84  install: $(GEM)
    85  	gem install $< --no-ri --no-rdoc
    86  
    87  %/Gemfile.lock: $*Gemfile bundler
    88  	cd $* && bundle check || bundle install
    89  
    90  Gemfile.lock: Gemfile bundler
    91  	bundle check || bundle install
    92  
    93  clean:
    94  	rm -rf vagrant/ext/fsevents/build man/build go/zeusversion
    95  	rm -rf rubygem/{man,build,pkg,examples,lib/zeus/version.rb,MANIFEST}
    96  	rm -rf vagrant/{build,pkg,lib/vagrant-zeus/version.rb,MANIFEST}
    97  
    98  govendor:
    99  	go get github.com/kardianos/govendor
   100  
   101  bundler:
   102  	bundle -v || gem install bundler --no-rdoc --no-ri