Upgrade to 1.18.1
[platform/upstream/c-ares.git] / Makefile.dj
1 #
2 # c-ares Makefile for djgpp/gcc/Watt-32.
3 #   By Gisle Vanem <gvanem@yahoo.no> 2004 - 2020.
4 #
5 include src/lib/Makefile.inc
6
7 CSOURCES := $(addprefix src/lib/, $(CSOURCES))
8 CSOURCES := $(filter-out src/lib/windows_port.c, $(CSOURCES))
9
10 VPATH = src/lib src/tools
11
12 #
13 # Root directory for Waterloo tcp/ip.
14 # WATT_ROOT should be set during Watt-32 install.
15 #
16 WATT32_ROOT = $(realpath $(WATT_ROOT))
17 WATT32_LIB  = $(WATT32_ROOT)/lib/libwatt.a
18
19 OBJ_DIR = djgpp
20
21 CFLAGS = -g -O2 -I./include -I./src/lib \
22          -I$(WATT32_ROOT)/inc -Wall \
23          -DWATT32 -DHAVE_CONFIG_H   \
24          -Dselect=select_s
25
26 LDFLAGS = -s
27
28 ifeq ($(OS),Windows_NT)
29   #
30   # Windows hosted djgpp cross compiler. Get it from:
31   #   https://github.com/andrewwutw/build-djgpp/releases
32   #
33   DJ_PREFIX ?= c:/some-path/djgpp/bin/i586-pc-msdosdjgpp-
34   CC = $(DJ_PREFIX)gcc
35
36 else
37   #
38   # The normal djgpp 'gcc' for MSDOS.
39   #
40   CC = gcc
41 endif
42
43 OBJECTS = $(addprefix $(OBJ_DIR)/, \
44             $(notdir $(CSOURCES:.c=.o)))
45
46 GENERATED = src/lib/ares_config.h \
47             include/ares_build.h
48
49 TARGETS = libcares.a acountry.exe adig.exe ahost.exe
50
51 .SECONDARY: $(OBJ_DIR)/ares_getopt.o
52
53 all: $(OBJ_DIR) $(GENERATED) $(TARGETS)
54         @echo Welcome to c-ares.
55
56 libcares.a: $(OBJECTS)
57         ar rs $@ $(OBJECTS)
58
59 src/lib/ares_config.h: src/lib/config-dos.h
60         cp --update $< $@
61
62 include/ares_build.h: include/ares_build.h.dist
63         cp --update $< $@
64
65 %.exe: src/tools/%.c $(OBJ_DIR)/ares_getopt.o libcares.a
66         $(call compile_and_link, $@, $^ $(WATT32_LIB))
67
68 # Clean generated files and objects.
69 #
70 clean:
71         - rm -f depend.dj $(GENERATED) $(OBJ_DIR)/*.o
72         - rmdir $(OBJ_DIR)
73
74 # Clean everything
75 #
76 realclean vclean: clean
77         - rm -f $(TARGETS) $(TARGETS:.exe=.map)
78
79 $(OBJ_DIR):
80         - mkdir $@
81
82 $(OBJ_DIR)/%.o: %.c
83         $(CC) $(CFLAGS) -o $@ -c $<
84         @echo
85
86 define compile_and_link
87   $(CC) -o $(1) $(CFLAGS) $(LDFLAGS) -Wl,--print-map,--sort-common $(2) > $(1:.exe=.map)
88   @echo
89 endef
90
91 DEP_REPLACE = sed -e 's@\(.*\)\.o: @\n$$(OBJ_DIR)\/\1.o: @' \
92                   -e 's@$(WATT32_ROOT)@$$(WATT32_ROOT)@g'
93
94 #
95 # One may have to do 'make -f Makefile.dj clean' first in case
96 # a foreign 'curl_config.h' is making trouble.
97 #
98 depend: $(GENERATED) Makefile.dj
99         $(CC) -MM $(CFLAGS) $(CSOURCES) | $(DEP_REPLACE) > depend.dj
100
101 -include depend.dj
102