-
Notifications
You must be signed in to change notification settings - Fork 1
/
makefile
88 lines (69 loc) · 1.92 KB
/
makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
####
#
# Archivo: Makefile
#
# Para compilar todo el proyecto, hágalo con la orden make.
# Para compilar 'solo' el servidor: make servidor
# Para compilar solo el cliente: make cliente
# Para compilar solo la shell: make shell
# Para limpiar: make clean
# Para limpiar todo (con ejecutables): make clean_all
####
###Direcotorios de la aplicación
INCLUDEDIR = ./include
LIBDIR = ./lib
BINDIR = ./bin
SRCDIR = ./src
###Programas estándar que se utilizan
AR = ar
AFLAGS = rs
DBG=gdb
###Compilador
CC = gcc
CFLAGS = -I$(INCLUDEDIR)
LFLAGS = -L$(LIBDIR)
CLIBS = -lpthread
DEBUG = -g$(DBG)
###Biblioteca de usuario y archivos que forman parte de la biblioteca
BIBLIOTECA= $(LIBDIR)/librevil.a
OBJETOS_BIBLIOTECA = iosocket.o
###Programa ejecutable
SERVIDOR = $(BINDIR)/revil_server
OBJETOS_SERVIDOR = $(SRCDIR)/servidor.c
CLIENTE = $(BINDIR)/revil_client
OBJETOS_CLIENTE = $(SRCDIR)/{iosocket.c,cliente.c,cmd_exec.c}
R_SHELL = $(BINDIR)/revil_shell
OBJETOS_SHELL = $(SRCDIR)/{shell.c,iosocket.c}
ALL = $(SERVIDOR) $(CLIENTE)
###Tuplas
all : $(ALL)
servidor: $(SERVIDOR)
cliente: $(CLIENTE)
shell: $(R_SHELL)
$(SERVIDOR): $(R_SHELL)
echo " [*]Generando el servidor"
$(CC) $(OBJETOS_SERVIDOR) $(CFLAGS) $(DEBUG) -o $(SERVIDOR)
echo " --> Listo!"
$(CLIENTE):
echo " [*]Generando el cliente"
$(CC) $(OBJETOS_CLIENTE) $(CFLAGS) $(CLIBS) $(DEBUG) -o $(CLIENTE)
echo " --> Listo!"
$(R_SHELL):
echo " [*]Generando el shell"
$(CC) $(OBJETOS_SHELL) $(CFLAGS) $(CLIBS) $(DEBUG) -o $(R_SHELL)
echo " --> Listo!"
## Regla no usada
$(BIBLIOTECA) : $(OBJETOS_BIBLIOTECA)
echo " [*]Construyendo la biblioteca"
$(AR) $(AFLAGS) $(BIBLIOTECA) $(OBJETOS_BIBLIOTECA)
echo " --> Listo!"
# Regla para borrar
clean :
echo " [*]Eliminando archivos objetos y bibliotecas..."
rm -rf *.o *.a
echo " --> Hecho"
#Regla para borrar todo
clean_all:
echo " [*]Eliminando archivos objeto, bibliotecas y ejecutables..."
rm -rf *.o *.a $(BINDIR)/*
echo " --> Hecho"