From f8e2766d28be61811162911c52cee9f0a9f74cf5 Mon Sep 17 00:00:00 2001 From: Takatoshi Kondo Date: Sun, 26 Oct 2014 08:45:22 +0900 Subject: [PATCH] Added a 32bit environment tests for travis-ci. --- .travis.yml | 31 ++++++++++++++++++------------- CMakeLists.txt | 13 +++++++++++++ ci/build_autotools.sh | 14 ++++++++++++-- ci/build_cmake.sh | 40 ++++++++++++++++++++++++++-------------- 4 files changed, 69 insertions(+), 29 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9475e13e..78ea246e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,25 +5,30 @@ compiler: - clang - gcc before_install: -# We need this line to have g++4.8 available in apt - sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test + - sudo add-apt-repository -y ppa:h-rayflood/llvm - sudo apt-get update -qq - sudo apt-get update - sudo apt-get install valgrind - - sudo apt-get install libgtest-dev - - "cd /usr/src/gtest && sudo cmake . && sudo cmake --build . && sudo mv libg* /usr/local/lib/ ; cd -" install: - - sudo apt-get install -qq gcc-4.8 g++-4.8 -# We want to compile with g++ 4.8 when rather than the default g++ + - sudo apt-get install -qq gcc-4.8-multilib g++-4.8-multilib + - sudo apt-get install --allow-unauthenticated -qq clang-3.4 - sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 90 -branches: - only: - - poc/0.6 + - sudo apt-get install -y lib32gcc1 + - sudo apt-get install -y libc6-i386 + - sudo apt-get install -y lib32z1-dev + - sudo apt-get install -y lib32stdc++6 + - wget https://googletest.googlecode.com/files/gtest-1.7.0.zip + - unzip gtest-1.7.0.zip && cd gtest-1.7.0 && sudo cp -r include/gtest /usr/local/include && g++ src/gtest-all.cc -I. -Iinclude -c && g++ src/gtest_main.cc -I. -Iinclude -c && ar -rv libgtest.a gtest-all.o && ar -rv libgtest_main.a gtest_main.o && sudo mv *.a /usr/local/lib && g++ -m32 src/gtest-all.cc -I. -Iinclude -c && g++ -m32 src/gtest_main.cc -I. -Iinclude -c && ar -rv libgtest.a gtest-all.o && ar -rv libgtest_main.a gtest_main.o && sudo mkdir /usr/local/lib32 && sudo mv *.a /usr/local/lib32 && cd .. env: - - ACTION="ci/build_autotools.sh" PARAM="cpp11" - - ACTION="ci/build_autotools.sh" PARAM="cpp03" - - ACTION="ci/build_cmake.sh" PARAM="cpp11" - - ACTION="ci/build_cmake.sh" PARAM="cpp03" + - ACTION="ci/build_autotools.sh" VERSION="cpp11" ARCH="64" LIBPATH="/usr/local/lib" + - ACTION="ci/build_autotools.sh" VERSION="cpp11" ARCH="32" LIBPATH="/usr/local/lib32" + - ACTION="ci/build_autotools.sh" VERSION="cpp03" ARCH="64" LIBPATH="/usr/local/lib" + - ACTION="ci/build_autotools.sh" VERSION="cpp03" ARCH="32" LIBPATH="/usr/local/lib32" + - ACTION="ci/build_cmake.sh" VERSION="cpp11" ARCH="64" LIBPATH="/usr/local/lib" + - ACTION="ci/build_cmake.sh" VERSION="cpp11" ARCH="32" LIBPATH="/usr/local/lib32" + - ACTION="ci/build_cmake.sh" VERSION="cpp03" ARCH="64" LIBPATH="/usr/local/lib" + - ACTION="ci/build_cmake.sh" VERSION="cpp03" ARCH="32" LIBPATH="/usr/local/lib32" script: - - git clean -xdf && ${ACTION} ${PARAM} + - git clean -xdf && CMAKE_LIBRARY_PATH=${LIBPATH} ${ACTION} ${VERSION} ${ARCH} diff --git a/CMakeLists.txt b/CMakeLists.txt index 7c2dcceb..fe18db16 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,6 +16,7 @@ SET (libdir "\${exec_prefix}/lib") SET (includedir "\${prefix}/include") OPTION (MSGPACK_CXX11 "Using c++11 compiler" OFF) +OPTION (MSGPACK_32BIT "32bit compile" OFF) IF (MSGPACK_CXX11) IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") @@ -27,6 +28,18 @@ IF (MSGPACK_CXX11) ENDIF () ENDIF () +IF (MSGPACK_32BIT) + IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") + SET (CMAKE_CXX_FLAGS "-m32 ${CMAKE_CXX_FLAGS}") + SET (CMAKE_C_FLAGS "-m32 ${CMAKE_C_FLAGS}") + SET (CMAKE_EXE_LINKER_FLAGS "-m32 ${CMAKE_EXE_LINKER_FLAGS}") + ELSEIF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + SET (CMAKE_CXX_FLAGS "-m32 ${CMAKE_CXX_FLAGS}") + SET (CMAKE_C_FLAGS "-m32 ${CMAKE_C_FLAGS}") + SET (CMAKE_EXE_LINKER_FLAGS "-m32 ${CMAKE_EXE_LINKER_FLAGS}") + ENDIF () +ENDIF () + FIND_PACKAGE (GTest) FIND_PACKAGE (ZLIB) FIND_PACKAGE (Threads) diff --git a/ci/build_autotools.sh b/ci/build_autotools.sh index a616a0da..a5ac75fd 100755 --- a/ci/build_autotools.sh +++ b/ci/build_autotools.sh @@ -9,9 +9,19 @@ fi if [ $1 = "cpp11" ] then - ./configure CXXFLAGS="-std=c++11" + if [ $2 = "32" ] + then + ./configure CFLAGS="-m32" CXXFLAGS="-std=c++11 -m32" + else + ./configure CXXFLAGS="-std=c++11" + fi else - ./configure + if [ $2 = "32" ] + then + ./configure CFLAGS="-m32" CXXFLAGS="-m32" + else + ./configure + fi fi ret=$? diff --git a/ci/build_cmake.sh b/ci/build_cmake.sh index 4f57fe9b..d0219705 100755 --- a/ci/build_cmake.sh +++ b/ci/build_cmake.sh @@ -18,9 +18,19 @@ fi if [ $1 = "cpp11" ] then - cmake -DMSGPACK_CXX11=ON .. + if [ $2 = "32" ] + then + cmake -DMSGPACK_CXX11=ON -DMSGPACK_32BIT=ON .. + else + cmake -DMSGPACK_CXX11=ON .. + fi else - cmake .. + if [ $2 = "32" ] + then + cmake -DMSGPACK_32BIT=ON .. + else + cmake .. + fi fi ret=$? @@ -53,20 +63,22 @@ then exit $ret fi -ctest -T memcheck | tee memcheck.log - -ret=${PIPESTATUS[0]} -if [ $ret -ne 0 ] +if [ $2 != "32" ] then - exit $ret + ctest -T memcheck | tee memcheck.log + + ret=${PIPESTATUS[0]} + if [ $ret -ne 0 ] + then + exit $ret + fi + cat memcheck.log | grep "Memory Leak" > /dev/null + ret=$? + if [ $ret -eq 0 ] + then + exit 1 + fi fi -cat memcheck.log | grep "Memory Leak" > /dev/null - -ret=$? -if [ $ret -eq 0 ] -then - exit 1 -fi exit 0