# Copyright 2010-2015, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
#     * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
#     * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

version: '{branch} build #{build}'
skip_tags: true
clone_depth: 1
clone_folder: c:\projects\mozc
init:
- git config --global core.autocrlf input
install:
- git -C src\third_party clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
- set PATH=%PATH%;c:\projects\mozc\src\third_party\depot_tools
- gclient
- gclient
- git submodule add https://github.com/open-source-parsers/jsoncpp.git src/third_party/jsoncpp
- git -C src/third_party/jsoncpp checkout 11086dd6a7eba04289944367ca82cea71299ed70
- git submodule add https://chromium.googlesource.com/external/gmock src/third_party/gmock
- git -C src/third_party/gmock checkout 29763965ab52f24565299976b936d1265cb6a271
- git submodule add https://chromium.googlesource.com/external/gtest src/third_party/gtest
- git -C src/third_party/gtest checkout 8245545b6dc9c4703e6496d1efd19e975ad2b038
- git submodule add https://chromium.googlesource.com/external/gyp src/third_party/gyp
- git -C src/third_party/gyp checkout cdf037c1edc0ba3b5d25f8e3973661efe00980cc
- git submodule add https://github.com/google/protobuf.git src/third_party/protobuf
- git -C src/third_party/protobuf checkout 172019c40bf548908ab09bfd276074c929d48415
- git submodule add https://github.com/hiroyuki-komatsu/japanese-usage-dictionary.git src/third_party/japanese_usage_dictionary
- git -C src/third_party/japanese_usage_dictionary checkout e5b3425575734c323e1d947009dd74709437b684
- git submodule add https://chromium.googlesource.com/chromiumos/platform/google-breakpad src/third_party/breakpad
- git -C src/third_party/breakpad checkout 6afe338f2355bf1bbe4b8f869aeb16b093ae2ab2
- svn export http://svn.code.sf.net/p/wtl/code/trunk/wtl/Include@587 src/third_party/wtl/files/include
- svn export http://svn.code.sf.net/p/zinnia/code@16 src/third_party/zinnia/v0_04
build_script:
- python src\build_mozc.py gyp --noqt
- python src\build_mozc.py build -c Release package
test: off
