1 .PHONY
: default
clean libs
test examples
install uninstall doxygen
6 CFILES
= $(wildcard $(SRC
)/*.c
) $(wildcard $(SRC
)/*/*.c
)
7 OFILES
= $(patsubst %.c
,%.o
,$(CFILES
))
8 TESTFILES
= $(wildcard test/*)
9 EXAMPLES
= $(wildcard example
/*.c
)
12 CCFLAGS
+= -Wall
-Wextra
-pedantic
-std
=c99
-Wstrict-prototypes
-g
-fPIC
-O3
17 INSTALL_PATH ?
= /usr
/local
21 libs
: $(OFILES
) |
$(BIN
)/
22 @ echo
"=> $(BIN)/libGDS.so"
23 @
$(CC
) $(CCFLAGS
) -shared
-o .
/$(BIN
)/libGDS.so
$(OFILES
)
24 @ echo
"=> $(BIN)/libGDS-static.a"
25 @
$(AR
) $(ARFLAGS
) .
/$(BIN
)/libGDS-static.a
$(OFILES
)
27 install: $(BIN
)/libGDS.so
$(BIN
)/libGDS-static.a
28 @ echo
"INSTALL $(INSTALL_PATH)/lib/libGDS.so"
29 @ echo
"INSTALL $(INSTALL_PATH)/lib/libGDS-static.a"
30 @
install -d
$(INSTALL_PATH
)/lib
31 @
install -m
644 $(BIN
)/libGDS
* $(INSTALL_PATH
)/lib
32 @ echo
"INSTALL $(INSTALL_PATH)/include/GDS/"
33 @
install -d
$(INSTALL_PATH
)/include/GDS
34 @
install -d
$(INSTALL_PATH
)/include/GDS
/util
35 @
install -m
644 $(SRC
)/*.h
$(INSTALL_PATH
)/include/GDS
36 @
install -m
644 $(SRC
)/util
/*.h
$(INSTALL_PATH
)/include/GDS
/util
38 $(BIN
)/libGDS.so
$(BIN
)/libGDS-static.a
:
39 @
$(MAKE
) --no-print-directory libs
42 @ echo
"RM $(INSTALL_PATH)/lib/libGDS.so"
43 @ echo
"RM $(INSTALL_PATH)/lib/libGDS-static.a"
44 @
rm -f
$(INSTALL_PATH
)/lib
/libGDS
*
45 @ echo
"RM $(INSTALL_PATH)/include/GDS/"
46 @
rm -rf
$(INSTALL_PATH
)/include/GDS
48 NO-RUN?
= false
# If true, only builds the test, without running them
49 test: $(TESTFILES
) libs |
$(BIN
)/
50 @
$(foreach T
,$(filter %.c
,$(TESTFILES
)), \
51 $(CC
) $(CCFLAGS
) -o
$(BIN
)/$(patsubst %.c
,%.out
, $(notdir $(T
))) $(T
) -L.
/$(BIN
)/ -lGDS-static
; \
52 $(NO-RUN
) ||
$(BIN
)/$(patsubst %.c
,%.out
, $(notdir $(T
))) || exit
1;)
54 examples
: $(EXAMPLES
) $(OFILES
) |
$(BIN
)/
55 @
$(foreach F
,$(EXAMPLES
), \
57 $(CC
) $(CCFLAGS
) -o
$(patsubst example
/%.c
,bin
/%,$(F
)) $(F
) $(OFILES
) ;)
62 @verbinclude README.adoc */" > .
/doxygen
/doc.doxy
63 @ echo
"/**" >> doxygen
/doc.doxy
64 @ find .
/src
-name
'*.h' -exec bash
-c
' \
65 name={} ; base=$$(basename $$name) ; \
66 echo -n " * @file $$name " >> doxygen/doc.doxy ; \
67 cat $$name | grep $$base | sed "s/.*$$base -//"' >> doxygen
/doc.doxy \
;
68 @ echo
"*/" >> doxygen
/doc.doxy
70 @
rm -f doxygen
/doc.doxy
74 @
$(CC
) $(CCFLAGS
) -o
$@
-c
$<