REM
REM Licensed to the Apache Software Foundation (ASF) under one
REM or more contributor license agreements.  See the NOTICE file
REM distributed with this work for additional information
REM regarding copyright ownership.  The ASF licenses this file
REM to you under the Apache License, Version 2.0 (the
REM "License"); you may not use this file except in compliance
REM with the License.  You may obtain a copy of the License at
REM
REM   http://www.apache.org/licenses/LICENSE-2.0
REM
REM Unless required by applicable law or agreed to in writing,
REM software distributed under the License is distributed on an
REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
REM KIND, either express or implied.  See the License for the
REM specific language governing permissions and limitations
REM under the License.
REM

REM This is a generated file and will be overwritten the next
REM time that cmake is run.

REM This build may be one of @CMAKE_CONFIGURATION_TYPES@
REM Choose the configuration this script should reference:
SET PROTON_BUILD_CONFIGURATION=relwithdebinfo

REM PROTON_HOME  is the root of the proton checkout
REM PROTON_BUILD is where cmake was run

set PROTON_HOME=@CMAKE_SOURCE_DIR@
set PROTON_BUILD=@CMAKE_BINARY_DIR@

set PROTON_HOME=%PROTON_HOME:/=\%
set PROTON_BUILD=%PROTON_BUILD:/=\%

REM Python
set PYTHON_BINDING=%PROTON_BUILD%\python
set COMMON_PYPATH=%PROTON_HOME%\tests\python;%PROTON_HOME%\bindings\python
set PYTHONPATH=%COMMON_PYPATH%;%PYTHON_BINDING%

REM Ruby
set RUBY_BINDING=%PROTON_BUILD%\ruby
set RUBYLIB=%RUBY_BINDING%;%PROTON_HOME%\bindings\ruby\lib;%PROTON_HOME%\tests\ruby

REM Test applications
set PATH=%PATH%;%PROTON_BUILD%\c\tools
set PATH=%PATH%;%PROTON_HOME%\tests\python
set PATH=%PATH%;%PROTON_BUILD%\%PROTON_BUILD_CONFIGURATION%
