diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 00000000..6a845e97
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,226 @@
+# Copyright (c) 2016, Linaro Limited
+# All rights reserved.
+# SPDX-License-Identifier:     BSD-3-Clause
+#
+# Please update xxxx for your coverity token and notification email if required
+# pushing to github/master will run make check
+# pushing to github/coverity_scan will also launch a static analysis
+# See https://scan.coverity.com/travis_ci
+
+language: c
+sudo: required
+dist: trusty
+group: deprecated-2017Q2
+env:
+  global:
+    # COVERITY_SCAN_TOKEN
+    # ** specific to your project **
+    # Note:
+    # You should have a github account and travis linked travis account.
+    # The secure key to be filled below is the 685 character long encrypted
+    # token you can find as follow from your coverity dashboard
+    # (at https://scan.coverity.com/dashboard):
+    # Click on the github project (<you>/odp)
+    # Click on "submit build"
+    # Click on "Configure Travis CI"
+    # Look at the COVERITY_SCAN_TOKEN in the env: global: section
+    # of the configuration example.
+    # copy the secure:<key> below
+    #
+    - secure: "xxxx"
+    #
+    # By default Linaro CODECOV_TOKEN token is used. It's ok to use it to see
+    # for individual commit validation. But you you want to track tests history
+    # you need generated new one at https://codecov.io specific for your repo.
+    - CODECOV_TOKEN=8e1c0fd8-62ff-411e-a79f-5839f6662c11
+
+addons:
+        apt:
+                sources:
+                        - ubuntu-toolchain-r-test
+                packages:
+                        - gcc
+                        - clang-3.8
+                        - automake autoconf libtool libssl-dev graphviz mscgen doxygen
+                        - libpcap-dev
+                        - dpkg-cross equivs
+                        - gcc-aarch64-linux-gnu pkg-config-aarch64-linux-gnu libc6-dev-arm64-cross
+                        - gcc-arm-linux-gnueabihf pkg-config-arm-linux-gnueabihf libc6-dev-armhf-cross
+                        - gcc-powerpc-linux-gnu pkg-config-powerpc-linux-gnu libc6-dev-powerpc-cross
+#        coverity_scan:
+#                project:
+#                        name: "$TRAVIS_REPO_SLUG"
+#                        notification_email: xxxx
+#                        build_command_prepend: "./bootstrap && ./configure --enable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-user-guides --enable-test-perf-proc --enable-test-example"
+#                        build_command:   "make"
+#                        branch_pattern: coverity_scan
+
+compiler:
+        - gcc
+        - clang-3.8
+
+env:
+        - CONF=""
+        - CONF="--enable-schedule-sp"
+
+before_install:
+#       Install cunit for the validation tests because distro version is too old and fails C99 compile
+        - sudo apt-get remove libcunit1-dev libcunit1
+        - export CUNIT_VERSION=2.1-3
+        - curl -sSOL https://github.com/Linaro/libcunit/releases/download/${CUNIT_VERSION}/CUnit-${CUNIT_VERSION}.tar.bz2
+        - tar -jxf *.bz2
+        - pushd CUnit*
+        - libtoolize --force --copy
+        - aclocal
+        - autoheader
+        - automake --add-missing --include-deps --copy
+        - autoconf
+        - ./configure --enable-debug --enable-automated --enable-basic --enable-console --enable-examples --enable-test $CROSS || cat config.log
+        - make
+        - sudo make install
+        - popd
+        - export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"
+
+install:
+        - echo 1000 | sudo tee /proc/sys/vm/nr_hugepages
+        - sudo mkdir -p /mnt/huge
+        - sudo mount -t hugetlbfs nodev /mnt/huge
+
+        - sudo apt-get -qq update
+        - sudo apt-get install linux-headers-`uname -r`
+        - gem install asciidoctor
+        - PATH=${PATH//:\.\/node_modules\/\.bin/}
+
+#	DPDK pktio
+        - TARGET=${TARGET:-"x86_64-native-linuxapp-gcc"}
+        - git -c advice.detachedHead=false clone -q --depth=1 --single-branch --branch=v16.04 http://dpdk.org/git/dpdk dpdk
+        - pushd dpdk
+        - git log --oneline --decorate
+        - make config T=${TARGET} O=${TARGET}
+        - pushd ${TARGET}
+        - sed -ri 's,(CONFIG_RTE_LIBRTE_PMD_PCAP=).*,\1y,' .config
+        - popd
+        - make install T=${TARGET} EXTRA_CFLAGS="-fPIC"
+        - popd
+
+#	Netmap pktio
+        - git -c advice.detachedHead=false clone -q --depth=1 --single-branch --branch=v11.2 https://github.com/luigirizzo/netmap.git
+        - pushd netmap/LINUX
+        - ./configure
+        - make
+        - sudo insmod ./netmap.ko
+        - popd
+
+script:
+        - ./bootstrap
+        - ./configure --prefix=$HOME/odp-install  --enable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-user-guides --enable-test-perf-proc --enable-test-example --with-dpdk-path=`pwd`/dpdk/${TARGET} --with-netmap-path=`pwd`/netmap $CONF
+        - make -j $(nproc)
+        - make install
+        - echo "Checking linking and run from install..."
+        - pushd $HOME
+        - echo "Dynamic link.."
+        - ${CC} ${OLDPWD}/example/hello/odp_hello.c -o odp_hello_inst -I${HOME}/odp-install/include -L${HOME}/odp-install/lib -lodp-linux -L${OLDPWD}/dpdk/x86_64-native-linuxapp-gcc/lib -lrt -ldpdk -lpthread -lcrypto -lpcap -ldl
+        - LD_LIBRARY_PATH="${HOME}/odp-install/lib:$LD_LIBRARY_PATH" ./odp_hello_inst
+        - echo "Static link.."
+        - ${CC} ${OLDPWD}/example/hello/odp_hello.c -o odp_hello_inst -I${HOME}/odp-install/include -L${HOME}/odp-install/lib -lodp-linux -L${OLDPWD}/dpdk/x86_64-native-linuxapp-gcc/lib -lrt -ldpdk -lpthread -lcrypto -lpcap -ldl -static
+        - ./odp_hello_inst
+        - popd
+        - sudo git clean -f -d -x
+        - ./bootstrap
+        - ./configure --prefix=$HOME/odp-install  --enable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-user-guides --enable-test-perf-proc --enable-test-example $CONF
+        - make -j $(nproc)
+        - sudo LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH" make check
+
+jobs:
+        include:
+                - stage: test
+                  compiler: aarch64-linux-gnu-gcc
+                  env: TEST="aarch64-linux-gnu" CROSS="--host=aarch64-linux-gnu --prefix=/usr/aarch64-linux-gnu"
+                  install: true
+                  script:
+                          - mkdir cross
+                          - pushd cross
+                            # one can not include colon in the command or bad things will happen, so mimic it
+                          - env echo -e 'Provides\x3a multiarch-support, debconf, debconf-2.0' > dummy
+                          - equivs-build -a arm64 dummy
+                          - wget
+                            http://ports.ubuntu.com/pool/main/o/openssl/libssl-dev_1.0.1f-1ubuntu2.22_arm64.deb
+                            http://ports.ubuntu.com/pool/main/o/openssl/libssl1.0.0_1.0.1f-1ubuntu2.22_arm64.deb
+                            http://ports.ubuntu.com/pool/main/z/zlib/zlib1g-dev_1.2.8.dfsg-1ubuntu1_arm64.deb
+                            http://ports.ubuntu.com/pool/main/z/zlib/zlib1g_1.2.8.dfsg-1ubuntu1_arm64.deb
+                          - sudo dpkg-cross -i -M -A -a arm64 *.deb
+                          - popd
+                          - ./bootstrap
+                          - ./configure --prefix=$HOME/odp-install $CROSS
+                            --disable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-test-perf-proc --enable-test-example
+                          - make -j $(nproc)
+                - stage: test
+                  compiler: arm-linux-gnueabihf-gcc
+                  env: TEST="arm-linux-gnueabihf" CROSS="--host=arm-linux-gnueabihf --prefix=/usr/arm-linux-gnueabihf"
+                  install: true
+                  script:
+                          - mkdir cross
+                          - pushd cross
+                            # one can not include colon in the command or bad things will happen, so mimic it
+                          - env echo -e 'Provides\x3a multiarch-support, debconf, debconf-2.0' > dummy
+                          - equivs-build -a armhf dummy
+                          - wget
+                            http://ports.ubuntu.com/pool/main/o/openssl/libssl-dev_1.0.1f-1ubuntu2.22_armhf.deb
+                            http://ports.ubuntu.com/pool/main/o/openssl/libssl1.0.0_1.0.1f-1ubuntu2.22_armhf.deb
+                            http://ports.ubuntu.com/pool/main/z/zlib/zlib1g-dev_1.2.8.dfsg-1ubuntu1_armhf.deb
+                            http://ports.ubuntu.com/pool/main/z/zlib/zlib1g_1.2.8.dfsg-1ubuntu1_armhf.deb
+                          - sudo dpkg-cross -i -M -A -a armhf *.deb
+                          - popd
+                          - ./bootstrap
+                          - ./configure --prefix=$HOME/odp-install $CROSS
+                            --disable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-test-perf-proc --enable-test-example
+                          - make -j $(nproc)
+                - stage: test
+                  compiler: powerpc-linux-gnu-gcc
+                  env: TEST="powerpc-linux-gnu" CROSS="--host=powerpc-linux-gnu --prefix=/usr/powerpc-linux-gnu"
+                  install: true
+                  script:
+                          - mkdir cross
+                          - pushd cross
+                            # one can not include colon in the command or bad things will happen, so mimic it
+                          - env echo -e 'Provides\x3a multiarch-support, debconf, debconf-2.0' > dummy
+                          - equivs-build -a powerpc dummy
+                          - wget
+                            http://ports.ubuntu.com/pool/main/o/openssl/libssl-dev_1.0.1f-1ubuntu2.22_powerpc.deb
+                            http://ports.ubuntu.com/pool/main/o/openssl/libssl1.0.0_1.0.1f-1ubuntu2.22_powerpc.deb
+                            http://ports.ubuntu.com/pool/main/z/zlib/zlib1g-dev_1.2.8.dfsg-1ubuntu1_powerpc.deb
+                            http://ports.ubuntu.com/pool/main/z/zlib/zlib1g_1.2.8.dfsg-1ubuntu1_powerpc.deb
+                          - sudo dpkg-cross -i -M -A -a powerpc *.deb
+                          - popd
+                          - ./bootstrap
+                          - ./configure --prefix=$HOME/odp-install $CROSS
+                            --disable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-test-perf-proc --enable-test-example
+                          - make -j $(nproc)
+                - stage: test
+                  env: TEST=distcheck
+                  compiler: gcc
+                  script:
+                          - ./bootstrap
+                          - ./configure --prefix=$HOME/odp-install --enable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-user-guides --enable-test-perf-proc --enable-test-example
+                          - sudo PATH="$PATH" LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH" make distcheck
+                - stage: test
+                  env: TEST=doxygen
+                  compiler: gcc
+                  script:
+                          # doxygen does not trap on warnings, check for them here.
+                          - ./bootstrap
+                          - ./configure
+                          - make doxygen-doc |tee doxygen.log
+                          - fgrep -rvq warning ./doxygen.log
+                - stage: test
+                  env: TEST=checkpatch
+                  compiler: gcc
+                  script:
+                          - echo ${TRAVIS_COMMIT_RANGE};
+                          - ODP_PATCHES=`echo ${TRAVIS_COMMIT_RANGE} | sed 's/\.//'`;
+                          - if [ -z "${ODP_PATCHES}" ]; then env; exit 1; fi;
+                          - ./scripts/ci-checkpatches.sh ${ODP_PATCHES};
+
+after_failure:
+  - cat config.log
+  - find . -name 'test-suite.log' -execdir grep -il "FAILED" {} \; -exec echo {} \; -exec cat {} \;
diff --git a/scripts/ci-checkpatches.sh b/scripts/ci-checkpatches.sh
new file mode 100755
index 00000000..cb1c4e65
--- /dev/null
+++ b/scripts/ci-checkpatches.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+PATCHES=$1
+echo "Run checkpatch for ${PATCHES}"
+# Generate patches provided with $1.
+# In case of force push and range is broken
+# validate only the latest commit if it's not merge commit.
+git format-patch ${PATCHES}
+if [ $? -ne 0 ]; then
+	git show --summary HEAD| grep -q '^Merge:';
+	if [ $? -ne 0 ]; then
+		git format-patch HEAD^;
+		perl ./scripts/checkpatch.pl *.patch;
+	fi;
+else
+	perl ./scripts/checkpatch.pl *.patch;
+fi
