Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 35 additions & 11 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,29 +1,53 @@
os:
- linux
# Use container-based infrastructure
sudo: required
services:
- docker

language: cpp

os:
- linux

compiler:
- gcc
- clang

env:
global:
- SEQUENCEPARSER_BUILD=${TRAVIS_BUILD_DIR}/build-sequenceparser
- SEQUENCEPARSER_INSTALL=${TRAVIS_BUILD_DIR}/install-sequenceparser
- CI_NODE_TOTAL=2

# This results in a 2×2 build matrix.
# Where the variables are: os / compiler

addons:
apt:
sources: ['boost-latest', 'kalakris-cmake']
packages:
- cmake
- swig
- libboost1.55-all-dev
- python-dev
- python-nose

cache:
# Caching Ubuntu packages
apt: true

before_script:
- env | sort
- date -u
- uname -a
- export J='-j3'

- sudo add-apt-repository -y ppa:boost-latest/ppa
- sudo apt-get update -qq
- sudo apt-get install -qq cmake swig swig2.0 libboost1.55-all-dev python-dev default-jdk python-nose

script:
# build
- mkdir build && cd build
- cmake .. -DCMAKE_INSTALL_PREFIX=`pwd`/../install -DSEQUENCEPARSER_PYTHON_VERSION=2.7
- make $J
- mkdir ${SEQUENCEPARSER_BUILD} && cd ${SEQUENCEPARSER_BUILD}
- cmake .. -DCMAKE_INSTALL_PREFIX=${SEQUENCEPARSER_INSTALL} -DSEQUENCEPARSER_PYTHON_VERSION=2.7
- make
- make install

# tests
- cd ${TRAVIS_BUILD_DIR}
- export PYTHONPATH=$PYTHONPATH:`pwd`/install/lib/python2.7/site-packages
- export PYTHONPATH=$PYTHONPATH:${SEQUENCEPARSER_INSTALL}/lib/python2.7/site-packages
- nosetests pyTest
34 changes: 24 additions & 10 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,29 @@ cmake_minimum_required(VERSION 2.8)

project(sequenceParser)

# Set sequenceParser versions
set(SEQUENCEPARSER_VERSION_MAJOR "1")
set(SEQUENCEPARSER_VERSION_MINOR "0")
set(SEQUENCEPARSER_VERSION_MICRO "2")
set(SEQUENCEPARSER_VERSION ${SEQUENCEPARSER_VERSION_MAJOR}.${SEQUENCEPARSER_VERSION_MINOR}.${SEQUENCEPARSER_VERSION_MICRO})
# Get SequenceParser versions
# SEQUENCEPARSER_VERSION_MAJOR
# SEQUENCEPARSER_VERSION_MINOR
# SEQUENCEPARSER_VERSION_MICRO
# SEQUENCEPARSER_VERSION
file(STRINGS "src/common.hpp" _avtranscoder_VERSION_HPP_CONTENTS REGEX "#define SEQUENCEPARSER_VERSION_")
foreach(v MAJOR MINOR MICRO)
if("${_avtranscoder_VERSION_HPP_CONTENTS}" MATCHES "#define SEQUENCEPARSER_VERSION_${v} ([0-9]+)")
set(SEQUENCEPARSER_VERSION_${v} "${CMAKE_MATCH_1}")
else()
set(SEQUENCEPARSER_RETRIEVE_VERSION_FAILED 1)
endif()
endforeach()
unset(_avtranscoder_VERSION_HPP_CONTENTS)

set(SEQUENCEPARSER_VERSION "${SEQUENCEPARSER_VERSION_MAJOR}.${SEQUENCEPARSER_VERSION_MINOR}.${SEQUENCEPARSER_VERSION_MICRO}")

if(SEQUENCEPARSER_RETRIEVE_VERSION_FAILED)
message(SEND_ERROR "Failed to retrieve SequenceParser version: ${SEQUENCEPARSER_VERSION}")
else()
message(STATUS "SequenceParser version is ${SEQUENCEPARSER_VERSION}")
endif()

# Define sequenceParser versions
add_definitions(-DSEQUENCEPARSER_VERSION_MAJOR=${SEQUENCEPARSER_VERSION_MAJOR})
add_definitions(-DSEQUENCEPARSER_VERSION_MINOR=${SEQUENCEPARSER_VERSION_MINOR})
add_definitions(-DSEQUENCEPARSER_VERSION_MICRO=${SEQUENCEPARSER_VERSION_MICRO})

