Change the upstream source URL
[platform/upstream/c-ares.git] / Makefile.dj
index b22221b..a88aae2 100644 (file)
 #
 # c-ares Makefile for djgpp/gcc/Watt-32.
-#   By Gisle Vanem <giva@bgnett.no> 2004.
+#   By Gisle Vanem <gvanem@yahoo.no> 2004 - 2020.
 #
-# $Id$
+include src/lib/Makefile.inc
 
-include ../packages/DOS/common.dj
+CSOURCES := $(addprefix src/lib/, $(CSOURCES))
+CSOURCES := $(filter-out src/lib/windows_port.c, $(CSOURCES))
 
-include Makefile.inc
+VPATH = src/lib src/tools
 
-CFLAGS += -DWATT32 -DHAVE_AF_INET6 -DHAVE_PF_INET6 -DHAVE_FIONBIO \
-          -DHAVE_STRUCT_IN6_ADDR -DHAVE_SOCKADDR_IN6_SIN6_SCOPE_ID \
-          -DHAVE_SYS_TIME_H -DHAVE_STRUCT_SOCKADDR_IN6 -DHAVE_STRUCT_ADDRINFO \
-          -DHAVE_SIGNAL_H -DHAVE_SIG_ATOMIC_T -DRETSIGTYPE='void' \
-          -DHAVE_ARPA_NAMESER_H -DNS_INADDRSZ=4 -DHAVE_RECV -DHAVE_SEND \
-          -DSEND_TYPE_ARG1='int'   -DSEND_QUAL_ARG2='const' \
-          -DSEND_TYPE_ARG2='void*' -DSEND_TYPE_ARG3='int' \
-          -DSEND_TYPE_ARG4='int'   -DSEND_TYPE_RETV='int' \
-          -DRECV_TYPE_ARG1='int'   -DRECV_TYPE_ARG2='void*' \
-          -DRECV_TYPE_ARG3='int'   -DRECV_TYPE_ARG4='int' \
-          -DRECV_TYPE_RETV='int'   -UHAVE_CONFIG_H
+#
+# Root directory for Waterloo tcp/ip.
+# WATT_ROOT should be set during Watt-32 install.
+#
+WATT32_ROOT = $(realpath $(WATT_ROOT))
+WATT32_LIB  = $(WATT32_ROOT)/lib/libwatt.a
 
-LDFLAGS = -s
+OBJ_DIR = djgpp
 
-ifeq ($(USE_DEBUG),1)
-  EX_LIBS = ../lib/libcurl.a
-endif
+CFLAGS = -g -O2 -I./include -I./src/lib \
+         -I$(WATT32_ROOT)/inc -Wall \
+         -DWATT32 -DHAVE_CONFIG_H   \
+         -Dselect=select_s
 
-ifeq ($(USE_SSL),1)
-  EX_LIBS += $(OPENSSL_ROOT)/lib/libssl.a $(OPENSSL_ROOT)/lib/libcrypt.a
-endif
+LDFLAGS = -s
 
-ifeq ($(USE_ZLIB),1)
-  EX_LIBS += $(ZLIB_ROOT)/libz.a
-  CFLAGS  += -DUSE_MANUAL
+ifeq ($(OS),Windows_NT)
+  #
+  # Windows hosted djgpp cross compiler. Get it from:
+  #   https://github.com/andrewwutw/build-djgpp/releases
+  #
+  DJ_PREFIX ?= c:/some-path/djgpp/bin/i586-pc-msdosdjgpp-
+  CC = $(DJ_PREFIX)gcc
+
+else
+  #
+  # The normal djgpp 'gcc' for MSDOS.
+  #
+  CC = gcc
 endif
 
-ifeq ($(USE_IDNA),1)
-  EX_LIBS += $(LIBIDN_ROOT)/lib/dj_obj/libidn.a -liconv
-endif
+OBJECTS = $(addprefix $(OBJ_DIR)/, \
+            $(notdir $(CSOURCES:.c=.o)))
+
+GENERATED = src/lib/ares_config.h \
+            include/ares_build.h
 
-EX_LIBS += $(WATT32_ROOT)/lib/libwatt.a
+TARGETS = libcares.a acountry.exe adig.exe ahost.exe
 
-OBJECTS = $(addprefix $(OBJ_DIR)/, $(CSOURCES:.c=.o))
+.SECONDARY: $(OBJ_DIR)/ares_getopt.o
 
