github.com/cptmikhailov/conmon@v2.0.20+incompatible/Makefile (about)

     1  VERSION := $(shell cat VERSION)
     2  PREFIX ?= /usr/local
     3  BINDIR ?= ${PREFIX}/bin
     4  LIBEXECDIR ?= ${PREFIX}/libexec
     5  GO ?= go
     6  PROJECT := github.com/containers/conmon
     7  PKG_CONFIG ?= pkg-config
     8  HEADERS := $(wildcard src/*.h)
     9  OBJS := src/conmon.o src/cmsg.o src/ctr_logging.o src/utils.o src/cli.o src/globals.o src/cgroup.o src/conn_sock.o src/oom.o src/ctrl.o src/ctr_stdio.o src/parent_pipe_fd.o src/ctr_exit.o src/runtime_args.o
    10  
    11  
    12  
    13  .PHONY: all git-vars
    14  all: git-vars bin bin/conmon
    15  
    16  git-vars:
    17  ifeq ($(shell bash -c '[[ `command -v git` && `git rev-parse --git-dir 2>/dev/null` ]] && echo true'),true)
    18  	$(eval COMMIT_NO :=$(shell git rev-parse HEAD 2> /dev/null || true))
    19  	$(eval GIT_COMMIT := $(if $(shell git status --porcelain --untracked-files=no),"${COMMIT_NO}-dirty","${COMMIT_NO}"))
    20  	$(eval GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD 2>/dev/null))
    21  	$(eval GIT_BRANCH_CLEAN := $(shell echo $(GIT_BRANCH) | sed -e "s/[^[:alnum:]]/-/g"))
    22  else
    23  	$(eval COMMIT_NO := unknown)
    24  	$(eval GIT_COMMIT := unknown)
    25  	$(eval GIT_BRANCH := unknown)
    26  	$(eval GIT_BRANCH_CLEAN := unknown)
    27  endif
    28  
    29  override LIBS += $(shell $(PKG_CONFIG) --libs glib-2.0)
    30  
    31  CFLAGS ?= -std=c99 -Os -Wall -Wextra -Werror
    32  override CFLAGS += $(shell $(PKG_CONFIG) --cflags glib-2.0) -DVERSION=\"$(VERSION)\" -DGIT_COMMIT=\"$(GIT_COMMIT)\"
    33  
    34  # Conditionally compile journald logging code if the libraries can be found
    35  # if they can be found, set USE_JOURNALD macro for use in conmon code.
    36  #
    37  # "pkg-config --exists" will error if the package doesn't exist. Make can only compare
    38  # output of commands, so the echo commands are to allow pkg-config to error out, make to catch it,
    39  # and allow the compilation to complete.
    40  ifeq ($(shell $(PKG_CONFIG) --exists libsystemd-journal && echo "0" || echo "1"), 0)
    41  	override LIBS += $(shell $(PKG_CONFIG) --libs libsystemd-journal)
    42  	override CFLAGS += $(shell $(PKG_CONFIG) --cflags libsystemd-journal) -D USE_JOURNALD=0
    43  else ifeq ($(shell $(PKG_CONFIG) --exists libsystemd && echo "0" || echo "1"), 0)
    44  	override LIBS += $(shell $(PKG_CONFIG) --libs libsystemd)
    45  	override CFLAGS += $(shell $(PKG_CONFIG) --cflags libsystemd) -D USE_JOURNALD=0
    46  endif
    47  
    48  # Update nix/nixpkgs.json its latest stable commit
    49  .PHONY: nixpkgs
    50  nixpkgs:
    51  	@nix run -f channel:nixos-20.03 nix-prefetch-git -c nix-prefetch-git \
    52  		--no-deepClone https://github.com/nixos/nixpkgs > nix/nixpkgs.json
    53  
    54  # Build statically linked binary
    55  .PHONY: static
    56  static:
    57  	@nix build -f nix/
    58  	mkdir -p ./bin
    59  	cp -rfp ./result/bin/* ./bin/
    60  
    61  bin/conmon: $(OBJS) | bin
    62  	$(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^ $(LIBS)
    63  
    64  %.o: %.c $(HEADERS)
    65  	$(CC) $(CFLAGS) -o $@ -c $<
    66  
    67  config: git-vars cmd/conmon-config/conmon-config.go runner/config/config.go runner/config/config_unix.go runner/config/config_windows.go
    68  	$(GO) build $(LDFLAGS) -tags "$(BUILDTAGS)" -o bin/config $(PROJECT)/cmd/conmon-config
    69  		( cd src && $(CURDIR)/bin/config )
    70  
    71  test: git-vars runner/conmon_test/*.go runner/conmon/*.go
    72  	$(GO) test $(LDFLAGS) -tags "$(BUILDTAGS)" $(PROJECT)/runner/conmon_test/
    73  
    74  bin:
    75  	mkdir -p bin
    76  
    77  .PHONY: vendor
    78  vendor:
    79  	GO111MODULE=on $(GO) mod tidy
    80  	GO111MODULE=on $(GO) mod vendor
    81  	GO111MODULE=on $(GO) mod verify
    82  
    83  .PHONY: clean
    84  clean:
    85  	rm -rf bin/ src/*.o
    86  
    87  .PHONY: install install.bin install.crio install.podman podman crio
    88  install: install.bin
    89  
    90  podman: install.podman
    91  
    92  crio: install.crio
    93  
    94  install.bin: bin/conmon
    95  	install ${SELINUXOPT} -D -m 755 bin/conmon $(DESTDIR)$(BINDIR)/conmon
    96  
    97  install.crio: bin/conmon
    98  	install ${SELINUXOPT} -D -m 755 bin/conmon $(DESTDIR)$(LIBEXECDIR)/crio/conmon
    99  
   100  install.podman: bin/conmon
   101  	install ${SELINUXOPT} -D -m 755 bin/conmon $(DESTDIR)$(LIBEXECDIR)/podman/conmon
   102  
   103  .PHONY: fmt
   104  fmt:
   105  	find . '(' -name '*.h' -o -name '*.c' ! -path './vendor/*' ')'  -exec clang-format -i {} \+
   106  	find . -name '*.go' ! -path './vendor/*' -exec gofmt -s -w {} \+
   107  	git diff --exit-code