99 lines
4.3 KiB
Makefile
99 lines
4.3 KiB
Makefile
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
|
||
|
||
# Переменные для deb-пакетов
|
||
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
|
||
@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
|
||
|
||
###############################################################################
|
||
# Очистка временных файлов
|
||
###############################################################################
|
||
clean:
|
||
rm -rf $(BUILD_DIR)
|
||
rm -f *.deb
|