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 " >> 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 " >> 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