blob: 5e8b0527eba91b779a558aa191d1ec805d9f6d44 (
plain) (
blame)
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
|
PROJECT=agni
CC=gcc
CFLAGS=
SOURCES=$(wildcard *.c)
OBJECTS=$(SOURCES:.c=.o)
LDFLAGS=-lrt -lm
INCLUDE=-I./extlibs/ -I./
all: createcmd createextlib $(OBJECTS) $(PROJECT)
$(PROJECT): version $(SOURCES) agni.c
$(CC) $(OBJECTS) $(CFLAGS) $(LDFLAGS) -std=c11 -o $(PROJECT)
#make: version
# $(CC) $(CFLAGS) agni.c \
# -o $(PROJECT) -std=c11 -lrt -lm
%.o: %.c
@echo $@
$(CC) $(CFLAGS) $(INCLUDE) -c $< -o $(subst .c,.o,$<)
#autogenerate version from git commit and date when it was compiled
version:
#could have bug if commit message have somethign bad in it
rm -f version.h
echo "#ifndef __VERSION_H">>version.h
echo "#define __VERSION_H">>version.h
echo "#define VERSION_DATE \""`date`"\"">>version.h
echo "#define VERSION_COMMIT \""`git log -1 --oneline`"\"">>version.h
echo "#endif">>version.h
#get all C files in cmd firectory and compile all of them
CMD_SOURCES=$(wildcard cmd/*.c)
CMD_HEADERS=$(wildcard cmd/*.h)
#output header with all includes to commands
CMD_INC_HEADER=config_all_cmds.h
#cmd object files
CMD_OBJECTS=$(CMD_SOURCES:.c=.o)
#add commands objects to all objects
OBJECTS+=$(CMD_OBJECTS)
createcmd: headerscmd $(CMD_OBJECTS)
#echo $(CMD_SOURCES)
#echo $(CMD_OBJECTS)
#generate header files with all commands in directory, to include all cmd header files in single include
headerscmd:
rm -f $(CMD_INC_HEADER)
echo "#ifndef __CONFIG_CMD_HEADERS_H">>$(CMD_INC_HEADER)
echo "#define __CONFIG_CMD_HEADERS_H">>$(CMD_INC_HEADER)
for header in $(CMD_HEADERS); do echo -e "#include \"$$header\"">>$(CMD_INC_HEADER); done
echo "#endif">>$(CMD_INC_HEADER)
EXTLIB_SOURCES=$(wildcard extlibs/*.c)
EXTLIB_OBJECTS=$(EXTLIB_SOURCES:.c=.o)
OBJECTS+=$(EXTLIB_OBJECTS)
createextlib: $(EXTLIB_OBJECTS)
#asd
leak:
valgrind --leak-check=full --track-origins=yes --log-file=log.txt ./$(PROJECT)
clean:
rm -f agni *.o cmd/*.o
|