1 .PHONY
: default
clean libs
test install uninstall doxygen
6 CFILES
= $(wildcard $(SRC
)/*.c
) $(wildcard $(SRC
)/*/*.c
)
7 OFILES
= $(patsubst %.c
,%.o
,$(CFILES
))
8 TESTFILES
= $(wildcard test/*)
11 CCFLAGS
+= -Wall
-Wextra
-pedantic
-std
=c99
-Wstrict-prototypes
-g
-fPIC
-O3
16 INSTALL_PATH ?
= /usr
/local
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
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;)
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
64 @
rm -f doxygen
/doc.doxy
68 @
$(CC
) $(CCFLAGS
) -o
$@
-c
$<