mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-19 18:39:26 +00:00
Add basic testing support and options to specify install paths
This commit is contained in:
parent
7cbdaf7ffa
commit
73c46d539f
@ -1,11 +1,22 @@
|
|||||||
# CMake build script for the libgit2 project
|
# CMake build script for the libgit2 project
|
||||||
# Theres nothing wrong with the original Waf build besides dependency on Python which I lack on some systems.
|
|
||||||
# Peter Drahos 2010
|
# Peter Drahos 2010
|
||||||
|
#
|
||||||
|
# Building:
|
||||||
|
# > mkdir build && cd build
|
||||||
|
# > cmake .. && make -j3
|
||||||
|
#
|
||||||
|
# Testing:
|
||||||
|
# > ctest -V
|
||||||
|
#
|
||||||
|
# Install:
|
||||||
|
# > make install
|
||||||
|
|
||||||
PROJECT(libgit2 C)
|
PROJECT(libgit2 C)
|
||||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
|
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
|
||||||
|
|
||||||
# Find required dependencies
|
# Find required dependencies
|
||||||
FIND_PACKAGE(zlib REQUIRED)
|
FIND_PACKAGE(zlib REQUIRED)
|
||||||
|
INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR} src)
|
||||||
|
|
||||||
# Try finding openssl
|
# Try finding openssl
|
||||||
FIND_PACKAGE(OpenSSL)
|
FIND_PACKAGE(OpenSSL)
|
||||||
@ -16,15 +27,15 @@ ELSEIF ()
|
|||||||
ENDIF ()
|
ENDIF ()
|
||||||
|
|
||||||
# Sane defaults and options
|
# Sane defaults and options
|
||||||
|
SET(INSTALL_BIN bin CACHE PATH "Where to install binaries to.")
|
||||||
|
SET(INSTALL_LIB lib CACHE PATH "Where to install libraries to.")
|
||||||
|
SET(INSTALL_INC include/git CACHE PATH "Where to install headers to.")
|
||||||
OPTION (BUILD_SHARED_LIBS "Build Shared Library (OFF for Static)" ON)
|
OPTION (BUILD_SHARED_LIBS "Build Shared Library (OFF for Static)" ON)
|
||||||
OPTION (BUILD_TESTS "Build Tests" ON)
|
OPTION (BUILD_TESTS "Build Tests" ON)
|
||||||
IF (NOT CMAKE_BUILD_TYPE)
|
IF (NOT CMAKE_BUILD_TYPE)
|
||||||
SET(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE)
|
SET(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE)
|
||||||
ENDIF ()
|
ENDIF ()
|
||||||
|
|
||||||
|
|
||||||
INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR} src)
|
|
||||||
|
|
||||||
# Collect sourcefiles
|
# Collect sourcefiles
|
||||||
FILE(GLOB SRC src/*.c)
|
FILE(GLOB SRC src/*.c)
|
||||||
FILE(GLOB SRC_SHA1 src/block-sha1/*.c)
|
FILE(GLOB SRC_SHA1 src/block-sha1/*.c)
|
||||||
@ -54,13 +65,35 @@ TARGET_LINK_LIBRARIES(git2 ${ZLIB_LIBRARY} ${LIB_SHA1})
|
|||||||
|
|
||||||
# Install
|
# Install
|
||||||
INSTALL(TARGETS git2
|
INSTALL(TARGETS git2
|
||||||
RUNTIME DESTINATION bin
|
RUNTIME DESTINATION ${INSTALL_BIN}
|
||||||
LIBRARY DESTINATION lib
|
LIBRARY DESTINATION ${INSTALL_LIB}
|
||||||
ARCHIVE DESTINATION lib
|
ARCHIVE DESTINATION ${INSTALL_LIB}
|
||||||
)
|
)
|
||||||
INSTALL(FILES ${SRC_H} DESTINATION include/git)
|
INSTALL(FILES ${SRC_H} DESTINATION ${INSTALL_INC} )
|
||||||
|
|
||||||
# Tests
|
# Tests
|
||||||
IF (BUILD_TESTS)
|
IF (BUILD_TESTS)
|
||||||
# TODO. The Waf build generates *.toc files for each test which complicates things.
|
ENABLE_TESTING()
|
||||||
|
# Find and build all tests
|
||||||
|
INCLUDE_DIRECTORIES(tests)
|
||||||
|
FILE (GLOB TESTS tests/t????-*.c)
|
||||||
|
|
||||||
|
FOREACH (TEST_SRC ${TESTS})
|
||||||
|
# Match the source to get test name
|
||||||
|
STRING(REGEX MATCH "(t....-.*).c$" TEST_NAME ${TEST_SRC})
|
||||||
|
SET(TEST_NAME ${CMAKE_MATCH_1}) # This is the actual matched variable, got to love CMake macro language
|
||||||
|
|
||||||
|
# Generate TOC by finding BEGIN_TEST entries in test source.
|
||||||
|
FILE(READ ${TEST_SRC} TEST_CODE)
|
||||||
|
STRING(REGEX MATCHALL "BEGIN_TEST\\([^\\)]*\\)\n" TEST_TOC ${TEST_CODE})
|
||||||
|
FILE(WRITE tests/${TEST_NAME}.toc ${TEST_TOC}) # If desired this might be moved to the build dir
|
||||||
|
|
||||||
|
# Compile
|
||||||
|
ADD_EXECUTABLE(${TEST_NAME} tests/test_main.c tests/test_lib.c tests/test_helpers.c ${TEST_SRC})
|
||||||
|
TARGET_LINK_LIBRARIES(${TEST_NAME} git2)
|
||||||
|
SET_TARGET_PROPERTIES(${TEST_NAME} PROPERTIES COMPILE_DEFINITIONS TEST_TOC=\"${TEST_NAME}.toc\")
|
||||||
|
|
||||||
|
# Add CTest
|
||||||
|
ADD_TEST(${TEST_NAME} ${TEST_NAME})
|
||||||
|
ENDFOREACH ()
|
||||||
ENDIF ()
|
ENDIF ()
|
||||||
|
13
README.md
13
README.md
@ -42,19 +42,22 @@ When building using CMake the following dependencies are required:
|
|||||||
|
|
||||||
* CMake 2.6+ <http://www.cmake.org>
|
* CMake 2.6+ <http://www.cmake.org>
|
||||||
|
|
||||||
Probably already installed in your system are:
|
Required dependency:
|
||||||
|
|
||||||
* zlib 1.2+ <http://www.zlib.net/>
|
* zlib 1.2+ <http://www.zlib.net/>
|
||||||
|
|
||||||
|
Optional dependency:
|
||||||
|
|
||||||
* LibSSL <http://www.openssl.org/>
|
* LibSSL <http://www.openssl.org/>
|
||||||
|
|
||||||
Generate makefile or IDE workspace specific to your system using CMake by pointing the CMakeGui to the CMakeLists.txt file.
|
On most Unix systems you can build the library using the following commands
|
||||||
|
|
||||||
Optionally, you can build from commandline on most UNIX systems using:
|
$ mkdir build && cd build
|
||||||
|
$ cmake ..
|
||||||
$ ccmake .
|
|
||||||
$ make install
|
$ make install
|
||||||
|
|
||||||
|
Alternatively you can point the CMake GUI tool to the CMakeLists.txt file and generate platform specific build project or IDE workspace.
|
||||||
|
|
||||||
Building libgit2 - Unix systems
|
Building libgit2 - Unix systems
|
||||||
==================================
|
==================================
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user