#
# libURI Makefile for MingWin32 gcc
#
# By G. Vanem <giva@bgnett.no> 2003

.SUFFIXES: .pl .txt

CC       = gcc
CFLAGS   = -O2 -Wall -I. -D_WIN32 -DWIN32_LEAN_AND_MEAN -DSTDC_HEADERS \
           -DHAVE_MALLOC_H -DHAVE_STDLIB_H -DHAVE_STDARG_H -DHAVE_UNISTD_H \
           -DHAVE_CTYPE_H -DHAVE_SYS_TIME_H -DHAVE_STRCHR -DHAVE_MEMCPY

OBJ_DIR = MingW_obj

-include uri_schemes.mk

SOURCE  = md5c.c md5str.c mpath.c salloc.c split.c strlower.c timer.c uri.c \
          uri_parse.c uri_schemes.c uri_util.c uri_scheme_generic.c \
          $(URI_SCHEMES)

OBJECTS = $(addprefix $(OBJ_DIR)/, $(SOURCE:.c=.o))

TARGETS = liburi.a t_uri.exe

GENERATED = uri_schemes_hash.c uri_schemes_desc.c uri_schemes_desc.h \
            uri_schemes.mk uri_escapes_file.h uri_escapes_ftp.h \
            uri_escapes_generic.h gen_escapes.pl gen_schemes.exe

all: $(GENERATED) $(OBJ_DIR) $(TARGETS)

$(OBJ_DIR):
	mkdir $@

liburi.a: $(OBJECTS)
	ar rs $@ $?
	@echo

t_uri.exe: t_uri.c $(OBJ_DIR)/getopt.o $(OBJ_DIR)/getopt1.o liburi.a
	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ -Wl,--print-map > t_uri.map
	@echo

gen_schemes.exe: gen_schemes.c uri_schemes_hash.c
	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $<
	@echo

gen_escapes: uri_escapes.txt
	cp gen_escapes.in gen_escapes.pl
	perl ./gen_escapes.pl

uri_escapes_file.h uri_escapes_ftp.h uri_escapes_generic.h: gen_escapes

SCHEMAS = $(shell ls uri_scheme_*.c | sed -e 's/uri_scheme_\(.*\).c/\1/')

uri_schemes_desc.c uri_schemes_desc.h uri_schemes.mk: gen_schemes.exe
	./gen_schemes.exe $(SCHEMAS)
	@echo

uri_schemes_hash.c: SCHEMES
	gperf -k2-4 -c -G -W uri_scheme_list -H uri_scheme_hash -N uri_scheme_exists < $^ > $@
	@echo

clean:
	rm -f $(OBJECTS) $(GENERATED) t_uri.map

vclean realclean: clean
	- rm -f $(OBJ_DIR)/*.o .depend $(TARGETS)
	- rmdir $(OBJ_DIR)

$(OBJ_DIR)/%.o: %.c
	$(CC) $(CFLAGS) -o $@ -c $<
	@echo

depend: $(GENERATED)
	$(CC) -MM $(CFLAGS) $(SOURCE) | \
	sed -e 's/^\([a-zA-Z0-9_-]*\.o:\)/'$(OBJ_DIR)'\/\1/' > .depend

-include .depend

