diff --git a/.ci/install-dependencies.bat b/.ci/install-dependencies.bat deleted file mode 100644 index 23358d2..0000000 --- a/.ci/install-dependencies.bat +++ /dev/null @@ -1,16 +0,0 @@ -git submodule update --init --recursive && - -cd dependencies\dyncall && -mkdir build && cd build && - -cmake -DCMAKE_INSTALL_PREFIX=%LOCAL_INSTALL% %* .. && -make && -make install && -cd ..\..\.. && - -cd dependencies\libcsptr && -mkdir build && cd build && - -cmake -DCMAKE_INSTALL_PREFIX=%LOCAL_INSTALL% %* .. && -make && -make install diff --git a/.ci/install-dependencies.sh b/.ci/install-dependencies.sh deleted file mode 100755 index 4fefe0c..0000000 --- a/.ci/install-dependencies.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh - -git submodule update --init --recursive && - -( - cd dependencies/dyncall && - mkdir build && - cd build && - cmake -DCMAKE_INSTALL_PREFIX=$LOCAL_INSTALL "$@" .. && - make && - make install -) && - -( - cd dependencies/libcsptr/ && - mkdir build && - cd build && - cmake -DCMAKE_INSTALL_PREFIX=$LOCAL_INSTALL "$@" .. && - make && - make install -) diff --git a/.cmake/Modules/Submodules.cmake b/.cmake/Modules/Submodules.cmake new file mode 100644 index 0000000..2b524e6 --- /dev/null +++ b/.cmake/Modules/Submodules.cmake @@ -0,0 +1,58 @@ +if(EXISTS "${PROJECT_SOURCE_DIR}/.gitmodules") +message(STATUS "Updating submodules to their latest/fixed versions") +message(STATUS "(this can take a while, please be patient)") + +### set the direcory where the submodules live +set(GIT_SUBMODULES_DIRECTORY dependencies) + +### set the directory names of the submodules +set(GIT_SUBMODULES libcsptr dyncall) + +### set each submodules's commit or tag that is to be checked out +### (leave empty if you want master) +set(GIT_SUBMODULE_VERSION_libcsptr a0c2444) +set(GIT_SUBMODULE_VERSION_dyncall 68c57f6) + +### First, get all submodules in +if(${GIT_SUBMODULES_CHECKOUT_QUIET}) + execute_process( + COMMAND git submodule update --init --recursive + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + OUTPUT_QUIET + ERROR_QUIET + ) +else() + execute_process( + COMMAND git submodule update --init --recursive + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + ) +endif() + +### Then, checkout each submodule to the specified commit +# Note: Execute separate processes here, to make sure each one is run, +# should one crash (because of branch not existing, this, that ... whatever) +foreach(GIT_SUBMODULE ${GIT_SUBMODULES}) + + if( "${GIT_SUBMODULE_VERSION_${GIT_SUBMODULE}}" STREQUAL "" ) + message(STATUS "no specific version given for submodule ${GIT_SUBMODULE}, checking out master") + set(GIT_SUBMODULE_VERSION_${GIT_SUBMODULE} "master") + endif() + + if(${GIT_SUBMODULES_CHECKOUT_QUIET}) + execute_process( + COMMAND git checkout ${GIT_SUBMODULE_VERSION_${GIT_SUBMODULE}} + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/${GIT_SUBMODULES_DIRECTORY}/${GIT_SUBMODULE} + OUTPUT_QUIET + ERROR_QUIET + ) + else() + message(STATUS "checking out ${GIT_SUBMODULE}'s commit/tag ${GIT_SUBMODULE_VERSION_${GIT_SUBMODULE}}") + execute_process( + COMMAND git checkout -q ${GIT_SUBMODULE_VERSION_${GIT_SUBMODULE}} + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/${GIT_SUBMODULES_DIRECTORY}/${GIT_SUBMODULE} + ) + endif() + +endforeach(${GIT_SUBMODULE}) + +endif() diff --git a/.travis.yml b/.travis.yml index 6b8e2e4..3422465 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,6 @@ compiler: sudo: false before_install: - export LOCAL_INSTALL="$HOME" -- ".ci/install-dependencies.sh" - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/lib - export CFLAGS="-g -O0" script: diff --git a/CMakeLists.txt b/CMakeLists.txt index 6eeca7e..ede228e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,8 +2,12 @@ cmake_minimum_required(VERSION 2.8) project(Criterion C) +set(MODULE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/.cmake/Modules") +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${MODULE_DIR}) set(LIBCSPTR_DISABLE_TESTS ON) +include(Submodules) + add_subdirectory(dependencies/libcsptr/ EXCLUDE_FROM_ALL) add_subdirectory(dependencies/dyncall/ EXCLUDE_FROM_ALL) @@ -18,8 +22,6 @@ set(PROJECT_VERSION "1.3.1") set(LOCALEDIR ${CMAKE_INSTALL_PREFIX}/share/locale) set(GettextTranslate_ALL 1) set(GettextTranslate_GMO_BINARY 1) -set(MODULE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/.cmake/Modules") -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${MODULE_DIR}) set_property(GLOBAL PROPERTY ALLOW_DUPLICATE_CUSTOM_TARGETS ON) diff --git a/appveyor.yml b/appveyor.yml index 987d728..439aa1d 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -27,8 +27,6 @@ configuration: Release install: # Hack to make git think it is on the tip of the repo branch - 'git checkout -B %APPVEYOR_REPO_BRANCH%' - # Install dependencies - - '.ci\install-dependencies.bat' # Configure project - 'mkdir build && cd build' - 'cmake -DCMAKE_INSTALL_PREFIX=criterion-%APPVEYOR_REPO_TAG_NAME% -DCMAKE_PREFIX_PATH="%LOCAL_INSTALL%" -DCOVERALLS=ON -DCMAKE_BUILD_TYPE=Debug -G "MSYS Makefiles" ..'