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