diff --git a/Makefile b/Makefile index a6e8959d..16830f2d 100644 --- a/Makefile +++ b/Makefile @@ -18,52 +18,33 @@ # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS # IN THE SOFTWARE. +name_S := $(shell sh -c 'uname -s 2>/dev/null || echo not') + +ifneq (,$(findstring MINGW,$(uname_S))) +include config-mingw.mk +else +include config-unix.mk +endif + all: oio.a test/run-tests test/run-benchmarks -CFLAGS=--std=gnu89 -g -LINKFLAGS=-lm -TESTS=test/echo-server.c test/test-*.c -BENCHMARKS=test/echo-server.c test/benchmark-*.c - -RUNNER_CFLAGS=$(CFLAGS) -D_GNU_SOURCE # Need _GNU_SOURCE for strdup? -RUNNER_LINKFLAGS=$(LINKFLAGS) -pthread - -test/run-tests: test/*.h test/run-tests.c test/runner.c test/runner-unix.c $(TESTS) oio.a +test/run-tests: test/*.h test/run-tests.c $(RUNNER_SRC) test/runner-unix.c $(TESTS) oio.a $(CC) $(RUNNER_CFLAGS) $(RUNNER_LINKFLAGS) -o test/run-tests test/run-tests.c \ - test/runner.c test/runner-unix.c $(TESTS) oio.a + test/runner.c $(RUNNER_SRC) $(TESTS) oio.a -test/run-benchmarks: test/*.h test/run-benchmarks.c test/runner.c test/runner-unix.c $(BENCHMARKS) oio.a +test/run-benchmarks: test/*.h test/run-benchmarks.c test/runner.c $(RUNNER_SRC) $(BENCHMARKS) oio.a $(CC) $(RUNNER_CFLAGS) $(RUNNER_LINKFLAGS) -o test/run-benchmarks test/run-benchmarks.c \ - test/runner.c test/runner-unix.c $(BENCHMARKS) oio.a - -oio.a: oio-unix.o ev/ev.o - $(AR) rcs oio.a oio-unix.o ev/ev.o - -oio-unix.o: oio-unix.c oio.h oio-unix.h - $(CC) $(CFLAGS) -c oio-unix.c -o oio-unix.o + test/runner.c $(RUNNER_SRC) $(BENCHMARKS) oio.a test/echo.o: test/echo.c test/echo.h $(CC) $(CFLAGS) -c test/echo.c -o test/echo.o -ev/ev.o: ev/config.h ev/ev.c - $(MAKE) -C ev - -ev/config.h: - cd ev && ./configure - .PHONY: clean distclean test benchmark + test: test/run-tests test/run-tests bench: test/run-benchmarks test/run-benchmarks - -clean: - $(RM) -f *.o *.a test/run-tests test/run-benchmarks - $(MAKE) -C ev clean - -distclean: - $(RM) -f *.o *.a - $(MAKE) -C ev clean diff --git a/config-mingw.mk b/config-mingw.mk new file mode 100644 index 00000000..0746d0c5 --- /dev/null +++ b/config-mingw.mk @@ -0,0 +1,41 @@ +# 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. + +CFLAGS=-g --std=gnu89 +LINKFLAGS=-lm +LIBS = -lws2_32 +TESTS=test/echo-server.c test/test-*.c +BENCHMARKS=test/echo-server.c test/benchmark-*.c + +RUNNER_CFLAGS=$(CFLAGS) -D_GNU_SOURCE # Need _GNU_SOURCE for strdup? +RUNNER_LINKFLAGS=$(LINKFLAGS) +RUNNER_SRC=test/runner-win.c + +oio.a: oio-win.o + $(AR) rcs oio.a oio-win.o + +oio-win.o: oio-win.c oio.h oio-win.h + $(CC) $(CFLAGS) -c oio-win.c -o oio-win.o + +clean: + $(RM) -f *.o *.a test/run-tests.exe test/run-benchmarks.exe + +distclean: + $(RM) -f *.o *.a diff --git a/config-unix.mk b/config-unix.mk new file mode 100644 index 00000000..c67e2156 --- /dev/null +++ b/config-unix.mk @@ -0,0 +1,49 @@ +# 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. + +CFLAGS=--std=gnu89 -g +LINKFLAGS=-lm +LIBS= +TESTS=test/echo-server.c test/test-*.c +BENCHMARKS=test/echo-server.c test/benchmark-*.c + +RUNNER_CFLAGS=$(CFLAGS) -D_GNU_SOURCE # Need _GNU_SOURCE for strdup? +RUNNER_LINKFLAGS=$(LINKFLAGS) -pthread +RUNNER_SRC=test/runner-unix.c + +oio.a: oio-unix.o ev/ev.o + $(AR) rcs oio.a oio-unix.o ev/ev.o + +oio-unix.o: oio-unix.c oio.h oio-unix.h + $(CC) $(CFLAGS) -c oio-unix.c -o oio-unix.o + +ev/ev.o: ev/config.h ev/ev.c + $(MAKE) -C ev + +ev/config.h: + cd ev && ./configure + +clean: + $(RM) -f *.o *.a test/run-tests test/run-benchmarks + $(MAKE) -C ev clean + +distclean: + $(RM) -f *.o *.a + $(MAKE) -C ev clean