mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-19 13:03:13 +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
|
||||
# Theres nothing wrong with the original Waf build besides dependency on Python which I lack on some systems.
|
||||
# Peter Drahos 2010
|
||||
#
|
||||
# Building:
|
||||
# > mkdir build && cd build
|
||||
# > cmake .. && make -j3
|
||||
#
|
||||
# Testing:
|
||||
# > ctest -V
|
||||
#
|
||||
# Install:
|
||||
# > make install
|
||||
|
||||
PROJECT(libgit2 C)
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
|
||||
|
||||
# Find required dependencies
|
||||
FIND_PACKAGE(zlib REQUIRED)
|
||||
INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR} src)
|
||||
|
||||
# Try finding openssl
|
||||
FIND_PACKAGE(OpenSSL)
|
||||
@ -16,15 +27,15 @@ ELSEIF ()
|
||||
ENDIF ()
|
||||
|
||||
# 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_TESTS "Build Tests" ON)
|
||||
IF (NOT CMAKE_BUILD_TYPE)
|
||||
SET(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE)
|
||||
ENDIF ()
|
||||
|
||||
|
||||
INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR} src)
|
||||
|
||||
# Collect sourcefiles
|
||||
FILE(GLOB SRC src/*.c)
|
||||
FILE(GLOB SRC_SHA1 src/block-sha1/*.c)
|
||||
@ -54,13 +65,35 @@ TARGET_LINK_LIBRARIES(git2 ${ZLIB_LIBRARY} ${LIB_SHA1})
|
||||
|
||||
# Install
|
||||
INSTALL(TARGETS git2
|
||||
RUNTIME DESTINATION bin
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
RUNTIME DESTINATION ${INSTALL_BIN}
|
||||
LIBRARY DESTINATION ${INSTALL_LIB}
|
||||
ARCHIVE DESTINATION ${INSTALL_LIB}
|
||||
)
|
||||
INSTALL(FILES ${SRC_H} DESTINATION include/git)
|
||||
INSTALL(FILES ${SRC_H} DESTINATION ${INSTALL_INC} )
|
||||
|
||||
# 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 ()
|
||||
|
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>
|
||||
|
||||
Probably already installed in your system are:
|
||||
Required dependency:
|
||||
|
||||
* zlib 1.2+ <http://www.zlib.net/>
|
||||
|
||||
Optional dependency:
|
||||
|
||||
* 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.
|
||||
|
||||
Optionally, you can build from commandline on most UNIX systems using:
|
||||
On most Unix systems you can build the library using the following commands
|
||||
|
||||
$ ccmake .
|
||||
$ mkdir build && cd build
|
||||
$ cmake ..
|
||||
$ 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
|
||||
==================================
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user