Skip to content

Commit 50e6f42

Browse files
committed
Merge pull request #44 from mikrosimage/cmake_defineVersionsInHeader
CMake: define versions in header
2 parents cfaa3ac + ae78a58 commit 50e6f42

4 files changed

Lines changed: 73 additions & 31 deletions

File tree

.travis.yml

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,53 @@
1-
os:
2-
- linux
1+
# Use container-based infrastructure
2+
sudo: required
3+
services:
4+
- docker
35

46
language: cpp
57

8+
os:
9+
- linux
10+
611
compiler:
712
- gcc
813
- clang
914

15+
env:
16+
global:
17+
- SEQUENCEPARSER_BUILD=${TRAVIS_BUILD_DIR}/build-sequenceparser
18+
- SEQUENCEPARSER_INSTALL=${TRAVIS_BUILD_DIR}/install-sequenceparser
19+
- CI_NODE_TOTAL=2
20+
21+
# This results in a 2×2 build matrix.
22+
# Where the variables are: os / compiler
23+
24+
addons:
25+
apt:
26+
sources: ['boost-latest', 'kalakris-cmake']
27+
packages:
28+
- cmake
29+
- swig
30+
- libboost1.55-all-dev
31+
- python-dev
32+
- python-nose
33+
34+
cache:
35+
# Caching Ubuntu packages
36+
apt: true
37+
1038
before_script:
39+
- env | sort
1140
- date -u
1241
- uname -a
13-
- export J='-j3'
14-
15-
- sudo add-apt-repository -y ppa:boost-latest/ppa
16-
- sudo apt-get update -qq
17-
- sudo apt-get install -qq cmake swig swig2.0 libboost1.55-all-dev python-dev default-jdk python-nose
1842

1943
script:
2044
# build
21-
- mkdir build && cd build
22-
- cmake .. -DCMAKE_INSTALL_PREFIX=`pwd`/../install -DSEQUENCEPARSER_PYTHON_VERSION=2.7
23-
- make $J
45+
- mkdir ${SEQUENCEPARSER_BUILD} && cd ${SEQUENCEPARSER_BUILD}
46+
- cmake .. -DCMAKE_INSTALL_PREFIX=${SEQUENCEPARSER_INSTALL} -DSEQUENCEPARSER_PYTHON_VERSION=2.7
47+
- make
2448
- make install
2549

2650
# tests
2751
- cd ${TRAVIS_BUILD_DIR}
28-
- export PYTHONPATH=$PYTHONPATH:`pwd`/install/lib/python2.7/site-packages
52+
- export PYTHONPATH=$PYTHONPATH:${SEQUENCEPARSER_INSTALL}/lib/python2.7/site-packages
2953
- nosetests pyTest

CMakeLists.txt

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,29 @@ cmake_minimum_required(VERSION 2.8)
22

33
project(sequenceParser)
44

5-
# Set sequenceParser versions
6-
set(SEQUENCEPARSER_VERSION_MAJOR "1")
7-
set(SEQUENCEPARSER_VERSION_MINOR "0")
8-
set(SEQUENCEPARSER_VERSION_MICRO "2")
9-
set(SEQUENCEPARSER_VERSION ${SEQUENCEPARSER_VERSION_MAJOR}.${SEQUENCEPARSER_VERSION_MINOR}.${SEQUENCEPARSER_VERSION_MICRO})
5+
# Get SequenceParser versions
6+
# SEQUENCEPARSER_VERSION_MAJOR
7+
# SEQUENCEPARSER_VERSION_MINOR
8+
# SEQUENCEPARSER_VERSION_MICRO
9+
# SEQUENCEPARSER_VERSION
10+
file(STRINGS "src/common.hpp" _avtranscoder_VERSION_HPP_CONTENTS REGEX "#define SEQUENCEPARSER_VERSION_")
11+
foreach(v MAJOR MINOR MICRO)
12+
if("${_avtranscoder_VERSION_HPP_CONTENTS}" MATCHES "#define SEQUENCEPARSER_VERSION_${v} ([0-9]+)")
13+
set(SEQUENCEPARSER_VERSION_${v} "${CMAKE_MATCH_1}")
14+
else()
15+
set(SEQUENCEPARSER_RETRIEVE_VERSION_FAILED 1)
16+
endif()
17+
endforeach()
18+
unset(_avtranscoder_VERSION_HPP_CONTENTS)
19+
20+
set(SEQUENCEPARSER_VERSION "${SEQUENCEPARSER_VERSION_MAJOR}.${SEQUENCEPARSER_VERSION_MINOR}.${SEQUENCEPARSER_VERSION_MICRO}")
21+
22+
if(SEQUENCEPARSER_RETRIEVE_VERSION_FAILED)
23+
message(SEND_ERROR "Failed to retrieve SequenceParser version: ${SEQUENCEPARSER_VERSION}")
24+
else()
25+
message(STATUS "SequenceParser version is ${SEQUENCEPARSER_VERSION}")
26+
endif()
1027

