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