Commit 74eff33f by Ramsay Jones Committed by Andreas Ericsson

Makefile: Add support for building with MSVC

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
parent 73dcf287
...@@ -18,14 +18,33 @@ libdir=$(prefix)/lib ...@@ -18,14 +18,33 @@ libdir=$(prefix)/lib
uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo no') 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 CFLAGS = -g -O2 -Wall
OS = unix OS = unix
EXTRA_SRC = EXTRA_SRC =
EXTRA_OBJ = EXTRA_OBJ =
AR_OUT=
CC_OUT=-o # add a space
# Platform specific tweaks # 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))) ifneq (,$(findstring CYGWIN,$(uname_S)))
NO_VISIBILITY=YesPlease NO_VISIBILITY=YesPlease
endif endif
...@@ -74,6 +93,7 @@ all:: $(GIT_LIB) ...@@ -74,6 +93,7 @@ all:: $(GIT_LIB)
clean: clean:
rm -f $(GIT_LIB) rm -f $(GIT_LIB)
rm -f libgit2.pc rm -f libgit2.pc
rm -f *.pdb
rm -f src/*.o src/sha1/*.o src/unix/*.o src/win32/*.o rm -f src/*.o src/sha1/*.o src/unix/*.o src/win32/*.o
rm -rf apidocs rm -rf apidocs
rm -f *~ src/*~ src/git/*~ src/sha1/*~ src/unix/*~ src/win32/*~ rm -f *~ src/*~ src/git/*~ src/sha1/*~ src/unix/*~ src/win32/*~
...@@ -119,12 +139,12 @@ uninstall: ...@@ -119,12 +139,12 @@ uninstall:
@rmdir $(DESTDIR)/$(prefix)/include/git @rmdir $(DESTDIR)/$(prefix)/include/git
.c.o: .c.o:
$(CC) $(ALL_CFLAGS) -c $< -o $@ $(CC) $(ALL_CFLAGS) -c $< $(CC_OUT)$@
$(OBJS): $(HDRS) $(OBJS): $(HDRS)
$(GIT_LIB): $(OBJS) $(GIT_LIB): $(OBJS)
rm -f $(GIT_LIB) rm -f $(GIT_LIB)
$(AR) $(GIT_LIB) $(OBJS) $(AR) $(AR_OUT)$(GIT_LIB) $(OBJS)
$(RANLIB) $(GIT_LIB) $(RANLIB) $(GIT_LIB)
$(TEST_OBJ) $(TEST_EXE) $(TEST_RUN) $(TEST_VAL): $(GIT_LIB) $(TEST_OBJ) $(TEST_EXE) $(TEST_RUN) $(TEST_VAL): $(GIT_LIB)
......
...@@ -5,6 +5,11 @@ LD = $(CC) ...@@ -5,6 +5,11 @@ LD = $(CC)
uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo no') 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 CFLAGS = -g -O2 -Wall
LIBS = -L.. -lgit2 -lz LIBS = -L.. -lgit2 -lz
OS = unix OS = unix
...@@ -15,8 +20,22 @@ CRYPTO_LIB = -lcrypto ...@@ -15,8 +20,22 @@ CRYPTO_LIB = -lcrypto
EXTRA_LIBS = EXTRA_LIBS =
LD_OUT=-o # add a space
CC_OUT=-o # add a space
# Platform specific tweaks # 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))) ifneq (,$(findstring MINGW,$(uname_S)))
OS=win32 OS=win32
EXTRA_LIBS += -lwsock32 -lpthread EXTRA_LIBS += -lwsock32 -lpthread
...@@ -50,7 +69,7 @@ ALL_LIBS = $(LIBS) $(EXTRA_LIBS) ...@@ -50,7 +69,7 @@ ALL_LIBS = $(LIBS) $(EXTRA_LIBS)
all:: $(TEST_RUN) all:: $(TEST_RUN)
clean: clean:
rm -f *.o *.exe *.toc rm -f *.o *.exe *.toc *.pdb
rm -rf trash-*.exe rm -rf trash-*.exe
rm -f *~ rm -f *~
...@@ -59,7 +78,7 @@ test: $(TEST_RUN) ...@@ -59,7 +78,7 @@ test: $(TEST_RUN)
valgrind: $(TEST_VAL) valgrind: $(TEST_VAL)
.c.o: .c.o:
$(CC) $(ALL_CFLAGS) -c $< -o $@ $(CC) $(ALL_CFLAGS) -c $< $(CC_OUT)$@
T_HDR = test_lib.h test_helpers.h T_HDR = test_lib.h test_helpers.h
T_LIB = test_lib.o test_helpers.o T_LIB = test_lib.o test_helpers.o
...@@ -73,19 +92,19 @@ $(patsubst %.exe,%.toc,$(TEST_EXE)): %.toc: %.c ...@@ -73,19 +92,19 @@ $(patsubst %.exe,%.toc,$(TEST_EXE)): %.toc: %.c
mv $@+ $@ mv $@+ $@
$(TEST_OBJ): %.o: %.c $(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: $(HDRS)
$(patsubst %.exe,%_main.o,$(TEST_EXE)): %_main.o: $(T_MAIN_C) $(patsubst %.exe,%_main.o,$(TEST_EXE)): %_main.o: $(T_MAIN_C)
$(patsubst %.exe,%_main.o,$(TEST_EXE)): %_main.o: %.toc $(patsubst %.exe,%_main.o,$(TEST_EXE)): %_main.o: %.toc
$(CC) $(ALL_CFLAGS) '-DTEST_TOC="$<"' \ $(CC) $(ALL_CFLAGS) '-DTEST_TOC="$<"' \
-c $(T_MAIN_C) \ -c $(T_MAIN_C) \
-o $@ $(CC_OUT)$@
$(TEST_EXE): %.exe: $(T_LIB) $(TEST_EXE): %.exe: $(T_LIB)
$(TEST_EXE): %.exe: $(GIT_LIB) $(TEST_EXE): %.exe: $(GIT_LIB)
$(TEST_EXE): %.exe: %.o %_main.o $(TEST_EXE): %.exe: %.o %_main.o
$(LD) -o $@ \ $(LD) $(LD_OUT)$@ \
$(patsubst %.exe,%_main.o,$@) \ $(patsubst %.exe,%_main.o,$@) \
$(patsubst %.exe,%.o,$@) \ $(patsubst %.exe,%.o,$@) \
$(T_LIB) $(ALL_LIBS) $(T_LIB) $(ALL_LIBS)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment