Files
myRPC/Makefile

110 lines
4.9 KiB
Makefile
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
CC = gcc
CFLAGS = -Wall -O2 -Ilibmysyslog
LDFLAGS = -Lbuild -lmysyslog -lconfig
BUILD_DIR = build
SRCS_CLIENT = myRPC-client.c
SRCS_SERVER = myRPC-server.c
OBJS_CLIENT = $(BUILD_DIR)/myRPC-client.o
OBJS_SERVER = $(BUILD_DIR)/myRPC-server.o
TARGET_CLIENT = $(BUILD_DIR)/myRPC-client
TARGET_SERVER = $(BUILD_DIR)/myRPC-server
LIB_SRC = libmysyslog/libmysyslog.c
LIB_OBJ = $(BUILD_DIR)/libmysyslog.o
LIB_A = $(BUILD_DIR)/libmysyslog.a
version = 1.0
revision = 0
architecture = all
.PHONY: all clean deb repo
all: $(BUILD_DIR) $(LIB_A) $(TARGET_CLIENT) $(TARGET_SERVER)
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)
$(BUILD_DIR)/myRPC-client.o: myRPC-client.c | $(BUILD_DIR)
$(CC) $(CFLAGS) -c $< -o $@
$(BUILD_DIR)/myRPC-server.o: myRPC-server.c | $(BUILD_DIR)
$(CC) $(CFLAGS) -c $< -o $@
$(BUILD_DIR)/libmysyslog.o: $(LIB_SRC) | $(BUILD_DIR)
$(CC) $(CFLAGS) -fPIC -c $< -o $@
$(LIB_A): $(BUILD_DIR)/libmysyslog.o
ar rcs $@ $^
$(TARGET_CLIENT): $(OBJS_CLIENT)
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
$(TARGET_SERVER): $(OBJS_SERVER)
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
###############################################################################
# Создание deb-пакетов
###############################################################################
# Цель deb собирает deb-пакеты для клиента и сервера, а затем очищает временные директории
deb: deb_client deb_server
@rm -rf MyRPC_client_$(version)-$(revision)_$(architecture)
@rm -rf MyRPC_server_$(version)-$(revision)_$(architecture)
# Создание deb-пакета для myRPC-client
deb_client:
@mkdir -p MyRPC_client_$(version)-$(revision)_$(architecture)/DEBIAN
@echo "Package: myrpc-client" > MyRPC_client_$(version)-$(revision)_$(architecture)/DEBIAN/control
@echo "Version: $(version)" >> MyRPC_client_$(version)-$(revision)_$(architecture)/DEBIAN/control
@echo "Architecture: $(architecture)" >> MyRPC_client_$(version)-$(revision)_$(architecture)/DEBIAN/control
@echo "Maintainer: gandc <admin@gandc.ru>" >> MyRPC_client_$(version)-$(revision)_$(architecture)/DEBIAN/control
@echo "Description: Client for remote command execution via myRPC" >> MyRPC_client_$(version)-$(revision)_$(architecture)/DEBIAN/control
@mkdir -p MyRPC_client_$(version)-$(revision)_$(architecture)/usr/local/bin
@cp $(TARGET_CLIENT) MyRPC_client_$(version)-$(revision)_$(architecture)/usr/local/bin
@dpkg-deb --root-owner-group --build MyRPC_client_$(version)-$(revision)_$(architecture)
# Создание deb-пакета для myRPC-server
deb_server:
@mkdir -p MyRPC_server_$(version)-$(revision)_$(architecture)/DEBIAN
@echo "Package: myrpc-server" > MyRPC_server_$(version)-$(revision)_$(architecture)/DEBIAN/control
@echo "Version: $(version)" >> MyRPC_server_$(version)-$(revision)_$(architecture)/DEBIAN/control
@echo "Architecture: $(architecture)" >> MyRPC_server_$(version)-$(revision)_$(architecture)/DEBIAN/control
@echo "Maintainer: gandc <admin@gandc.ru>" >> MyRPC_server_$(version)-$(revision)_$(architecture)/DEBIAN/control
@echo "Description: Server for remote command execution via myRPC" >> MyRPC_server_$(version)-$(revision)_$(architecture)/DEBIAN/control
@mkdir -p MyRPC_server_$(version)-$(revision)_$(architecture)/usr/local/bin
@cp $(TARGET_SERVER) MyRPC_server_$(version)-$(revision)_$(architecture)/usr/local/bin
@cp systemd/myrpc-server.service MyRPC_server_$(version)-$(revision)_$(architecture)/lib/systemd/system
@echo "#!/bin/sh" > MyRPC_server_$(version)-$(revision)_$(architecture)/DEBIAN/postinst
@echo "systemctl daemon-reload" >> 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_install:
@echo "Installing systemd unit"
@sudo cp systemd/myrpc-server.service /etc/systemd/system/
@sudo systemctl daemon-reload
# @sudo systemctl enable myrpc-server
# @sudo systemctl restart myrpc-server
@echo "Systemd unit successfully installed"
###############################################################################
# Очистка временных файлов
###############################################################################
clean:
rm -rf $(BUILD_DIR)
rm -f *.deb