11-
# Define sequenceParser versions
12-
add_definitions(-DSEQUENCEPARSER_VERSION_MAJOR=${SEQUENCEPARSER_VERSION_MAJOR})
13-
add_definitions(-DSEQUENCEPARSER_VERSION_MINOR=${SEQUENCEPARSER_VERSION_MINOR})
14-
add_definitions(-DSEQUENCEPARSER_VERSION_MICRO=${SEQUENCEPARSER_VERSION_MICRO})
1528

1629
# Diplay commands being ran by CMake
1730
set(CMAKE_VERBOSE_MAKEFILE OFF)
@@ -24,8 +37,9 @@ if(MSVC)
2437
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
2538
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
2639
else()
27-
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -fPIC -pg -g")
40+
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -fPIC -g")
2841
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fPIC -O3")
2942
endif()
3043

44+
# Build library
3145
add_subdirectory(src)

src/CMakeLists.txt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,11 @@ if(NOT Boost_FOUND)
88
message(FATAL_ERROR "please set BOOST_ROOT environment variable to a proper boost install")
99
endif(NOT Boost_FOUND)
1010

11-
# Include sequenceParser and boost
12-
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${Boost_INCLUDE_DIRS})
13-
1411
# Create 'sequenceparser' static lib
1512
add_library(sequenceparser-static STATIC ${SEQUENCEPARSER_SRC_FILES})
1613
set_target_properties(sequenceparser-static PROPERTIES LINKER_LANGUAGE CXX)
1714
set_target_properties(sequenceparser-static PROPERTIES OUTPUT_NAME sequenceParser)
15+
target_include_directories(sequenceparser-static PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${Boost_INCLUDE_DIRS})
1816
target_link_libraries(sequenceparser-static ${Boost_LIBRARIES})
1917

2018
# Create 'sequenceparser' shared lib
@@ -23,6 +21,7 @@ set_target_properties(sequenceparser-shared PROPERTIES LINKER_LANGUAGE CXX)
2321
set_target_properties(sequenceparser-shared PROPERTIES OUTPUT_NAME sequenceParser)
2422
set_target_properties(sequenceparser-shared PROPERTIES SOVERSION ${SEQUENCEPARSER_VERSION_MAJOR})
2523
set_target_properties(sequenceparser-shared PROPERTIES VERSION ${SEQUENCEPARSER_VERSION})
24+
target_include_directories(sequenceparser-shared PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${Boost_INCLUDE_DIRS})
2625
target_link_libraries(sequenceparser-shared ${Boost_LIBRARIES})
2726

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

49+
# Swig flags
50+
set(CMAKE_SWIG_FLAGS -c++ -fcompact -small -O -Wall)
51+
5052
### PYTHON BINDING
5153
find_package(PythonLibs ${SEQUENCEPARSER_PYTHON_VERSION})
5254
if(PYTHONLIBS_FOUND)
5355
include_directories(${PYTHON_INCLUDE_PATH})
5456

5557
# Swig flags
56-
set(CMAKE_SWIG_FLAGS -c++ -fcompact)
58+
if(${PYTHONLIBS_VERSION_STRING} VERSION_GREATER "3")
59+
set(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} -py3)
60+
endif()
5761

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

7579
# Get path to install python binding
76-
if(PYTHONLIBS_VERSION_STRING) # CMake >=2.8.11
77-
string(SUBSTRING ${PYTHONLIBS_VERSION_STRING} 0 3 PYTHON_VERSION)
78-
else()
79-
set(PYTHON_VERSION ${SEQUENCEPARSER_PYTHON_VERSION})
80-
endif()
80+
string(SUBSTRING ${PYTHONLIBS_VERSION_STRING} 0 3 PYTHON_VERSION)
8181
set(SEQUENCEPARSER_PYTHON_MODULE_OUTPUT_DIR "lib/python${PYTHON_VERSION}/site-packages/pySequenceParser/")
8282

8383
# Install python interface
@@ -103,7 +103,7 @@ if(SWIG_FOUND)
103103
include_directories(${JNI_INCLUDE_DIRS})
104104

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

108108
# Create 'sequenceparser-java' shared lib
109109
swig_add_module(sequenceparser-java java ${SEQUENCEPARSER_BINDING_FILE})

src/common.hpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
#ifndef _SEQUENCE_PARSER_COMMON_DEFINITIONS_HPP
22
#define _SEQUENCE_PARSER_COMMON_DEFINITIONS_HPP
33

4+
#define SEQUENCEPARSER_VERSION_MAJOR 1
5+
#define SEQUENCEPARSER_VERSION_MINOR 1
6+
#define SEQUENCEPARSER_VERSION_MICRO 0
7+
48
#include <string>
59
#include <cstddef>
610

0 commit comments

Comments
 (0)