Graph: Remove print_dijkstra_data and print_floyd_data
[Generic-Data-Structures.git] / Makefile
blob5b6e115c5d4f316c938b478b3d38d205dea4c71e
1 .PHONY: default clean libs test install uninstall doxygen
3 SRC = src
4 BIN = bin
6 CFILES = $(wildcard $(SRC)/*.c) $(wildcard $(SRC)/*/*.c)
7 OFILES = $(patsubst %.c,%.o,$(CFILES))
8 TESTFILES = $(wildcard test/*)
10 CC = cc
11 CCFLAGS += -Wall -Wextra -pedantic -std=c99 -Wstrict-prototypes -g -fPIC -O3
13 AR = ar
14 ARFLAGS = rcs
16 INSTALL_PATH ?= /usr/local
18 default: libs
20 libs: $(OFILES) | $(BIN)/
21 @ echo "=> $(BIN)/libGDS.so"
22 @ $(CC) $(CCFLAGS) -shared -o ./$(BIN)/libGDS.so $(OFILES)
23 @ echo "=> $(BIN)/libGDS-static.a"
24 @ $(AR) $(ARFLAGS) ./$(BIN)/libGDS-static.a $(OFILES)
26 install: $(BIN)/libGDS.so $(BIN)/libGDS-static.a
27 @ echo "INSTALL $(INSTALL_PATH)/lib/libGDS.so"
28 @ echo "INSTALL $(INSTALL_PATH)/lib/libGDS-static.a"
29 @ install -d $(INSTALL_PATH)/lib
30 @ install -m 644 $(BIN)/libGDS* $(INSTALL_PATH)/lib
31 @ echo "INSTALL $(INSTALL_PATH)/include/GDS/"
32 @ install -d $(INSTALL_PATH)/include/GDS
33 @ install -d $(INSTALL_PATH)/include/GDS/util
34 @ install -m 644 $(SRC)/*.h $(INSTALL_PATH)/include/GDS
35 @ install -m 644 $(SRC)/util/*.h $(INSTALL_PATH)/include/GDS/util
37 $(BIN)/libGDS.so $(BIN)/libGDS-static.a:
38 @ $(MAKE) --no-print-directory libs
40 uninstall:
41 @ echo "RM $(INSTALL_PATH)/lib/libGDS.so"
42 @ echo "RM $(INSTALL_PATH)/lib/libGDS-static.a"
43 @ rm -f $(INSTALL_PATH)/lib/libGDS*
44 @ echo "RM $(INSTALL_PATH)/include/GDS/"
45 @ rm -rf $(INSTALL_PATH)/include/GDS
47 NO-RUN?= false # If true, only builds the test, without running them
48 test: $(TESTFILES) libs | $(BIN)/
49 @ $(foreach T,$(filter %.c,$(TESTFILES)), \
50 $(CC) $(CCFLAGS) -o $(BIN)/$(patsubst %.c,%.out, $(notdir $(T))) $(T) -L./$(BIN)/ -lGDS-static; \
51 $(NO-RUN) || $(BIN)/$(patsubst %.c,%.out, $(notdir $(T))) || exit 1;)
53 doxygen: ./doxygen/
54 @ echo -e "\
55 /** @mainpage \n \
56 @verbinclude README.adoc */" > ./doxygen/doc.doxy
57 @ echo "/**" >> doxygen/doc.doxy
58 @ find ./src -name '*.h' -exec bash -c ' \
59 name={} ; base=$$(basename $$name) ; \
60 echo -n " * @file $$name " >> doxygen/doc.doxy ; \
61 cat $$name | grep $$base | sed "s/.*$$base -//"' >> doxygen/doc.doxy \;
62 @ echo "*/" >> doxygen/doc.doxy
63 doxygen .doxyfile
64 @ rm -f doxygen/doc.doxy
66 .c.o:
67 @ echo "CC $@"
68 @ $(CC) $(CCFLAGS) -o $@ -c $<
70 %/:
71 @ mkdir $@
73 clean:
74 @ rm -f $(OFILES)
75 @ rm -rf doxygen