-all: $(OBJ_DIR) libcares.a ahost.exe adig.exe
+all: $(OBJ_DIR) $(GENERATED) $(TARGETS)
        @echo Welcome to c-ares.
 
 libcares.a: $(OBJECTS)
-       ar rs $@ $?
+       ar rs $@ $(OBJECTS)
 
-ahost.exe: ahost.c libcares.a
-       $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^ $(EX_LIBS)
+src/lib/ares_config.h: src/lib/config-dos.h
+       cp --update $< $@
 
-adig.exe: adig.c libcares.a
-       $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^ $(EX_LIBS)
+include/ares_build.h: include/ares_build.h.dist
+       cp --update $< $@
 
-clean:
-       rm -f $(OBJECTS) libcares.a
+%.exe: src/tools/%.c $(OBJ_DIR)/ares_getopt.o libcares.a
+       $(call compile_and_link, $@, $^ $(WATT32_LIB))
 
-vclean realclean: clean
-       rm -f ahost.exe adig.exe
+# Clean generated files and objects.
+#
+clean:
+       - rm -f depend.dj $(GENERATED) $(OBJ_DIR)/*.o
        - rmdir $(OBJ_DIR)
 
-# DO NOT DELETE THIS LINE
-$(OBJ_DIR)/ares_fds.o: ares_fds.c setup.h setup_once.h ares.h ares_private.h \
-  ares_ipv6.h ../lib/memdebug.h ../lib/setup.h \
-  ../include/curl/stdcheaders.h ../include/curl/curl.h \
-  ../include/curl/curlver.h ../include/curl/easy.h \
-  ../include/curl/multi.h ../include/curl/curl.h
-$(OBJ_DIR)/ares_getsock.o: ares_getsock.c setup.h setup_once.h ares.h ares_private.h \
-  ares_ipv6.h ../lib/memdebug.h ../lib/setup.h \
-  ../include/curl/stdcheaders.h ../include/curl/curl.h \
-  ../include/curl/curlver.h ../include/curl/easy.h \
-  ../include/curl/multi.h ../include/curl/curl.h
-$(OBJ_DIR)/ares_process.o: ares_process.c setup.h setup_once.h ares.h ares_dns.h \
-  ares_private.h ares_ipv6.h ../lib/memdebug.h ../lib/setup.h \
-  ../include/curl/stdcheaders.h ../include/curl/curl.h \
-  ../include/curl/curlver.h ../include/curl/easy.h \
-  ../include/curl/multi.h ../include/curl/curl.h
-$(OBJ_DIR)/ares_free_hostent.o: ares_free_hostent.c setup.h setup_once.h ares.h \
-  ares_private.h ares_ipv6.h ../lib/memdebug.h ../lib/setup.h \
-  ../include/curl/stdcheaders.h ../include/curl/curl.h \
-  ../include/curl/curlver.h ../include/curl/easy.h \
-  ../include/curl/multi.h ../include/curl/curl.h
-$(OBJ_DIR)/ares_query.o: ares_query.c setup.h setup_once.h ares.h ares_dns.h \
-  ares_private.h ares_ipv6.h ../lib/memdebug.h ../lib/setup.h \
-  ../include/curl/stdcheaders.h ../include/curl/curl.h \
-  ../include/curl/curlver.h ../include/curl/easy.h \
-  ../include/curl/multi.h ../include/curl/curl.h
-$(OBJ_DIR)/ares__close_sockets.o: ares__close_sockets.c setup.h setup_once.h ares.h \
-  ares_private.h ares_ipv6.h ../lib/memdebug.h ../lib/setup.h \
-  ../include/curl/stdcheaders.h ../include/curl/curl.h \
-  ../include/curl/curlver.h ../include/curl/easy.h \
-  ../include/curl/multi.h ../include/curl/curl.h
-$(OBJ_DIR)/ares_free_string.o: ares_free_string.c setup.h setup_once.h ares.h \
-  ares_private.h ares_ipv6.h ../lib/memdebug.h ../lib/setup.h \
-  ../include/curl/stdcheaders.h ../include/curl/curl.h \
-  ../include/curl/curlver.h ../include/curl/easy.h \
-  ../include/curl/multi.h ../include/curl/curl.h
-$(OBJ_DIR)/ares_search.o: ares_search.c setup.h setup_once.h ares.h ares_private.h \
-  ares_ipv6.h ../lib/memdebug.h ../lib/setup.h \
-  ../include/curl/stdcheaders.h ../include/curl/curl.h \
-  ../include/curl/curlver.h ../include/curl/easy.h \
-  ../include/curl/multi.h ../include/curl/curl.h
-$(OBJ_DIR)/ares__get_hostent.o: ares__get_hostent.c setup.h setup_once.h ares.h \
-  ares_private.h ares_ipv6.h ../lib/memdebug.h ../lib/setup.h \
-  ../include/curl/stdcheaders.h ../include/curl/curl.h \
-  ../include/curl/curlver.h ../include/curl/easy.h \
-  ../include/curl/multi.h ../include/curl/curl.h inet_net_pton.h
-$(OBJ_DIR)/ares_gethostbyaddr.o: ares_gethostbyaddr.c setup.h setup_once.h ares.h \
-  ares_private.h ares_ipv6.h ../lib/memdebug.h ../lib/setup.h \
-  ../include/curl/stdcheaders.h ../include/curl/curl.h \
-  ../include/curl/curlver.h ../include/curl/easy.h \
-  ../include/curl/multi.h ../include/curl/curl.h inet_net_pton.h
-$(OBJ_DIR)/ares_send.o: ares_send.c setup.h setup_once.h ares.h ares_dns.h \
-  ares_private.h ares_ipv6.h ../lib/memdebug.h ../lib/setup.h \
-  ../include/curl/stdcheaders.h ../include/curl/curl.h \
-  ../include/curl/curlver.h ../include/curl/easy.h \
-  ../include/curl/multi.h ../include/curl/curl.h
-$(OBJ_DIR)/ares__read_line.o: ares__read_line.c setup.h setup_once.h ares.h \
-  ares_private.h ares_ipv6.h ../lib/memdebug.h ../lib/setup.h \
-  ../include/curl/stdcheaders.h ../include/curl/curl.h \
-  ../include/curl/curlver.h ../include/curl/easy.h \
-  ../include/curl/multi.h ../include/curl/curl.h
-$(OBJ_DIR)/ares_gethostbyname.o: ares_gethostbyname.c setup.h setup_once.h ares.h \
-  ares_private.h ares_ipv6.h ../lib/memdebug.h ../lib/setup.h \
-  ../include/curl/stdcheaders.h ../include/curl/curl.h \
-  ../include/curl/curlver.h ../include/curl/easy.h \
-  ../include/curl/multi.h ../include/curl/curl.h inet_net_pton.h \
-  bitncmp.h
-$(OBJ_DIR)/ares_strerror.o: ares_strerror.c setup.h setup_once.h ares.h
-$(OBJ_DIR)/ares_cancel.o: ares_cancel.c setup.h setup_once.h ares.h ares_private.h \
-  ares_ipv6.h ../lib/memdebug.h ../lib/setup.h \
-  ../include/curl/stdcheaders.h ../include/curl/curl.h \
-  ../include/curl/curlver.h ../include/curl/easy.h \
-  ../include/curl/multi.h ../include/curl/curl.h
-$(OBJ_DIR)/ares_init.o: ares_init.c setup.h setup_once.h ares.h ares_private.h \
-  ares_ipv6.h ../lib/memdebug.h ../lib/setup.h \
-  ../include/curl/stdcheaders.h ../include/curl/curl.h \
-  ../include/curl/curlver.h ../include/curl/easy.h \
-  ../include/curl/multi.h ../include/curl/curl.h inet_net_pton.h
-$(OBJ_DIR)/ares_timeout.o: ares_timeout.c setup.h setup_once.h ares.h ares_private.h \
-  ares_ipv6.h ../lib/memdebug.h ../lib/setup.h \
-  ../include/curl/stdcheaders.h ../include/curl/curl.h \
-  ../include/curl/curlver.h ../include/curl/easy.h \
-  ../include/curl/multi.h ../include/curl/curl.h
-$(OBJ_DIR)/ares_destroy.o: ares_destroy.c setup.h setup_once.h ares.h ares_private.h \
-  ares_ipv6.h ../lib/memdebug.h ../lib/setup.h \
-  ../include/curl/stdcheaders.h ../include/curl/curl.h \
-  ../include/curl/curlver.h ../include/curl/easy.h \
-  ../include/curl/multi.h ../include/curl/curl.h
-$(OBJ_DIR)/ares_mkquery.o: ares_mkquery.c setup.h setup_once.h ares.h ares_dns.h \
-  ares_private.h ares_ipv6.h ../lib/memdebug.h ../lib/setup.h \
-  ../include/curl/stdcheaders.h ../include/curl/curl.h \
-  ../include/curl/curlver.h ../include/curl/easy.h \
-  ../include/curl/multi.h ../include/curl/curl.h
-$(OBJ_DIR)/ares_version.o: ares_version.c setup.h setup_once.h ares_version.h
-$(OBJ_DIR)/ares_expand_name.o: ares_expand_name.c setup.h setup_once.h ares.h \
-  ares_private.h ares_ipv6.h ../lib/memdebug.h ../lib/setup.h \
-  ../include/curl/stdcheaders.h ../include/curl/curl.h \
-  ../include/curl/curlver.h ../include/curl/easy.h \
-  ../include/curl/multi.h ../include/curl/curl.h
-$(OBJ_DIR)/ares_parse_a_reply.o: ares_parse_a_reply.c setup.h setup_once.h ares.h \
-  ares_dns.h ares_private.h ares_ipv6.h ../lib/memdebug.h ../lib/setup.h \
-  ../include/curl/stdcheaders.h ../include/curl/curl.h \
-  ../include/curl/curlver.h ../include/curl/easy.h \
-  ../include/curl/multi.h ../include/curl/curl.h
-$(OBJ_DIR)/windows_port.o: windows_port.c setup.h setup_once.h
-$(OBJ_DIR)/ares_expand_string.o: ares_expand_string.c setup.h setup_once.h ares.h \
-  ares_private.h ares_ipv6.h ../lib/memdebug.h ../lib/setup.h \
-  ../include/curl/stdcheaders.h ../include/curl/curl.h \
-  ../include/curl/curlver.h ../include/curl/easy.h \
-  ../include/curl/multi.h ../include/curl/curl.h
-$(OBJ_DIR)/ares_parse_ptr_reply.o: ares_parse_ptr_reply.c setup.h setup_once.h \
-  ares.h ares_dns.h ares_private.h ares_ipv6.h ../lib/memdebug.h \
-  ../lib/setup.h ../include/curl/stdcheaders.h ../include/curl/curl.h \
-  ../include/curl/curlver.h ../include/curl/easy.h \
-  ../include/curl/multi.h ../include/curl/curl.h
-$(OBJ_DIR)/ares_parse_aaaa_reply.o: ares_parse_aaaa_reply.c setup.h setup_once.h \
-  ares.h ares_dns.h inet_net_pton.h ares_private.h ares_ipv6.h \
-  ../lib/memdebug.h ../lib/setup.h ../include/curl/stdcheaders.h \
-  ../include/curl/curl.h ../include/curl/curlver.h ../include/curl/easy.h \
-  ../include/curl/multi.h ../include/curl/curl.h
-$(OBJ_DIR)/ares_getnameinfo.o: ares_getnameinfo.c setup.h setup_once.h ares.h \
-  ares_private.h ares_ipv6.h ../lib/memdebug.h ../lib/setup.h \
-  ../include/curl/stdcheaders.h ../include/curl/curl.h \
-  ../include/curl/curlver.h ../include/curl/easy.h \
-  ../include/curl/multi.h ../include/curl/curl.h inet_ntop.h
-$(OBJ_DIR)/inet_net_pton.o: inet_net_pton.c setup.h setup_once.h ares_ipv6.h \
-  inet_net_pton.h
-$(OBJ_DIR)/bitncmp.o: bitncmp.c bitncmp.h
-$(OBJ_DIR)/inet_ntop.o: inet_ntop.c setup.h setup_once.h ares_ipv6.h inet_ntop.h
+# Clean everything
+#
+realclean vclean: clean
+       - rm -f $(TARGETS) $(TARGETS:.exe=.map)
+
+$(OBJ_DIR):
+       - mkdir $@
+
+$(OBJ_DIR)/%.o: %.c
+       $(CC) $(CFLAGS) -o $@ -c $<
+       @echo
+
+define compile_and_link
+  $(CC) -o $(1) $(CFLAGS) $(LDFLAGS) -Wl,--print-map,--sort-common $(2) > $(1:.exe=.map)
+  @echo
+endef
+
+DEP_REPLACE = sed -e 's@\(.*\)\.o: @\n$$(OBJ_DIR)\/\1.o: @' \
+                  -e 's@$(WATT32_ROOT)@$$(WATT32_ROOT)@g'
+
+#
+# One may have to do 'make -f Makefile.dj clean' first in case
+# a foreign 'curl_config.h' is making trouble.
+#
+depend: $(GENERATED) Makefile.dj
+       $(CC) -MM $(CFLAGS) $(CSOURCES) | $(DEP_REPLACE) > depend.dj
+
+-include depend.dj
+