# Diplay commands being ran by CMake
set(CMAKE_VERBOSE_MAKEFILE OFF)
Expand All @@ -24,8 +37,9 @@ if(MSVC)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
else()
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -fPIC -pg -g")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -fPIC -g")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fPIC -O3")
endif()

# Build library
add_subdirectory(src)
20 changes: 10 additions & 10 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,11 @@ if(NOT Boost_FOUND)
message(FATAL_ERROR "please set BOOST_ROOT environment variable to a proper boost install")
endif(NOT Boost_FOUND)

# Include sequenceParser and boost
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${Boost_INCLUDE_DIRS})

# Create 'sequenceparser' static lib
add_library(sequenceparser-static STATIC ${SEQUENCEPARSER_SRC_FILES})
set_target_properties(sequenceparser-static PROPERTIES LINKER_LANGUAGE CXX)
set_target_properties(sequenceparser-static PROPERTIES OUTPUT_NAME sequenceParser)
target_include_directories(sequenceparser-static PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${Boost_INCLUDE_DIRS})
target_link_libraries(sequenceparser-static ${Boost_LIBRARIES})

# Create 'sequenceparser' shared lib
Expand All @@ -23,6 +21,7 @@ set_target_properties(sequenceparser-shared PROPERTIES LINKER_LANGUAGE CXX)
set_target_properties(sequenceparser-shared PROPERTIES OUTPUT_NAME sequenceParser)
set_target_properties(sequenceparser-shared PROPERTIES SOVERSION ${SEQUENCEPARSER_VERSION_MAJOR})
set_target_properties(sequenceparser-shared PROPERTIES VERSION ${SEQUENCEPARSER_VERSION})
target_include_directories(sequenceparser-shared PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${Boost_INCLUDE_DIRS})
target_link_libraries(sequenceparser-shared ${Boost_LIBRARIES})

### Install sequenceParser libs and include
Expand All @@ -47,13 +46,18 @@ if(SWIG_FOUND)
set(SEQUENCEPARSER_BINDING_FILE "sequenceParser.i")
set_source_files_properties(${SEQUENCEPARSER_BINDING_FILE} PROPERTIES CPLUSPLUS ON)

# Swig flags
set(CMAKE_SWIG_FLAGS -c++ -fcompact -small -O -Wall)

### PYTHON BINDING
find_package(PythonLibs ${SEQUENCEPARSER_PYTHON_VERSION})
if(PYTHONLIBS_FOUND)
include_directories(${PYTHON_INCLUDE_PATH})

# Swig flags
set(CMAKE_SWIG_FLAGS -c++ -fcompact)
if(${PYTHONLIBS_VERSION_STRING} VERSION_GREATER "3")
set(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} -py3)
endif()

# Create '_sequenceparser' shared lib (python)
swig_add_module(sequenceparser-py python ${SEQUENCEPARSER_BINDING_FILE})
Expand All @@ -73,11 +77,7 @@ if(SWIG_FOUND)
swig_link_libraries(sequenceparser-py sequenceparser-shared ${PYTHON_LIBRARIES})

# Get path to install python binding
if(PYTHONLIBS_VERSION_STRING) # CMake >=2.8.11
string(SUBSTRING ${PYTHONLIBS_VERSION_STRING} 0 3 PYTHON_VERSION)
else()
set(PYTHON_VERSION ${SEQUENCEPARSER_PYTHON_VERSION})
endif()
string(SUBSTRING ${PYTHONLIBS_VERSION_STRING} 0 3 PYTHON_VERSION)
set(SEQUENCEPARSER_PYTHON_MODULE_OUTPUT_DIR "lib/python${PYTHON_VERSION}/site-packages/pySequenceParser/")

# Install python interface
Expand All @@ -103,7 +103,7 @@ if(SWIG_FOUND)
include_directories(${JNI_INCLUDE_DIRS})

# Swig flags
set(CMAKE_SWIG_FLAGS -c++ -fcompact -package org.sequenceparser)
set(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} -package org.sequenceparser)

# Create 'sequenceparser-java' shared lib
swig_add_module(sequenceparser-java java ${SEQUENCEPARSER_BINDING_FILE})
Expand Down
4 changes: 4 additions & 0 deletions src/common.hpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
#ifndef _SEQUENCE_PARSER_COMMON_DEFINITIONS_HPP
#define _SEQUENCE_PARSER_COMMON_DEFINITIONS_HPP

#define SEQUENCEPARSER_VERSION_MAJOR 1
#define SEQUENCEPARSER_VERSION_MINOR 1
#define SEQUENCEPARSER_VERSION_MICRO 0

#include <string>
#include <cstddef>

Expand Down