2 # c-ares Makefile for djgpp/gcc/Watt-32.
3 # By Gisle Vanem <gvanem@yahoo.no> 2004 - 2020.
5 include src/lib/Makefile.inc
7 CSOURCES := $(addprefix src/lib/, $(CSOURCES))
8 CSOURCES := $(filter-out src/lib/windows_port.c, $(CSOURCES))
10 VPATH = src/lib src/tools
13 # Root directory for Waterloo tcp/ip.
14 # WATT_ROOT should be set during Watt-32 install.
16 WATT32_ROOT = $(realpath $(WATT_ROOT))
17 WATT32_LIB = $(WATT32_ROOT)/lib/libwatt.a
21 CFLAGS = -g -O2 -I./include -I./src/lib \
22 -I$(WATT32_ROOT)/inc -Wall \
23 -DWATT32 -DHAVE_CONFIG_H \
28 ifeq ($(OS),Windows_NT)
30 # Windows hosted djgpp cross compiler. Get it from:
31 # https://github.com/andrewwutw/build-djgpp/releases
33 DJ_PREFIX ?= c:/some-path/djgpp/bin/i586-pc-msdosdjgpp-
38 # The normal djgpp 'gcc' for MSDOS.
43 OBJECTS = $(addprefix $(OBJ_DIR)/, \
44 $(notdir $(CSOURCES:.c=.o)))
46 GENERATED = src/lib/ares_config.h \
49 TARGETS = libcares.a acountry.exe adig.exe ahost.exe
51 .SECONDARY: $(OBJ_DIR)/ares_getopt.o
53 all: $(OBJ_DIR) $(GENERATED) $(TARGETS)
54 @echo Welcome to c-ares.
56 libcares.a: $(OBJECTS)
59 src/lib/ares_config.h: src/lib/config-dos.h
62 include/ares_build.h: include/ares_build.h.dist
65 %.exe: src/tools/%.c $(OBJ_DIR)/ares_getopt.o libcares.a
66 $(call compile_and_link, $@, $^ $(WATT32_LIB))
68 # Clean generated files and objects.
71 - rm -f depend.dj $(GENERATED) $(OBJ_DIR)/*.o
76 realclean vclean: clean
77 - rm -f $(TARGETS) $(TARGETS:.exe=.map)
83 $(CC) $(CFLAGS) -o $@ -c $<
86 define compile_and_link
87 $(CC) -o $(1) $(CFLAGS) $(LDFLAGS) -Wl,--print-map,--sort-common $(2) > $(1:.exe=.map)
91 DEP_REPLACE = sed -e 's@\(.*\)\.o: @\n$$(OBJ_DIR)\/\1.o: @' \
92 -e 's@$(WATT32_ROOT)@$$(WATT32_ROOT)@g'
95 # One may have to do 'make -f Makefile.dj clean' first in case
96 # a foreign 'curl_config.h' is making trouble.
98 depend: $(GENERATED) Makefile.dj
99 $(CC) -MM $(CFLAGS) $(CSOURCES) | $(DEP_REPLACE) > depend.dj