diff --git a/Makefile.in b/Makefile.in index 3af46edb439..d1137b6fe5a 100644 --- a/Makefile.in +++ b/Makefile.in @@ -4,6 +4,8 @@ include config.mk MKFILES := Makefile config.mk $(wildcard $(CFG_SRC_DIR)/mk/*.mk) +MKFILES += $(CFG_SRC_DIR)/src/rt/libuv/Makefile +MKFILES += $(wildcard $(CFG_SRC_DIR)/src/rt/libuv/*.mk) ifneq ($(MAKE_RESTARTS),) CFG_INFO := $(info cfg: make restarts: $(MAKE_RESTARTS)) diff --git a/configure b/configure index fc7a6ace832..c1474edb0d7 100755 --- a/configure +++ b/configure @@ -179,6 +179,7 @@ step_msg "making directories" for i in \ doc \ rt rt/isaac rt/bigint rt/sync rt/test rt/arch/i386 \ + rt/libuv rt/libuv/src/ares rt/libuv/src/eio rt/libuv/src/ev \ rustllvm \ dl stage0 stage1 stage2 stage3 \ stage0/lib stage1/lib stage2/lib stage3/lib \ @@ -315,4 +316,8 @@ rm -f config.mk.bak copy ${CFG_SRC_DIR}Makefile.in ./Makefile +copy ${CFG_SRC_DIR}src/rt/libuv/Makefile rt/libuv/Makefile +copy ${CFG_SRC_DIR}src/rt/libuv/config-unix.mk rt/libuv/config-unix.mk +copy ${CFG_SRC_DIR}src/rt/libuv/config-mingw.mk rt/libuv/config-mingw.mk + step_msg "complete" diff --git a/mk/rt.mk b/mk/rt.mk index e8e9af09286..76c876c3d89 100644 --- a/mk/rt.mk +++ b/mk/rt.mk @@ -68,7 +68,7 @@ RUNTIME_DEF := rt/rustrt$(CFG_DEF_SUFFIX) RUNTIME_INCS := -I $(S)src/rt/isaac -I $(S)src/rt/uthash \ -I $(S)src/rt/arch/i386 -I $(S)src/rt/libuv/include RUNTIME_OBJS := $(RUNTIME_CS:.cpp=.o) $(RUNTIME_LL:.ll=.o) $(RUNTIME_S:.s=.o) -RUNTIME_LIBS := $(S)src/rt/libuv/uv.a +RUNTIME_LIBS := rt/libuv/uv.a rt/%.o: rt/%.cpp $(MKFILES) @$(call E, compile: $@) @@ -101,10 +101,12 @@ rt/$(CFG_RUNTIME): $(RUNTIME_OBJS) $(MKFILES) $(RUNTIME_HDR) $(RUNTIME_DEF) $(RU # FIXME: For some reason libuv's makefiles can't figure out the correct definition # of CC on the mingw I'm using, so we are explicitly using gcc. Also, we # have to list environment variables first on windows... mysterious -$(S)src/rt/libuv/uv.a: $(S)src/rt/libuv/LIBUV_REVISION - $(Q)CFLAGS=\"-m32\" LDFLAGS=\"-m32\" CC=gcc $(MAKE) -C $(S)src/rt/libuv - $(Q)mkdir -p rt/libuv - $(Q)cp $(S)src/rt/libuv/uv.a rt/libuv/uv.a +rt/libuv/uv.a: $(wildcard \ + $(S)src/rt/libuv/* \ + $(S)src/rt/libuv/*/* \ + $(S)src/rt/libuv/*/*/* \ + $(S)src/rt/libuv/*/*/*/*) + $(Q)CFLAGS=\"-m32\" LDFLAGS=\"-m32\" CC=gcc $(MAKE) -C rt/libuv # These could go in rt.mk or rustllvm.mk, they're needed for both. diff --git a/src/rt/libuv/Makefile b/src/rt/libuv/Makefile index 0b4f38bb86f..b8d3c685952 100644 --- a/src/rt/libuv/Makefile +++ b/src/rt/libuv/Makefile @@ -18,13 +18,30 @@ # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS # IN THE SOFTWARE. +include ../../config.mk +CFLAGS=-m32 +LDFLAGS=-m32 +CC=gcc + +S:=$(shell cd ../../; cd $(CFG_SRC_DIR)src/rt/libuv; pwd) + +ifdef VERBOSE + Q := + EE = +else + Q := @ + EE = echo $(1) +endif + +VPATH:=$(S) + uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not') ifdef MSVC uname_S := MINGW endif -CPPFLAGS += -Iinclude +CPPFLAGS += -I$(S)/include CARES_OBJS = CARES_OBJS += src/ares/ares__close_sockets.o @@ -77,37 +94,8 @@ else include config-unix.mk endif -TESTS=test/echo-server.c test/test-*.c -BENCHMARKS=test/echo-server.c test/dns-server.c test/benchmark-*.c - -all: uv.a test/run-tests test/run-benchmarks +all: uv.a $(CARES_OBJS): %.o: %.c - $(CC) -o $*.o -c $(CFLAGS) $(CPPFLAGS) $< -DHAVE_CONFIG_H - -test/run-tests$(E): test/*.h test/run-tests.c $(RUNNER_SRC) test/runner-unix.c $(TESTS) uv.a - $(CC) $(CPPFLAGS) $(RUNNER_CFLAGS) $(RUNNER_LINKFLAGS) -o test/run-tests test/run-tests.c \ - test/runner.c $(RUNNER_SRC) $(TESTS) uv.a $(RUNNER_LIBS) - -test/run-benchmarks$(E): test/*.h test/run-benchmarks.c test/runner.c $(RUNNER_SRC) $(BENCHMARKS) uv.a - $(CC) $(CPPFLAGS) $(RUNNER_CFLAGS) $(RUNNER_LINKFLAGS) -o test/run-benchmarks test/run-benchmarks.c \ - test/runner.c $(RUNNER_SRC) $(BENCHMARKS) uv.a $(RUNNER_LIBS) - -test/echo.o: test/echo.c test/echo.h - $(CC) $(CPPFLAGS) $(CFLAGS) -c test/echo.c -o test/echo.o - - -.PHONY: clean clean-platform distclean distclean-platform test benchmark - - -test: test/run-tests$(E) - test/run-tests - -bench: test/run-benchmarks$(E) - test/run-benchmarks - -clean: clean-platform - $(RM) -f src/*.o *.a test/run-tests$(E) test/run-benchmarks$(E) - -distclean: distclean-platform - $(RM) -f src/*.o *.a test/run-tests$(E) test/run-benchmarks$(E) + @$(call EE, compile: $@) + $(Q)$(CC) -o $*.o -c $(CFLAGS) $(CPPFLAGS) $< -DHAVE_CONFIG_H diff --git a/src/rt/libuv/config-mingw.mk b/src/rt/libuv/config-mingw.mk index a6e8279b239..2c29b6ebd8d 100644 --- a/src/rt/libuv/config-mingw.mk +++ b/src/rt/libuv/config-mingw.mk @@ -24,24 +24,22 @@ CC ?= $(PREFIX)gcc AR ?= $(PREFIX)ar E=.exe -CFLAGS+=$(CPPFLAGS) -g --std=gnu89 -D_WIN32_WINNT=0x0501 -Isrc/ares/config_win32 +CFLAGS+=$(CPPFLAGS) -g --std=gnu89 -D_WIN32_WINNT=0x0501 -I$(S)src/ares/config_win32 LINKFLAGS=-lm CARES_OBJS += src/ares/windows_port.o -RUNNER_CFLAGS=$(CFLAGS) -D_GNU_SOURCE # Need _GNU_SOURCE for strdup? -RUNNER_LINKFLAGS=$(LINKFLAGS) -RUNNER_LIBS=-lws2_32 -RUNNER_SRC=test/runner-win.c - uv.a: src/uv-win.o src/uv-common.o src/uv-eio.o src/eio/eio.o $(CARES_OBJS) - $(AR) rcs uv.a src/uv-win.o src/uv-common.o src/uv-eio.o src/eio/eio.o $(CARES_OBJS) + @$(call EE, ar: $@) + $(Q)$(AR) rcs uv.a $^ src/uv-win.o: src/uv-win.c include/uv.h include/uv-win.h - $(CC) $(CFLAGS) -c src/uv-win.c -o src/uv-win.o + @$(call EE, compile: $@) + $(Q)$(CC) $(CFLAGS) -c $< -o $@ src/uv-common.o: src/uv-common.c include/uv.h include/uv-win.h - $(CC) $(CFLAGS) -c src/uv-common.c -o src/uv-common.o + @$(call EE, compile: $@) + $(Q)$(CC) $(CFLAGS) -c $< -o $@ EIO_CPPFLAGS += $(CPPFLAGS) EIO_CPPFLAGS += -DEIO_CONFIG_H=\"$(EIO_CONFIG)\" @@ -49,15 +47,10 @@ EIO_CPPFLAGS += -DEIO_STACKSIZE=65536 EIO_CPPFLAGS += -D_GNU_SOURCE src/eio/eio.o: src/eio/eio.c - $(CC) $(EIO_CPPFLAGS) $(CFLAGS) -c src/eio/eio.c -o src/eio/eio.o + @$(call EE, compile: $@) + $(Q)$(CC) $(EIO_CPPFLAGS) $(CFLAGS) -c $< -o $@ src/uv-eio.o: src/uv-eio.c - $(CC) $(CPPFLAGS) -Isrc/eio/ $(CFLAGS) -c src/uv-eio.c -o src/uv-eio.o + @$(call EE, compile: $@) + $(Q)$(CC) $(CPPFLAGS) -I$(S)src/eio/ $(CFLAGS) -c $< -o $@ -clean-platform: - -rm -f src/ares/*.o - -rm -f src/eio/*.o - -distclean-platform: - -rm -f src/ares/*.o - -rm -f src/eio/*.o diff --git a/src/rt/libuv/config-unix.mk b/src/rt/libuv/config-unix.mk index f9d849fba9c..afdb92431c8 100644 --- a/src/rt/libuv/config-unix.mk +++ b/src/rt/libuv/config-unix.mk @@ -23,7 +23,7 @@ AR ?= $(PREFIX)ar E= CSTDFLAG=--std=c89 -pedantic CFLAGS+=-g -CPPFLAGS += -Isrc/ev +CPPFLAGS += -I$(S)/src/ev LINKFLAGS=-lm CPPFLAGS += -D_LARGEFILE_SOURCE @@ -32,7 +32,7 @@ CPPFLAGS += -D_FILE_OFFSET_BITS=64 ifeq (SunOS,$(uname_S)) EV_CONFIG=config_sunos.h EIO_CONFIG=config_sunos.h -CPPFLAGS += -Isrc/ares/config_sunos +CPPFLAGS += -I$(S)/src/ares/config_sunos LINKFLAGS+=-lsocket -lnsl UV_OS_FILE=uv-sunos.c endif @@ -40,7 +40,7 @@ endif ifeq (Darwin,$(uname_S)) EV_CONFIG=config_darwin.h EIO_CONFIG=config_darwin.h -CPPFLAGS += -Isrc/ares/config_darwin +CPPFLAGS += -I$(S)/src/ares/config_darwin LINKFLAGS+=-framework CoreServices UV_OS_FILE=uv-darwin.c endif @@ -49,7 +49,7 @@ ifeq (Linux,$(uname_S)) EV_CONFIG=config_linux.h EIO_CONFIG=config_linux.h CSTDFLAG += -D_XOPEN_SOURCE=600 -CPPFLAGS += -Isrc/ares/config_linux +CPPFLAGS += -I$(S)/src/ares/config_linux LINKFLAGS+=-lrt UV_OS_FILE=uv-linux.c endif @@ -57,7 +57,7 @@ endif ifeq (FreeBSD,$(uname_S)) EV_CONFIG=config_freebsd.h EIO_CONFIG=config_freebsd.h -CPPFLAGS += -Isrc/ares/config_freebsd +CPPFLAGS += -I$(S)/src/ares/config_freebsd LINKFLAGS+= UV_OS_FILE=uv-freebsd.c endif @@ -65,7 +65,7 @@ endif ifneq (,$(findstring CYGWIN,$(uname_S))) EV_CONFIG=config_cygwin.h EIO_CONFIG=config_cygwin.h -CPPFLAGS += -Isrc/ares/config_cygwin +CPPFLAGS += -I$(S)/src/ares/config_cygwin LINKFLAGS+= UV_OS_FILE=uv-cygwin.c endif @@ -78,20 +78,24 @@ RUNNER_LIBS= RUNNER_SRC=test/runner-unix.c uv.a: src/uv-unix.o src/uv-common.o src/uv-platform.o src/ev/ev.o src/uv-eio.o src/eio/eio.o $(CARES_OBJS) - $(AR) rcs uv.a src/uv-unix.o src/uv-platform.o src/uv-common.o src/uv-eio.o src/ev/ev.o \ - src/eio/eio.o $(CARES_OBJS) + @$(call EE, ar: $@) + $(Q)$(AR) rcs uv.a $^ src/uv-platform.o: src/$(UV_OS_FILE) include/uv.h include/uv-unix.h - $(CC) $(CSTDFLAG) $(CPPFLAGS) $(CFLAGS) -c src/$(UV_OS_FILE) -o src/uv-platform.o + @$(call EE, compile: $@) + $(Q)$(CC) $(CSTDFLAG) $(CPPFLAGS) $(CFLAGS) -c $< -o $@ src/uv-unix.o: src/uv-unix.c include/uv.h include/uv-unix.h - $(CC) $(CSTDFLAG) $(CPPFLAGS) -Ieio $(CFLAGS) -c src/uv-unix.c -o src/uv-unix.o + @$(call EE, compile: $@) + $(Q)$(CC) $(CSTDFLAG) $(CPPFLAGS) -I$(S)/eio $(CFLAGS) -c $< -o $@ src/uv-common.o: src/uv-common.c include/uv.h include/uv-unix.h - $(CC) $(CSTDFLAG) $(CPPFLAGS) $(CFLAGS) -c src/uv-common.c -o src/uv-common.o + @$(call EE, compile: $@) + $(Q)$(CC) $(CSTDFLAG) $(CPPFLAGS) $(CFLAGS) -c $< -o $@ src/ev/ev.o: src/ev/ev.c - $(CC) $(CPPFLAGS) $(CFLAGS) -c src/ev/ev.c -o src/ev/ev.o -DEV_CONFIG_H=\"$(EV_CONFIG)\" + @$(call EE, compile: $@) + $(Q)$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@ -DEV_CONFIG_H=\"$(EV_CONFIG)\" EIO_CPPFLAGS += $(CPPFLAGS) @@ -100,20 +104,9 @@ EIO_CPPFLAGS += -DEIO_STACKSIZE=65536 EIO_CPPFLAGS += -D_GNU_SOURCE src/eio/eio.o: src/eio/eio.c - $(CC) $(EIO_CPPFLAGS) $(CFLAGS) -c src/eio/eio.c -o src/eio/eio.o + @$(call EE, compile: $@) + $(Q)$(CC) $(EIO_CPPFLAGS) $(CFLAGS) -c $< -o $@ src/uv-eio.o: src/uv-eio.c - $(CC) $(CPPFLAGS) -Isrc/eio/ $(CSTDFLAG) $(CFLAGS) -c src/uv-eio.c -o src/uv-eio.o - - -clean-platform: - -rm -f src/ares/*.o - -rm -f src/ev/*.o - -rm -f src/eio/*.o - -rm -rf test/run-tests.dSYM run-benchmarks.dSYM - -distclean-platform: - -rm -f src/ares/*.o - -rm -f src/ev/*.o - -rm -f src/eio/*.o - -rm -rf test/run-tests.dSYM run-benchmarks.dSYM + @$(call EE, compile: $@) + $(Q)$(CC) $(CPPFLAGS) -I$(S)/src/eio/ $(CSTDFLAG) $(CFLAGS) -c $< -o $@