Skip to content

Commit

Permalink
further development of buildsystem
Browse files Browse the repository at this point in the history
  • Loading branch information
prusnak committed Jul 16, 2014
1 parent 43a0922 commit 6561221
Show file tree
Hide file tree
Showing 9 changed files with 55 additions and 29 deletions.
2 changes: 1 addition & 1 deletion .gitignore
@@ -1,2 +1,2 @@
build/
lib/
build-*/
11 changes: 7 additions & 4 deletions CMakeLists.txt
Expand Up @@ -23,12 +23,14 @@ add_executable(trezord

set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")

set(BUILD_SHARED_LIBS off)

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
"${CMAKE_SOURCE_DIR}/cmake/modules"
"${CMAKE_SOURCE_DIR}/lib/cpp-netlib")
"${CMAKE_BINARY_DIR}/lib/cpp-netlib")

SET(Boost_USE_STATIC_LIBS ON)
find_package(Boost 1.54.0 REQUIRED thread system log unit_test_framework)
set(Boost_USE_STATIC_LIBS on)
find_package(Boost 1.53.0 REQUIRED thread system log unit_test_framework)
find_package(Protobuf 2.5.0 REQUIRED)
find_package(cppnetlib REQUIRED)
find_package(jsoncpp REQUIRED)
Expand All @@ -47,7 +49,8 @@ target_link_libraries(trezord
${PROTOBUF_LIBRARIES}
${CPPNETLIB_LIBRARIES}
${JSONCPP_LIBRARIES}
hidapi)
hidapi
pthread)

if(BUILD_TESTS)

Expand Down
37 changes: 27 additions & 10 deletions build.sh
Expand Up @@ -4,22 +4,39 @@ set -e

cd $(dirname $0)

TARGET=$1
BUILDDIR=build${TARGET:+-$TARGET}

case "$TARGET" in
lin32 )
CMAKE_FLAGS="-DCMAKE_C_FLAGS=-m32 -DCMAKE_CXX_FLAGS=-m32"
;;
win32 )
TARGET_ARCH=i686-w64-mingw32
CMAKE_FLAGS="-DCMAKE_SYSTEM_NAME=Windows -DCMAKE_C_COMPILER=${TARGET_ARCH}-gcc -DCMAKE_CXX_COMPILER=${TARGET_ARCH}-g++ -DCMAKE_RC_COMPILER_INIT=${TARGET_ARCH}-windres -DCMAKE_SHARED_LIBRARY_LINK_C_FLAGS=''"
;;
win64 )
TARGET_ARCH=x86_64-w64-mingw32
CMAKE_FLAGS="-DCMAKE_SYSTEM_NAME=Windows -DCMAKE_C_COMPILER=${TARGET_ARCH}-gcc -DCMAKE_CXX_COMPILER=${TARGET_ARCH}-g++ -DCMAKE_RC_COMPILER_INIT=${TARGET_ARCH}-windres -DCMAKE_SHARED_LIBRARY_LINK_C_FLAGS=''"
;;
esac

# Compile cpp-netlib
if [ \! -d lib/cpp-netlib ]; then
mkdir -p lib/cpp-netlib && cd lib/cpp-netlib
cmake ../../vendor/cpp-netlib
if [ \! -d $BUILDDIR/lib/cpp-netlib ]; then
mkdir -p $BUILDDIR/lib/cpp-netlib && cd $BUILDDIR/lib/cpp-netlib
cmake $CMAKE_FLAGS ../../../vendor/cpp-netlib
make
cd ../..
cd ../../..
fi

# Compile jsoncpp
if [ \! -d lib/jsoncpp ]; then
mkdir -p lib/jsoncpp && cd lib/jsoncpp
cmake ../../vendor/jsoncpp
if [ \! -d $BUILDDIR/lib/jsoncpp ]; then
mkdir -p $BUILDDIR/lib/jsoncpp && cd $BUILDDIR/lib/jsoncpp
cmake $CMAKE_FLAGS ../../../vendor/jsoncpp
make
cd ../..
cd ../../..
fi

