File Annotation

Not logged in
a4df85aa9e 2011-01-15       stephan: #!/usr/bin/make -f
2b6f9b149f 2011-01-17       stephan: ########################################################################
2b6f9b149f 2011-01-17       stephan: # Main makefile for libcson.
2b6f9b149f 2011-01-17       stephan: #
2b6f9b149f 2011-01-17       stephan: # Important targets for users not hacking this source tree:
2b6f9b149f 2011-01-17       stephan: #
2b6f9b149f 2011-01-17       stephan: #  all: do everything
2b6f9b149f 2011-01-17       stephan: #  amal: build the amalgamation build
2b6f9b149f 2011-01-17       stephan: #  run: run tests (it's not called 'test' because we have a binary with
2b6f9b149f 2011-01-17       stephan: #       that name)
2b6f9b149f 2011-01-17       stephan: ########################################################################
a4df85aa9e 2011-01-15       stephan: include config.make # see that file for certain configuration options.
a4df85aa9e 2011-01-15       stephan: 
a4df85aa9e 2011-01-15       stephan: libcson.LIB.OBJECTS := \
a4df85aa9e 2011-01-15       stephan: 	cson.o \
a4df85aa9e 2011-01-15       stephan: 	parser/JSON_parser.o
a4df85aa9e 2011-01-15       stephan: 
a4df85aa9e 2011-01-15       stephan: libcson.LIB.OBJECTS := $(patsubst %,$(SRC_DIR)/%,$(libcson.LIB.OBJECTS))
a4df85aa9e 2011-01-15       stephan: cson.o: cson_list.h
a4df85aa9e 2011-01-15       stephan: cson_list.h:
a4df85aa9e 2011-01-15       stephan: 
a4df85aa9e 2011-01-15       stephan: libcson.DLL.OBJECTS := $(libcson.LIB.OBJECTS)
a4df85aa9e 2011-01-15       stephan: libcson.DLL: $(libcson.LIB.OBJECTS)
a4df85aa9e 2011-01-15       stephan: $(eval $(call ShakeNMake.CALL.RULES.LIBS,libcson))
a4df85aa9e 2011-01-15       stephan: $(eval $(call ShakeNMake.CALL.RULES.DLLS,libcson))
a4df85aa9e 2011-01-15       stephan: 
2b6f9b149f 2011-01-17       stephan: test.BIN.OBJECTS := test.o
a4df85aa9e 2011-01-15       stephan: $(eval $(call ShakeNMake.EVAL.RULES.BIN,test))
a4df85aa9e 2011-01-15       stephan: test.o: CFLAGS+=-std=c99
2ce0666163 2011-01-16       stephan: test.o: cson.c cson_list.h # test.c imports these files directly
d1fe669e3e 2011-01-15       stephan: 
d1fe669e3e 2011-01-15       stephan: json-parser.BIN.OBJECTS := json-parser.o $(libcson.LIB.OBJECTS)
d1fe669e3e 2011-01-15       stephan: #json-parser.BIN.LDFLAGS += -L. -lcson
d1fe669e3e 2011-01-15       stephan: json-parser.o: CFLAGS+=-std=c99
d1fe669e3e 2011-01-15       stephan: $(eval $(call ShakeNMake.EVAL.RULES.BIN,json-parser))
d1fe669e3e 2011-01-15       stephan: 
a4df85aa9e 2011-01-15       stephan: 
a4df85aa9e 2011-01-15       stephan: $(test.BIN): $(libcson.LIB)
d1fe669e3e 2011-01-15       stephan: $(json-parser.BIN): $(libcson.DLL)
d1fe669e3e 2011-01-15       stephan: all: $(test.BIN) $(json-parser.BIN)
d1fe669e3e 2011-01-15       stephan: 
2b6f9b149f 2011-01-17       stephan: ########################################################################
2b6f9b149f 2011-01-17       stephan: # Process cson_list.h in the same way cson.c does internally. We need
2b6f9b149f 2011-01-17       stephan: # this for building $(AMAL_C).
baf44f31ab 2011-01-17       stephan: LISTS_H := cson_lists.h
baf44f31ab 2011-01-17       stephan: $(LISTS_H): cson_list.h Makefile
baf44f31ab 2011-01-17       stephan: 	@echo "Creating $@..."
f292024894 2011-01-17       stephan: 	@echo "/* Auto-generated from cson_list.h. Edit at your own risk! */" > $@
baf44f31ab 2011-01-17       stephan: 	@gcc -E -DLIST_T=cson_value_list -DVALUE_T=cson_value\ \* cson_list.h -DVALUE_T_IS_PTR=1 < cson_list.h >> $@
baf44f31ab 2011-01-17       stephan: 	@gcc -E -DLIST_T=cson_kvp_list -DVALUE_T=cson_kvp\ \* cson_list.h -DVALUE_T_IS_PTR=1 < cson_list.h >> $@
baf44f31ab 2011-01-17       stephan: 	@sed -e '/^#/d' < $@ > $@.foo && mv $@.foo $@
baf44f31ab 2011-01-17       stephan: test.o: $(LISTS_H) # b/c test.c #includes cson.c directly
baf44f31ab 2011-01-17       stephan: cson.o: $(LISTS_H)
baf44f31ab 2011-01-17       stephan: CLEAN_FILES += $(LISTS_H)
baf44f31ab 2011-01-17       stephan: 
baf44f31ab 2011-01-17       stephan: ########################################################################
baf44f31ab 2011-01-17       stephan: # Amalgamation build: stuff all required public headers into a single
baf44f31ab 2011-01-17       stephan: # megaheader and all required sources (and private headers) into a
baf44f31ab 2011-01-17       stephan: # single C file. This requires a good deal of hackery due to how
baf44f31ab 2011-01-17       stephan: # cson.c uses cson_list.h to create list implementation code.
baf44f31ab 2011-01-17       stephan: AMAL_C := cson_amalgamation.c
baf44f31ab 2011-01-17       stephan: AMAL_H := cson_amalgamation.h
baf44f31ab 2011-01-17       stephan: AMAL_C_SRC := \
baf44f31ab 2011-01-17       stephan: 	parser/JSON_parser.h \
baf44f31ab 2011-01-17       stephan: 	parser/JSON_parser.c \
baf44f31ab 2011-01-17       stephan: 	cson.c
baf44f31ab 2011-01-17       stephan: AMAL_H_SRC := \
baf44f31ab 2011-01-17       stephan: 	include/wh/cson/cson.h
baf44f31ab 2011-01-17       stephan: 
baf44f31ab 2011-01-17       stephan: $(AMAL_H): $(AMAL_H_SRC) Makefile
baf44f31ab 2011-01-17       stephan: 	@echo "Creating $@..."
baf44f31ab 2011-01-17       stephan: 	@for i in $(AMAL_H_SRC); do \
baf44f31ab 2011-01-17       stephan: 		cat $$i; \
baf44f31ab 2011-01-17       stephan: 	done > $@
54251b81b7 2011-01-16       stephan: 
baf44f31ab 2011-01-17       stephan: $(AMAL_C): $(LISTS_H) $(AMAL_C_SRC) $(AMAL_H)
baf44f31ab 2011-01-17       stephan: 	@echo "Creating $@..."
baf44f31ab 2011-01-17       stephan: 	@for i in $(AMAL_C_SRC); do \
baf44f31ab 2011-01-17       stephan: 		cat $$i; \
baf44f31ab 2011-01-17       stephan: 	done > $@
baf44f31ab 2011-01-17       stephan: 	@sed \
baf44f31ab 2011-01-17       stephan: 		-e 's/.*include.*cson\.h[">]/#include "cson_amalgamation.h"/' \
baf44f31ab 2011-01-17       stephan: 		-e '/JSON_parser\.[ch]/d' \
baf44f31ab 2011-01-17       stephan: 		-e '/cson_lists\.h/r cson_lists.h' -e 'x;$$G' -e '/cson_lists\.h/d' \
baf44f31ab 2011-01-17       stephan: 		< $@ > $@.foo
baf44f31ab 2011-01-17       stephan: 	@mv $@.foo $@
baf44f31ab 2011-01-17       stephan: 	@echo "Amalgamation built:"; \
baf44f31ab 2011-01-17       stephan: 		ls -la $(AMAL_C) $(AMAL_H); \
baf44f31ab 2011-01-17       stephan: 		echo "To compile it try:"; \
437bfb9ffa 2011-01-17       stephan: 		echo -e '\tgcc -std=c89 -c -pedantic -Wall -Werror -fPIC $(AMAL_C)'; \
baf44f31ab 2011-01-17       stephan: 		echo "Or, with tcc:"; \
437bfb9ffa 2011-01-17       stephan: 		echo -e '\ttcc -Wall -Werror -c $(AMAL_C)'
b4dde6ec58 2011-01-17       stephan: amal-c: $(AMAL_C)
437bfb9ffa 2011-01-17       stephan: 	@echo "Trying to compile $(AMAL_C)..."
10842feccf 2011-01-26       stephan: 	gcc -std=c89 -c -ansi -pedantic -Wall -Werror -fPIC $(AMAL_C)
437bfb9ffa 2011-01-17       stephan: 	@tcc=$$(which tcc); [ x = "x$$tcc" ] && exit 0; \
437bfb9ffa 2011-01-17       stephan: 	    set -x; $$tcc -Wall -Werror -c $(AMAL_C)
baf44f31ab 2011-01-17       stephan: amal: $(AMAL_C)
baf44f31ab 2011-01-17       stephan: CLEAN_FILES += $(AMAL_C) $(AMAL_H)
54251b81b7 2011-01-16       stephan: 
54251b81b7 2011-01-16       stephan: ########################################################################
54251b81b7 2011-01-16       stephan: # create emacs tags...
54251b81b7 2011-01-16       stephan: bin_etags := $(shell which etags)
54251b81b7 2011-01-16       stephan: ifneq (,$(bin_etags))
54251b81b7 2011-01-16       stephan:     tagfile := TAGS
54251b81b7 2011-01-16       stephan:     FORCE:
54251b81b7 2011-01-16       stephan:     .PHONY: FORCE tags
54251b81b7 2011-01-16       stephan:     $(tagfile): FORCE
54251b81b7 2011-01-16       stephan: 	find . -name '*.[ch]' -print | $(bin_etags) -f $@ -
54251b81b7 2011-01-16       stephan:     tags: $(tagfile)
54251b81b7 2011-01-16       stephan:     CLEAN_FILES += $(tagfile)
b4dde6ec58 2011-01-17       stephan:     #cson.o: $(tagfile)
54251b81b7 2011-01-16       stephan: endif
54251b81b7 2011-01-16       stephan: # ^^^ bin_etags
2b6f9b149f 2011-01-17       stephan: 
2b6f9b149f 2011-01-17       stephan: ########################################################################
2b6f9b149f 2011-01-17       stephan: # run sanity tests...
2b6f9b149f 2011-01-17       stephan: run: $(json-parser.BIN)
2b6f9b149f 2011-01-17       stephan: 	@echo "Running MUST-PASS tests..."
437bfb9ffa 2011-01-17       stephan: 	@echo -e "\t./$(test.BIN)"; \
437bfb9ffa 2011-01-17       stephan: 		./$(test.BIN) 1>/dev/null 2>&1 \
437bfb9ffa 2011-01-17       stephan: 		|| { x=$$?; echo "Basic test app failed with code [$$x]."; exit $$x; }
437bfb9ffa 2011-01-17       stephan: 	@for i in json/pass-*.json checker/test/pass*.json; do \
2b6f9b149f 2011-01-17       stephan: 		echo -e "\t$$i"; \
2b6f9b149f 2011-01-17       stephan: 		./$(json-parser.BIN) -f $$i 1>/dev/null || exit; \
2b6f9b149f 2011-01-17       stephan: 	done
2b6f9b149f 2011-01-17       stephan: 	@echo "Running MUST-FAIL tests..."
437bfb9ffa 2011-01-17       stephan: 	@for i in json/fail-*.json checker/test/fail*.json; do \
2b6f9b149f 2011-01-17       stephan: 		echo -e "\t$$i"; \
2b6f9b149f 2011-01-17       stephan: 		./$(json-parser.BIN) -f $$i 1>/dev/null 2>&1 && exit; \
2b6f9b149f 2011-01-17       stephan: 	done; \
2b6f9b149f 2011-01-17       stephan: 	true
2b6f9b149f 2011-01-17       stephan: 
2b6f9b149f 2011-01-17       stephan: $(filter-out cson_amalgamation.o,$(wildcard *.o)): Makefile config.make common.make