@echo off

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.

if "%UIMACPP_HOME%" == "" goto TafRootNotSet
if not exist "%UIMACPP_HOME%"\include\uima\cas.hpp goto UimaRootBad

set SWIG_PATH=\swigwin-1.3.29
if not exist %SWIG_PATH% goto SwigPathNotSet

set PYTHON_INCLUDE=\Python24\include
set PYTHON_LIB=\Python24\lib
set PYTHON_LIBDIR=\Python24\libs
if not exist %PYTHON_LIB% goto PythonNotSet

REM build Pythonnator
devenv pythonnator.vcproj /build release 
goto TheEnd

:UimaRootBad
echo UIMACPP_HOME is invalid
goto TheEnd

:SwigPathNotSet
echo SWIG_PATH is invalid
goto TheEnd

:PythonNotSet
echo Python environment is invalid


:TheEnd