mkdir -p build && cd build
cmake ..
mkdir -p $BUILDDIR && cd $BUILDDIR
cmake $CMAKE_FLAGS ..
make
2 changes: 1 addition & 1 deletion cmake/modules/Findjsoncpp.cmake
Expand Up @@ -5,7 +5,7 @@
find_path(JSONCPP_INCLUDE_DIR json
HINTS "${CMAKE_SOURCE_DIR}/vendor/jsoncpp/include")
find_library(JSONCPP_LIBRARY NAMES json
HINTS "${CMAKE_SOURCE_DIR}/lib/jsoncpp/lib")
HINTS "${CMAKE_BINARY_DIR}/lib/jsoncpp/lib")

set(JSONCPP_LIBRARIES ${JSONCPP_LIBRARY})
set(JSONCPP_INCLUDE_DIRS ${JSONCPP_INCLUDE_DIR})
Expand Down
18 changes: 9 additions & 9 deletions release/Dockerfile
@@ -1,19 +1,19 @@
# initialize from the image

FROM ubuntu:14.04
FROM centos:centos7

# update package repositories

RUN apt-get update

# install build tools

RUN apt-get install -y build-essential cmake git pkg-config
RUN rpm -Uvh http://download.fedoraproject.org/pub/epel/beta/7/x86_64/epel-release-7-0.2.noarch.rpm
RUN yum install -y cmake gcc gcc-c++ git make pkgconfig wget

# install dependencies for Linux build

RUN apt-get install -y libboost-test1.54-dev libboost-system1.54-dev libboost-regex1.54-dev libboost-date-time1.54-dev libboost-thread1.54-dev libboost-filesystem1.54-dev libboost-program-options1.54-dev libboost-chrono1.54-dev libboost-atomic1.54-dev libprotobuf-dev libssl-dev libusb-1.0-0-dev
RUN yum install -y boost-static libusbx-devel protobuf-devel protobuf-static
RUN yum install -y boost-static.i686 libusbx-devel.i686
RUN yum install -y glibc-devel.i686 libgcc.i686 libstdc++.i686 zlib.i686

# install dependencies for Windows build
# install 32bit protobuf packages from Fedora Koji until 32bit build of CentOS is ready

RUN apt-get install -y mingw-w64
RUN wget https://kojipkgs.fedoraproject.org/packages/protobuf/2.5.0/6.fc21/i686/protobuf-2.5.0-6.fc21.i686.rpm https://kojipkgs.fedoraproject.org/packages/protobuf/2.5.0/6.fc21/i686/protobuf-devel-2.5.0-6.fc21.i686.rpm https://kojipkgs.fedoraproject.org/packages/protobuf/2.5.0/6.fc21/i686/protobuf-static-2.5.0-6.fc21.i686.rpm https://kojipkgs.fedoraproject.org/packages/protobuf/2.5.0/6.fc21/i686/protobuf-compiler-2.5.0-6.fc21.i686.rpm
RUN rpm -ivh protobuf-2.5.0-6.fc21.i686.rpm protobuf-devel-2.5.0-6.fc21.i686.rpm protobuf-static-2.5.0-6.fc21.i686.rpm protobuf-compiler-2.5.0-6.fc21.i686.rpm
4 changes: 3 additions & 1 deletion release/release-lin32.sh
@@ -1,2 +1,4 @@
#!/bin/sh

IMAGETAG=trezord-build-env
docker build -t $IMAGETAG .
docker run -t -v $(pwd)/..:/trezord-src $IMAGETAG /trezord-src/build.sh lin32
2 changes: 1 addition & 1 deletion release/release-lin64.sh
@@ -1,4 +1,4 @@
#!/bin/sh
IMAGETAG=trezord-build-env
docker build -t $IMAGETAG .
docker run -i -t -v $(pwd)/..:/trezord-src $IMAGETAG /trezord-src/build.sh
docker run -t -v $(pwd)/..:/trezord-src $IMAGETAG /trezord-src/build.sh lin64
4 changes: 3 additions & 1 deletion release/release-win32.sh
@@ -1,2 +1,4 @@
#!/bin/sh

IMAGETAG=trezord-build-env
docker build -t $IMAGETAG .
docker run -t -v $(pwd)/..:/trezord-src $IMAGETAG /trezord-src/build.sh win32
4 changes: 3 additions & 1 deletion release/release-win64.sh
@@ -1,2 +1,4 @@
#!/bin/sh

IMAGETAG=trezord-build-env
docker build -t $IMAGETAG .
docker run -t -v $(pwd)/..:/trezord-src $IMAGETAG /trezord-src/build.sh win64

0 comments on commit 6561221

Please sign in to comment.