view Makefile.gen @ 669:32c13602c091

Some functions used were factored into new th_datastruct module in th-libs, so include the necessary header file as needed, and build the module object.
author Matti Hamalainen <ccr@tnsp.org>
date Wed, 17 Feb 2016 14:28:17 +0200
parents 23d16d9cdf96
children dd3083a3383d
line wrap: on
line source

###
### Main makefile
###
CFLAGS += -g -W -Wall -Wextra -DTH_NO_DEFAULTS -I.
CFLAGS += -O2
CFLAGS += -std=c11 -pedantic -D_XOPEN_SOURCE=500
THLIBS=th-libs/

MKDIR ?= mkdir
MKDIR_P ?= $(MKDIR) -p

#
# Version strings
#
NN_VERSION := $(shell cat VERSION)
comma:= ,
NN_VERSION_COM := $(subst .,$(comma),$(NN_VERSION))
CFLAGS += -DNN_VERSION=\"$(NN_VERSION)\"

#
# Objects
#
THLIBS_A=$(OBJPATH)thlibs.a
THLIBS_OBJ=th_util.o th_string.o th_args.o th_ioctx.o th_file.o th_config.o th_network.o th_datastruct.o

NNCHAT_OBJ=main.o util.o ui.o
NNCHAT_BIN=$(BINPATH)nnchat$(EXEEXT)

TARGETS += $(NNCHAT_BIN)
NOBUILD_TARGETS += $(OBJPATH) $(BINPATH)
NOINST_TARGETS += $(THLIBS_A)


#
# Target rules
#
all: $(NOBUILD_TARGETS) $(NOINST_TARGETS) $(TARGETS)

$(OBJPATH):
	$(MKDIR_P) $@

$(BINPATH):
	$(MKDIR_P) $@

$(OBJPATH)%.o: $(THLIBS)%.c $(THLIBS)%.h
	$(CC) $(CFLAGS) -c -o $@ $<

$(OBJPATH)%.o: %.c %.h
	$(CC) $(CFLAGS) -c -o $@ $< -I$(THLIBS)

$(OBJPATH)%.o: %.c
	$(CC) $(CFLAGS) -c -o $@ $< -I$(THLIBS)

$(THLIBS_A): $(addprefix $(OBJPATH),$(THLIBS_OBJ))
	$(AR) cru $@ $(addprefix $(OBJPATH),$(THLIBS_OBJ))
	$(RANLIB) $@

main.c: VERSION

$(NNCHAT_BIN): $(addprefix $(OBJPATH),$(NNCHAT_OBJ)) $(THLIBS_A) $(EXTRAOBJS)
	$(CC) $(CFLAGS) -o $@ $+ $(LDFLAGS)

#
# Documentation
#
$(DOC):
	@wget -qO- http://www.tnsp.org/~ccr/nnchat/ | tr '\n' '§' | \
	sed "s/<.-- BEGIN -->.*<.-- END -->//g;s/<script.*<\/script>//g" | tr '§' '\n' > "$@.tmp"
	@links -dump "$@.tmp" > $@


#
# Special targets
#
clean:
	$(RM) $(TARGETS) $(NOINST_TARGETS) $(OBJPATH)*.o

srcclean: clean
	$(RM) *~