setup travis for builds, testing and release on osx and linux
This commit is contained in:
@@ -1 +1,3 @@
|
||||
/build/
|
||||
|
||||
.DS_Store
|
||||
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
language: cpp
|
||||
compiler: clang
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- os: linux
|
||||
dist: trusty
|
||||
env: PYTHON_BINDING=0
|
||||
- os: linux
|
||||
dist: trusty
|
||||
env: PYTHON_BINDING=1
|
||||
- os: osx
|
||||
env: PYTHON_BINDING=0
|
||||
- os: osx
|
||||
env: PYTHON_BINDING=1
|
||||
|
||||
install: travis/install.sh
|
||||
|
||||
script: travis/script.sh
|
||||
|
||||
before_deploy: travis/bundle.sh
|
||||
|
||||
deploy:
|
||||
provider: releases
|
||||
api_key:
|
||||
secure: UwuiE6SrjorpBr1CzTRadX1zq83hwbnur+MvzBueqEHM7Yyu5Y0xMkwchRlX41HzMuSkC0azM0S8GfqJT1E7pIrqgJGvFbXR3t9ZG8HtvrcM4PvTS8b0G0d8aWHfTP2Zv+PAK3MMnYtxmOFPs4IaqO1m+imjQWtpvCRG5tvc4DNIPAMh0S8LCjxUdz35BYAM4pwM7WB9Qt+YhbyP1h3oSQ7qtr1fZYCC0H4G1cjVBLeP9g66/tfg0MIQVf1wxU8KF3H6esilPhFDCnsBYcnYrKyJN9OkMXZvLoxsjqQvTlsSNO2wIQ32dW8fk+1VFebWjN3RnNUV2Zb3wdz2y6e6A08J8T/+QrJ003eUJAGassQEgsuQ85ldcbylbKCVdi+iA+W6pKSJoHIlyr2KQG77OZ+q3obvY09IMNX2qVnUJKG8g9vZHKk8TlvUtIDODUxqJ/XUVwG5aKiUPuE5UMeLnZlO7cWpABb28BjXGehLCDtqg2eu39n+N9hyEjmsJLcOuS03+C55YrjJHW09qZomorMyIa//4jxSAOU9Iah7cRzPGUl/eSwQ2kf0OGWfySd2PreOThWepH0ymvG9htlTUSMM4wRuKnNAmG7NY6TykttJY2KsTLpki+P4MFBlSvL0VvoHQintK69udSVeUrJaGx508w8V59AdZwJjMxhjOXw=
|
||||
file_glob: true
|
||||
file: $TRAVIS_BUILD_DIR/*.zip
|
||||
overwrite: true
|
||||
skip_cleanup: true
|
||||
on:
|
||||
tags: true
|
||||
repo: CoatiSoftware/SourcetrailDB
|
||||
+41
-2
@@ -6,9 +6,48 @@ set(PROJECT_NAME "SourcetrailDB")
|
||||
|
||||
project(${PROJECT_NAME})
|
||||
|
||||
# configure default flags
|
||||
|
||||
# --- Default Flags ---
|
||||
|
||||
set(CMAKE_BUILD_TYPE_INIT "Release")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
|
||||
|
||||
if(UNIX)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread -fPIC")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread -fPIC")
|
||||
endif()
|
||||
|
||||
|
||||
# --- Version ---
|
||||
|
||||
if(EXISTS "${CMAKE_SOURCE_DIR}/.git")
|
||||
find_package(Git)
|
||||
|
||||
execute_process(
|
||||
COMMAND ${GIT_EXECUTABLE} describe --long
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
OUTPUT_VARIABLE GIT_VERSION_NUMBER
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
else()
|
||||
set(GIT_VERSION_NUMBER "v0_db0_p0-0-a")
|
||||
endif()
|
||||
|
||||
string(REGEX REPLACE "v([0-9]+)_.*" "\\1" INTERFACE_VERSION "${GIT_VERSION_NUMBER}")
|
||||
string(REGEX REPLACE "v[0-9]+_db([0-9]+)_.*" "\\1" DATABASE_VERSION "${GIT_VERSION_NUMBER}")
|
||||
string(REGEX REPLACE "v[0-9]+_db[0-9]+_p([0-9])-.*" "\\1" PATCH_VERSION "${GIT_VERSION_NUMBER}")
|
||||
set(VERSION_STRING "v${INTERFACE_VERSION}_db${DATABASE_VERSION}_p${PATCH_VERSION}")
|
||||
|
||||
message(STATUS ${INTERFACE_VERSION})
|
||||
message(STATUS ${DATABASE_VERSION})
|
||||
message(STATUS ${PATCH_VERSION})
|
||||
message(STATUS ${VERSION_STRING})
|
||||
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/version.txt.in
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/version.txt"
|
||||
)
|
||||
|
||||
|
||||
|
||||
set(LIB_CORE "lib_core")
|
||||
set(CORE_SOURCE_DIR "${CMAKE_SOURCE_DIR}/core") # can be accessed in subdirectory CMake files
|
||||
|
||||
+2
-2
@@ -31,7 +31,7 @@ install:
|
||||
before_build:
|
||||
- mkdir build
|
||||
- cd build
|
||||
- cmake -G "%CMAKE_GENERATOR%" ../ -DBUILD_BINDINGS_PYTHON=ON -DPYTHON_INCLUDE_DIRS="%PYTHON_PATH%/include" -DPYTHON_INCLUDE_DIRS="%PYTHON_PATH%/include" -DPYTHON_LIBRARIES="%PYTHON_PATH%/libs/python37.lib"
|
||||
- cmake -G "%CMAKE_GENERATOR%" ../ -DBUILD_BINDINGS_PYTHON=ON -DPYTHON_LIBRARY="%PYTHON_PATH%/libs/python37.lib"
|
||||
- cd ../
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ after_build:
|
||||
- cd ..
|
||||
- ps: |
|
||||
copy build/bindings_python/release/_sourcetraildb.pyd artifacts_bindings_python/
|
||||
copy build/bindings_python/release/sourcetraildb.py artifacts_bindings_python/
|
||||
copy build/bindings_python/sourcetraildb.py artifacts_bindings_python/
|
||||
copy LICENSE.txt artifacts_bindings_python/license/license_sourcetraildb.txt
|
||||
copy external/catch/license_catch.txt artifacts_bindings_python/license/
|
||||
copy external/cpp_sqlite/license_cpp_sqlite.txt artifacts_bindings_python/license/
|
||||
|
||||
@@ -1,80 +1,43 @@
|
||||
cmake_minimum_required (VERSION 2.6)
|
||||
|
||||
set(LIB_BINDINGS_PYTHON "lib_bindings_python")
|
||||
set(PACKAGE_NAME "sourcetraildb")
|
||||
|
||||
|
||||
# --- Find Python ---
|
||||
|
||||
if (NOT EXISTS "${PYTHON_INCLUDE_DIRS}")
|
||||
message(STATUS "Python include dir \"${PYTHON_INCLUDE_DIRS}\" does not exist, trying to find Python automatically.")
|
||||
find_package(PythonLibs REQUIRED)
|
||||
else ()
|
||||
if (NOT EXISTS "${PYTHON_LIBRARIES}")
|
||||
message(STATUS "Python library \"${PYTHON_LIBRARIES}\" does not exist, trying to find Python automatically.")
|
||||
find_package(PythonLibs REQUIRED)
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
message(STATUS "Found Python include dirs: ${PYTHON_INCLUDE_DIRS}")
|
||||
message(STATUS "Found Python libraries: ${PYTHON_LIBRARIES}")
|
||||
|
||||
|
||||
# --- Setup Paths ---
|
||||
|
||||
set(RESOURCES_SWIG_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../resources_swig")
|
||||
set(GENERATED_SRC_DIR "${CMAKE_CURRENT_BINARY_DIR}/src")
|
||||
|
||||
set(SWIG_INTERFACE_FILE "${RESOURCES_SWIG_DIR}/interface/${PACKAGE_NAME}.i")
|
||||
set(GENERATED_WRAPPER_FILE "${GENERATED_SRC_DIR}/${PACKAGE_NAME}_wrap.cxx")
|
||||
|
||||
file(WRITE ${GENERATED_WRAPPER_FILE} "")
|
||||
|
||||
set(SRC_FILES
|
||||
"${RESOURCES_SWIG_DIR}/src/${PACKAGE_NAME}.cpp"
|
||||
${GENERATED_WRAPPER_FILE}
|
||||
)
|
||||
# --- Find Python ---
|
||||
|
||||
set(HDR_FILES
|
||||
"${RESOURCES_SWIG_DIR}/include/${PACKAGE_NAME}.h"
|
||||
)
|
||||
find_package(PythonLibs)
|
||||
|
||||
|
||||
# --- Find Swig ---
|
||||
|
||||
find_package(SWIG REQUIRED)
|
||||
include(${SWIG_USE_FILE})
|
||||
|
||||
|
||||
# --- Configure Target ---
|
||||
|
||||
add_library(${LIB_BINDINGS_PYTHON} SHARED ${SRC_FILES} ${HDR_FILES} ${SWIG_INTERFACE_FILE})
|
||||
set_source_files_properties(${SWIG_INTERFACE_FILE} PROPERTIES CPLUSPLUS ON)
|
||||
|
||||
set_target_properties(${LIB_BINDINGS_PYTHON} PROPERTIES OUTPUT_NAME "_${PACKAGE_NAME}")
|
||||
|
||||
if (WIN32)
|
||||
set_target_properties(${LIB_BINDINGS_PYTHON} PROPERTIES SUFFIX ".pyd")
|
||||
else()
|
||||
# Remove 'lib' prefix
|
||||
set_target_properties(${LIB_BINDINGS_PYTHON} PROPERTIES PREFIX "")
|
||||
set_target_properties(${LIB_BINDINGS_PYTHON} PROPERTIES SUFFIX ".so")
|
||||
endif()
|
||||
|
||||
if (WIN32)
|
||||
add_custom_command(
|
||||
TARGET ${LIB_BINDINGS_PYTHON}
|
||||
PRE_BUILD
|
||||
COMMAND if not exist \"${GENERATED_SRC_DIR}\" mkdir \"${GENERATED_SRC_DIR}\" \n swig -c++ -python -I${RESOURCES_SWIG_DIR}/include -o ${GENERATED_WRAPPER_FILE} -outdir ${CMAKE_CURRENT_BINARY_DIR}/$(CONFIGURATION) ${SWIG_INTERFACE_FILE}
|
||||
COMMENT "Generating wrapper code file."
|
||||
)
|
||||
else()
|
||||
add_custom_command(
|
||||
TARGET ${LIB_BINDINGS_PYTHON}
|
||||
PRE_BUILD
|
||||
COMMAND swig -c++ -python -I${RESOURCES_SWIG_DIR}/include -o ${GENERATED_WRAPPER_FILE} -outdir ${CMAKE_CURRENT_BINARY_DIR} ${SWIG_INTERFACE_FILE}
|
||||
COMMENT "Generating wrapper code file."
|
||||
)
|
||||
endif()
|
||||
|
||||
|
||||
target_include_directories(${LIB_BINDINGS_PYTHON} PUBLIC
|
||||
include_directories(
|
||||
"${RESOURCES_SWIG_DIR}/include"
|
||||
"${CORE_SOURCE_DIR}/include"
|
||||
${PYTHON_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
target_link_libraries(${LIB_BINDINGS_PYTHON} ${PYTHON_LIBRARIES} ${LIB_CORE})
|
||||
swig_add_library(
|
||||
${PACKAGE_NAME}
|
||||
TYPE SHARED
|
||||
LANGUAGE python
|
||||
OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}
|
||||
OUTFILE_DIR ${GENERATED_SRC_DIR}
|
||||
SOURCES ${SWIG_INTERFACE_FILE} ${RESOURCES_SWIG_DIR}/src/${PACKAGE_NAME}.cpp
|
||||
)
|
||||
|
||||
swig_link_libraries(${PACKAGE_NAME} ${PYTHON_LIBRARIES} ${LIB_CORE})
|
||||
|
||||
+4
-9
@@ -2,11 +2,6 @@ cmake_minimum_required (VERSION 2.6)
|
||||
|
||||
set(TEST_CORE "test_core")
|
||||
|
||||
set(INTERFACE_VERSION 0)
|
||||
set(DATABASE_VERSION 23)
|
||||
set(COMMIT_VERSION 1)
|
||||
set(VERSION_STRING "v${INTERFACE_VERSION}_db${DATABASE_VERSION}_c${COMMIT_VERSION}")
|
||||
|
||||
set(GENERATED_INCLUDE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/include")
|
||||
set(GENERATED_VERSION_FILE "${GENERATED_INCLUDE_DIRECTORY}/version.h")
|
||||
|
||||
@@ -15,7 +10,7 @@ configure_file(
|
||||
${GENERATED_VERSION_FILE}
|
||||
)
|
||||
|
||||
set(LIB_SRC_FILES
|
||||
set(LIB_SRC_FILES
|
||||
"${CMAKE_SOURCE_DIR}/external/cpp_sqlite/src/CppSQLite3.cpp"
|
||||
"${CMAKE_SOURCE_DIR}/external/cpp_sqlite/src/sqlite3.c"
|
||||
src/DatabaseStorage.cpp
|
||||
@@ -30,7 +25,7 @@ set(LIB_SRC_FILES
|
||||
src/utility.cpp
|
||||
)
|
||||
|
||||
set(LIB_HDR_FILES
|
||||
set(LIB_HDR_FILES
|
||||
"${CMAKE_SOURCE_DIR}/external/json/include/json.hpp"
|
||||
"${CMAKE_SOURCE_DIR}/external/cpp_sqlite/include/CppSQLite3.h"
|
||||
"${CMAKE_SOURCE_DIR}/external/cpp_sqlite/include/sqlite3.h"
|
||||
@@ -71,7 +66,7 @@ target_include_directories(${LIB_CORE} PUBLIC
|
||||
)
|
||||
|
||||
|
||||
set(TEST_SRC_FILES
|
||||
set(TEST_SRC_FILES
|
||||
test/test.cpp
|
||||
)
|
||||
|
||||
@@ -85,4 +80,4 @@ target_include_directories(${TEST_CORE} PUBLIC
|
||||
"${GENERATED_INCLUDE_DIRECTORY}"
|
||||
)
|
||||
|
||||
target_link_libraries(${TEST_CORE} ${LIB_CORE})
|
||||
target_link_libraries(${TEST_CORE} ${LIB_CORE} "-ldl")
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
#include "utility.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <ctime>
|
||||
#include <fstream>
|
||||
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
|
||||
#define INTERFACE_VERSION @INTERFACE_VERSION@
|
||||
#define DATABASE_VERSION @DATABASE_VERSION@
|
||||
#define COMMIT_VERSION @COMMIT_VERSION@
|
||||
#define PATCH_VERSION @PATCH_VERSION@
|
||||
|
||||
#define VERSION_STRING "@VERSION_STRING@"
|
||||
|
||||
|
||||
Executable
+25
@@ -0,0 +1,25 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd $TRAVIS_BUILD_DIR
|
||||
|
||||
VERSION=$(head -1 build/version.txt)
|
||||
|
||||
if [[ "$PYTHON_BINDING" == "1" ]]; then
|
||||
PYTHON_VERSION=$(python3 -c "import sys; sys.stdout.write(str(sys.version_info.major)); sys.stdout.write(str(sys.version_info.minor));")
|
||||
BUNDLE_NAME=sourcetraildb_python${PYTHON_VERSION}_${VERSION}_${TRAVIS_OS_NAME}_64bit
|
||||
|
||||
mkdir -p $BUNDLE_NAME
|
||||
cp build/bindings_python/sourcetraildb.py $BUNDLE_NAME
|
||||
cp build/bindings_python/_sourcetraildb* $BUNDLE_NAME/_sourcetraildb.so
|
||||
|
||||
zip -r $BUNDLE_NAME $BUNDLE_NAME
|
||||
else
|
||||
BUNDLE_NAME=sourcetraildb_core_${VERSION}_${TRAVIS_OS_NAME}_64bit
|
||||
|
||||
mkdir -p $BUNDLE_NAME/include
|
||||
cp build/core/*.a $BUNDLE_NAME
|
||||
cp core/include/* $BUNDLE_NAME/include
|
||||
cp build/core/include/* $BUNDLE_NAME/include
|
||||
|
||||
zip -r $BUNDLE_NAME $BUNDLE_NAME
|
||||
fi
|
||||
Executable
+10
@@ -0,0 +1,10 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
||||
brew install swig
|
||||
brew link --force swig
|
||||
elif [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
|
||||
sudo apt-get update
|
||||
sudo apt-get install -qq python-dev swig
|
||||
sudo apt-get update -qq
|
||||
fi
|
||||
Executable
+7
@@ -0,0 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -DBUILD_BINDINGS_PYTHON=$PYTHON_BINDING ..
|
||||
make
|
||||
./core/test_core
|
||||
@@ -0,0 +1 @@
|
||||
@VERSION_STRING@
|
||||
Reference in New Issue
Block a user