Makefile.dj 2.2 KB

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