CC = gcc PKG_CONFIG = pkg-config CONFIG_CFLAGS := $(shell $(PKG_CONFIG) --cflags libconfig) CONFIG_LDFLAGS := $(shell $(PKG_CONFIG) --libs libconfig) CFLAGS = -Wall -O2 -Ilibmysyslog $(CONFIG_CFLAGS) LDFLAGS = -L$(BUILD_DIR) -lmysyslog $(CONFIG_LDFLAGS) BUILD_DIR = build LIB_SRC = libmysyslog/libmysyslog.c LIB_OBJ = $(BUILD_DIR)/libmysyslog.o LIB_A = $(BUILD_DIR)/libmysyslog.a CLIENT_DIR := myRPC-client/src CLIENT_SRC := $(CLIENT_DIR)/myRPC-client.c CLIENT_OBJ := $(BUILD_DIR)/myRPC-client.o CLIENT_BIN := $(BUILD_DIR)/myRPC-client SERVER_DIR := myRPC-server/src SERVER_SRC := $(SERVER_DIR)/myRPC-server.c SERVER_OBJ := $(BUILD_DIR)/myRPC-server.o SERVER_BIN := $(BUILD_DIR)/myRPC-server version = 1.0 revision = 0 architecture = all .PHONY: all clean deb repo systemd_install all: $(BUILD_DIR) $(LIB_A) $(CLIENT_BIN) $(SERVER_BIN) $(BUILD_DIR): mkdir -p $(BUILD_DIR) $(LIB_OBJ): $(LIB_SRC) | $(BUILD_DIR) $(CC) $(CFLAGS) -fPIC -c $< -o $@ $(LIB_A): $(LIB_OBJ) ar rcs $@ $^ $(CLIENT_OBJ): $(CLIENT_SRC) | $(BUILD_DIR) $(CC) $(CFLAGS) -c $< -o $@ $(CLIENT_BIN): $(CLIENT_OBJ) $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(SERVER_OBJ): $(SERVER_SRC) | $(BUILD_DIR) $(CC) $(CFLAGS) -c $< -o $@ $(SERVER_BIN): $(SERVER_OBJ) $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) ############################################################################### # Создание deb-пакетов ############################################################################### deb: deb_client deb_server @rm -rf MyRPC_client_$(version)-$(revision)_$(architecture) @rm -rf MyRPC_server_$(version)-$(revision)_$(architecture) deb_client: @mkdir -p MyRPC_client_$(version)-$(revision)_$(architecture)/DEBIAN @printf "Package: myrpc-client\nVersion: $(version)\nArchitecture: $(architecture)\nMaintainer: gandc \nDescription: Client for remote command execution via myRPC\n" > MyRPC_client_$(version)-$(revision)_$(architecture)/DEBIAN/control @mkdir -p MyRPC_client_$(version)-$(revision)_$(architecture)/usr/local/bin @cp $(CLIENT_BIN) MyRPC_client_$(version)-$(revision)_$(architecture)/usr/local/bin @dpkg-deb --root-owner-group --build MyRPC_client_$(version)-$(revision)_$(architecture) deb_server: @mkdir -p MyRPC_server_$(version)-$(revision)_$(architecture)/DEBIAN @printf "Package: myrpc-server\nVersion: $(version)\nArchitecture: $(architecture)\nMaintainer: gandc \nDescription: Server for remote command execution via myRPC\n" > MyRPC_server_$(version)-$(revision)_$(architecture)/DEBIAN/control @mkdir -p MyRPC_server_$(version)-$(revision)_$(architecture)/usr/local/bin @cp $(SERVER_BIN) MyRPC_server_$(version)-$(revision)_$(architecture)/usr/local/bin @mkdir -p MyRPC_server_$(version)-$(revision)_$(architecture)/lib/systemd/system @cp systemd/myrpc-server.service MyRPC_server_$(version)-$(revision)_$(architecture)/lib/systemd/system @printf "#!/bin/sh\nsystemctl daemon-reload\n" > MyRPC_server_$(version)-$(revision)_$(architecture)/DEBIAN/postinst @chmod 755 MyRPC_server_$(version)-$(revision)_$(architecture)/DEBIAN/postinst @dpkg-deb --root-owner-group --build MyRPC_server_$(version)-$(revision)_$(architecture) ############################################################################### # Создание локального репозитория APT ############################################################################### repo: @mkdir -p /usr/local/repos @cp *.deb /usr/local/repos @cd /usr/local/repos && dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz @echo "deb [trusted=yes] file:/usr/local/repos ./" | sudo tee /etc/apt/sources.list.d/myrpc.list @sudo apt-get update ############################################################################### # Установка systemd unit-файла ############################################################################### systemd_install: @echo "Installing systemd unit for myrpc-server..." @sudo cp systemd/myrpc-server.service /etc/systemd/system/ @sudo systemctl daemon-reload @echo "Done. You can now sudo systemctl enable myrpc-server && sudo systemctl start myrpc-server" ############################################################################### # Очистка ############################################################################### clean: rm -rf $(BUILD_DIR) rm -f *.deb