# Copyright Joyent, Inc. and other Node contributors. All rights reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS # IN THE SOFTWARE. OS ?= $(shell sh -c 'uname -s | tr "[A-Z]" "[a-z]"') OBJS= \ src/ares_cancel.o \ src/ares__close_sockets.o \ src/ares_create_query.o \ src/ares_data.o \ src/ares_destroy.o \ src/ares_expand_name.o \ src/ares_expand_string.o \ src/ares_fds.o \ src/ares_free_hostent.o \ src/ares_free_string.o \ src/ares_gethostbyaddr.o \ src/ares_gethostbyname.o \ src/ares__get_hostent.o \ src/ares_getnameinfo.o \ src/ares_getopt.o \ src/ares_getsock.o \ src/ares_init.o \ src/ares_library_init.o \ src/ares_llist.o \ src/ares_mkquery.o \ src/ares_nowarn.o \ src/ares_options.o \ src/ares_parse_aaaa_reply.o \ src/ares_parse_a_reply.o \ src/ares_parse_mx_reply.o \ src/ares_parse_naptr_reply.o \ src/ares_parse_ns_reply.o \ src/ares_parse_ptr_reply.o \ src/ares_parse_soa_reply.o \ src/ares_parse_srv_reply.o \ src/ares_parse_txt_reply.o \ src/ares_process.o \ src/ares_query.o \ src/ares__read_line.o \ src/ares_search.o \ src/ares_send.o \ src/ares_strcasecmp.o \ src/ares_strdup.o \ src/ares_strerror.o \ src/ares_timeout.o \ src/ares__timeval.o \ src/ares_version.o \ src/ares_writev.o \ src/bitncmp.o \ src/inet_net_pton.o \ src/inet_ntop.o \ CFLAGS += -I. -I$(SRCDIR)/include -DHAVE_CONFIG_H ARES_CONFIG_OS = $(OS) SOEXT = so # if on windows ifneq (,$(findstring mingw,$(OS))) ARES_CONFIG_OS = win32 OBJS += src/windows_port.o OBJS += src/ares_getenv.o OBJS += src/ares_platform.o LDFLAGS += -lws2_32.lib -liphlpapi.lib else # else a posix system CFLAGS += -g --std=gnu89 -pedantic CFLAGS += -Wall -Wextra -Wno-unused-parameter CFLAGS += -D_LARGEFILE_SOURCE CFLAGS += -D_FILE_OFFSET_BITS=64 endif ifneq (,$(findstring cygwin,$(OS))) ARES_CONFIG_OS = cygwin CFLAGS += -D_GNU_SOURCE endif ifeq (dragonflybsd,$(OS)) ARES_CONFIG_OS = freebsd endif ifeq (darwin,$(OS)) CFLAGS += -D_DARWIN_USE_64_BIT_INODE=1 LDFLAGS += -dynamiclib -install_name "@rpath/libcares.dylib" SOEXT = dylib endif ifeq (linux,$(OS)) CFLAGS += -D_GNU_SOURCE endif ifeq (android,$(OS)) CFLAGS += -D_GNU_SOURCE endif ifeq (sunos,$(OS)) LDFLAGS += -lsocket -lnsl CFLAGS += -D__EXTENSIONS__ -D_XOPEN_SOURCE=500 endif CFLAGS += -I$(SRCDIR)/config/$(ARES_CONFIG_OS) ifneq (,$(findstring libcares.$(SOEXT),$(MAKECMDGOALS))) CFLAGS += -DCARES_BUILDING_LIBRARY else CFLAGS += -DCARES_STATICLIB endif all: libcares.a src/.buildstamp: mkdir -p $(dir $@) touch $@ libcares.a: $(OBJS) $(AR) rcs $@ $^ libcares.$(SOEXT): override CFLAGS += -fPIC libcares.$(SOEXT): $(OBJS:%.o=%.pic.o) $(CC) -shared -o $@ $^ $(LDFLAGS) src/%.o src/%.pic.o: src/%.c include/ares.h include/ares_version.h \ include/nameser.h src/.buildstamp \ $(SRCDIR)/config/$(ARES_CONFIG_OS)/ares_config.h $(CC) $(CFLAGS) -c $< -o $@ .PHONY: clean clean: $(RM) -f libcares.a libcares.$(SOEXT) src/*.o src/.buildstamp