From 74eff33f8be680e821d9674ab12da3c0b76dad23 Mon Sep 17 00:00:00 2001 From: Ramsay Jones Date: Mon, 1 Feb 2010 10:39:10 +0100 Subject: [PATCH] Makefile: Add support for building with MSVC Signed-off-by: Ramsay Jones --- Makefile | 24 ++++++++++++++++++++++-- tests/Makefile | 29 ++++++++++++++++++++++++----- 2 files changed, 46 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index bd0d32c..a5ab36d 100644 --- a/Makefile +++ b/Makefile @@ -18,14 +18,33 @@ libdir=$(prefix)/lib uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo no') +ifdef MSVC + # avoid the MinGW and Cygwin configuration sections + uname_S := Windows +endif + CFLAGS = -g -O2 -Wall OS = unix EXTRA_SRC = EXTRA_OBJ = +AR_OUT= +CC_OUT=-o # add a space + # Platform specific tweaks +ifeq ($(uname_S),Windows) + OS=win32 + RANLIB = echo + CC = cl -nologo + AR = lib -nologo + CFLAGS = -TC -W3 -RTC1 -Zi -DWIN32 -D_DEBUG -D_LIB + AR_OUT=-out: + CC_OUT=-Fo + NO_VISIBILITY=YesPlease +endif + ifneq (,$(findstring CYGWIN,$(uname_S))) NO_VISIBILITY=YesPlease endif @@ -74,6 +93,7 @@ all:: $(GIT_LIB) clean: rm -f $(GIT_LIB) rm -f libgit2.pc + rm -f *.pdb rm -f src/*.o src/sha1/*.o src/unix/*.o src/win32/*.o rm -rf apidocs rm -f *~ src/*~ src/git/*~ src/sha1/*~ src/unix/*~ src/win32/*~ @@ -119,12 +139,12 @@ uninstall: @rmdir $(DESTDIR)/$(prefix)/include/git .c.o: - $(CC) $(ALL_CFLAGS) -c $< -o $@ + $(CC) $(ALL_CFLAGS) -c $< $(CC_OUT)$@ $(OBJS): $(HDRS) $(GIT_LIB): $(OBJS) rm -f $(GIT_LIB) - $(AR) $(GIT_LIB) $(OBJS) + $(AR) $(AR_OUT)$(GIT_LIB) $(OBJS) $(RANLIB) $(GIT_LIB) $(TEST_OBJ) $(TEST_EXE) $(TEST_RUN) $(TEST_VAL): $(GIT_LIB) diff --git a/tests/Makefile b/tests/Makefile index 6bdfcbc..487addc 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -5,6 +5,11 @@ LD = $(CC) uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo no') +ifdef MSVC + # avoid the MinGW and Cygwin configuration sections + uname_S := Windows +endif + CFLAGS = -g -O2 -Wall LIBS = -L.. -lgit2 -lz OS = unix @@ -15,8 +20,22 @@ CRYPTO_LIB = -lcrypto EXTRA_LIBS = +LD_OUT=-o # add a space +CC_OUT=-o # add a space + # Platform specific tweaks +ifeq ($(uname_S),Windows) + CC = cl -nologo + LD = link -nologo + CFLAGS = -TC -W3 -RTC1 -Zi -DWIN32 -D_DEBUG -D_LIB + LD_OUT=-out: + CC_OUT=-Fo + + LIBS = ..\\libgit2.a libz.lib wsock32.lib + CRYPTO_LIB = libeay32.lib +endif + ifneq (,$(findstring MINGW,$(uname_S))) OS=win32 EXTRA_LIBS += -lwsock32 -lpthread @@ -50,7 +69,7 @@ ALL_LIBS = $(LIBS) $(EXTRA_LIBS) all:: $(TEST_RUN) clean: - rm -f *.o *.exe *.toc + rm -f *.o *.exe *.toc *.pdb rm -rf trash-*.exe rm -f *~ @@ -59,7 +78,7 @@ test: $(TEST_RUN) valgrind: $(TEST_VAL) .c.o: - $(CC) $(ALL_CFLAGS) -c $< -o $@ + $(CC) $(ALL_CFLAGS) -c $< $(CC_OUT)$@ T_HDR = test_lib.h test_helpers.h T_LIB = test_lib.o test_helpers.o @@ -73,19 +92,19 @@ $(patsubst %.exe,%.toc,$(TEST_EXE)): %.toc: %.c mv $@+ $@ $(TEST_OBJ): %.o: %.c - $(CC) $(ALL_CFLAGS) -c $< -o $@ + $(CC) $(ALL_CFLAGS) -c $< $(CC_OUT)$@ $(patsubst %.exe,%_main.o,$(TEST_EXE)): %_main.o: $(HDRS) $(patsubst %.exe,%_main.o,$(TEST_EXE)): %_main.o: $(T_MAIN_C) $(patsubst %.exe,%_main.o,$(TEST_EXE)): %_main.o: %.toc $(CC) $(ALL_CFLAGS) '-DTEST_TOC="$<"' \ -c $(T_MAIN_C) \ - -o $@ + $(CC_OUT)$@ $(TEST_EXE): %.exe: $(T_LIB) $(TEST_EXE): %.exe: $(GIT_LIB) $(TEST_EXE): %.exe: %.o %_main.o - $(LD) -o $@ \ + $(LD) $(LD_OUT)$@ \ $(patsubst %.exe,%_main.o,$@) \ $(patsubst %.exe,%.o,$@) \ $(T_LIB) $(ALL_LIBS) -- 2.11.4.GIT