summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Chacon <schacon@gmail.com>2010-11-21 16:42:47 -0800
committerVicent Marti <tanoku@gmail.com>2010-11-24 00:23:14 +0200
commitc34a044f4e7c5cc856d41ef032b6d9c186ae403b (patch)
treed98d44d64cc251b44174412746420d52f71f27f8
parentd910be2105f82e9ea2949ede91d563847d421c65 (diff)
downloadlibgit2-c34a044f4e7c5cc856d41ef032b6d9c186ae403b.tar.gz
add library includes, remove Makefile and readme update for waf
-rw-r--r--Makefile215
-rw-r--r--README.txt20
-rw-r--r--wscript1
3 files changed, 21 insertions, 215 deletions
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 858f18150..000000000
--- a/Makefile
+++ /dev/null
@@ -1,215 +0,0 @@
-all::
-
-# Define NO_VISIBILITY if your compiler does not support symbol
-# visibility in general (and the -fvisibility switch in particular).
-#
-# Define OPENSSL_SHA1 if you want use the SHA1 routines from the
-# OpenSSL crypto library, rather than the built-in C versions.
-#
-# Define PPC_SHA1 if you want to use the bundled SHA1 routines that
-# are optimized for PowerPC, rather than the built-in C versions.
-#
-
-DOXYGEN = doxygen
-INSTALL = install
-RANLIB = ranlib
-AR = ar cr
-
-prefix=/usr/local
-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 -Wextra
-OS = unix
-
-EXTRA_SRC =
-EXTRA_OBJ =
-EXTRA_CFLAGS = -fPIC
-
-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 -W4 -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
-
-ifneq (,$(findstring MINGW,$(uname_S)))
- OS=win32
- NO_VISIBILITY=YesPlease
- SPARSE_FLAGS=-Wno-one-bit-signed-bitfield
-endif
-
--include config.mak
-
-SRC_C = $(wildcard src/*.c)
-OS_SRC = $(wildcard src/$(OS)/*.c)
-SRC_C += $(OS_SRC) $(EXTRA_SRC)
-OBJS = $(patsubst %.c,%.o,$(SRC_C)) $(EXTRA_OBJ)
-HDRS = $(wildcard src/*.h)
-PUBLIC_HEADERS = $(wildcard src/git/*.h)
-HDRS += $(PUBLIC_HEADERS)
-
-GIT_LIB = libgit2.a
-
-TEST_OBJ = $(patsubst %.c,%.o,\
- $(wildcard tests/t[0-9][0-9][0-9][0-9]-*.c))
-TEST_EXE = $(patsubst %.o,%.exe,$(TEST_OBJ))
-TEST_RUN = $(patsubst %.exe,%.run,$(TEST_EXE))
-TEST_VAL = $(patsubst %.exe,%.val,$(TEST_EXE))
-
-ifdef PPC_SHA1
- EXTRA_SRC += src/ppc/sha1.c
- EXTRA_OBJ += src/ppc/sha1ppc.o
- EXTRA_CFLAGS += -DPPC_SHA1
-else
-ifdef OPENSSL_SHA1
- EXTRA_CFLAGS += -DOPENSSL_SHA1
-else
- EXTRA_SRC += src/block-sha1/sha1.c
-endif
-endif
-
-BASIC_CFLAGS := -Isrc
-ifndef NO_VISIBILITY
-BASIC_CFLAGS += -fvisibility=hidden
-endif
-
-ALL_CFLAGS = $(CFLAGS) $(BASIC_CFLAGS) $(EXTRA_CFLAGS)
-
-all:: $(GIT_LIB)
-
-clean:
- rm -f $(GIT_LIB)
- rm -f libgit2.pc
- rm -f *.pdb
- rm -f src/*.[oi] src/*/*.[oi]
- rm -rf apidocs
- rm -f *~ src/*~ src/*/*~
- @$(MAKE) -C tests -s --no-print-directory clean
- @$(MAKE) -s --no-print-directory cov-clean
-
-test-clean:
- @$(MAKE) -C tests -s --no-print-directory clean
-
-apidocs:
- $(DOXYGEN) api.doxygen
- cp CONVENTIONS apidocs/
-
-test: $(GIT_LIB)
- @$(MAKE) -C tests --no-print-directory test
-
-valgrind: $(GIT_LIB)
- @$(MAKE) -C tests --no-print-directory valgrind
-
-sparse:
- cgcc -no-compile $(ALL_CFLAGS) $(SPARSE_FLAGS) $(SRC_C)
-
-install-headers: $(PUBLIC_HEADERS)
- @$(INSTALL) -d /tmp/gitinc/git
- @for i in $^; do cat .HEADER $$i > /tmp/gitinc/$${i##src/}; done
-
-install: $(GIT_LIB) $(PUBLIC_HEADERS) libgit2.pc
- @$(INSTALL) -d $(DESTDIR)/$(prefix)/include/git
- @for i in $(PUBLIC_HEADERS); do \
- cat .HEADER $$i > $(DESTDIR)/$(prefix)/include/$${i##src/}; \
- done
- @$(INSTALL) -d $(DESTDIR)/$(libdir)
- @$(INSTALL) $(GIT_LIB) $(DESTDIR)/$(libdir)/libgit2.a
- @$(INSTALL) -d $(DESTDIR)/$(libdir)/pkgconfig
- @$(INSTALL) libgit2.pc $(DESTDIR)/$(libdir)/pkgconfig/libgit2.pc
-
-uninstall:
- @rm -f $(DESTDIR)/$(libdir)/libgit2.a
- @rm -f $(DESTDIR)/$(libdir)/pkgconfig/libgit2.pc
- @for i in $(PUBLIC_HEADERS); do \
- rm -f $(DESTDIR)/$(prefix)/include/$${i##src/}; \
- done
- @rmdir $(DESTDIR)/$(prefix)/include/git
-
-.c.o:
- $(CC) $(ALL_CFLAGS) -c $< $(CC_OUT)$@
-
-.S.o:
- $(CC) $(ALL_CFLAGS) -c $< $(CC_OUT)$@
-
-%.i: %.c FORCE
- $(CC) $(ALL_CFLAGS) -E $< >$*.i
-
-$(OBJS): $(HDRS)
-$(GIT_LIB): $(OBJS)
- rm -f $(GIT_LIB)
- $(AR) $(AR_OUT)$(GIT_LIB) $(OBJS)
- $(RANLIB) $(GIT_LIB)
-
-$(TEST_OBJ) $(TEST_EXE) $(TEST_RUN) $(TEST_VAL): $(GIT_LIB)
- @$(MAKE) -C tests --no-print-directory \
- OS=$(OS) $(@F)
-
-libgit2.pc: libgit2.pc.in
- sed -e 's#@prefix@#$(prefix)#' -e 's#@libdir@#$(libdir)#' $< > $@
-
-.PHONY: all
-.PHONY: clean
-.PHONY: test $(TEST_VAL) $(TEST_RUN) $(TEST_EXE) $(TEST_OBJ)
-.PHONY: apidocs
-.PHONY: install-headers
-.PHONY: install uninstall
-.PHONY: sparse
-.PHONY: FORCE
-
-### Test suite coverage testing
-#
-.PHONY: coverage cov-clean cov-build cov-report
-
-COV_GCDA = $(patsubst %.c,%.gcda,$(SRC_C))
-COV_GCNO = $(patsubst %.c,%.gcno,$(SRC_C))
-
-coverage:
- @$(MAKE) -s --no-print-directory clean
- @$(MAKE) --no-print-directory cov-build
- @$(MAKE) --no-print-directory cov-report
-
-cov-clean:
- rm -f $(COV_GCDA) $(COV_GCNO) *.gcov untested
-
-COV_CFLAGS = $(CFLAGS) -O0 -ftest-coverage -fprofile-arcs
-
-cov-build:
- $(MAKE) CFLAGS="$(COV_CFLAGS)" all
- $(MAKE) TEST_COVERAGE=1 test
-
-cov-report:
- @echo "--- untested files:" | tee untested
- @{ for f in $(SRC_C); do \
- gcda=$$(dirname $$f)"/"$$(basename $$f .c)".gcda"; \
- if test -f $$gcda; then \
- gcov -b -p -o $$(dirname $$f) $$f >/dev/null; \
- else \
- echo $$f | tee -a untested; \
- fi; \
- done; }
- @rm -f *.h.gcov
- @echo "--- untested functions:" | tee -a untested
- @grep '^function .* called 0' *.c.gcov \
- | sed -e 's/\([^:]*\)\.gcov:function \([^ ]*\) called.*/\1: \2/' \
- | sed -e 's|#|/|g' | tee -a untested
-
diff --git a/README.txt b/README.txt
index a67d9f795..510155953 100644
--- a/README.txt
+++ b/README.txt
@@ -5,6 +5,26 @@ libgit2 is a portable, pure C implementation of the Git core methods provided as
re-entrant linkable library with a solid API, allowing you to write native
speed custom Git applications in any language with bindings.
+Installing libgit2
+==================================
+
+Libgit2 uses the waf build system. To build it, first configure the build
+system by running:
+
+ $ ./waf configure
+
+Then build the library:
+
+ $ ./waf build
+
+You can then test the library with:
+
+ $ ./waf test
+
+And finally you can install it with (you may need to sudo):
+
+ $ ./waf install
+
Why Do We Need It
==================================
diff --git a/wscript b/wscript
index 873bb96c9..22b55bfd4 100644
--- a/wscript
+++ b/wscript
@@ -78,6 +78,7 @@ def build_library(bld, lib_str):
includes='src',
cflags=flags,
defines=defines,
+ stlib=['git2', 'z'],
install_path='${LIBDIR}',
)