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



#include "macros.inc"

File gid_File_Lib_Pyuno
    TXT_FILE_BODY;
  #ifdef UNX
    Name = STRING(CONCAT2(libpyuno,UNXSUFFIX));
  #elif defined(OS2)
    Name = "pyuno.dll";
  #else
    Name = "pyuno.pyd";
  #endif
#if defined MACOSX
    Dir = gid_Brand_Dir_Program;
#else
    Dir = gid_Dir_Common_Ure;
#endif
//    Dir = gid_Dir_Program;
    Styles = (PACKED);
End

File gid_File_Lib_Pythonloader
    TXT_FILE_BODY;
#if defined MACOSX
    Dir = gid_Brand_Dir_Program;
#else
    Dir = gid_Dir_Common_Ure;
#endif
//    Dir = gid_Dir_Program;
  #ifdef UNX
    Name = STRING(CONCAT2(pythonloader.uno,UNXSUFFIX));
  #elif defined(OS2)
    Name = "pythonlo.dll";
  #else
    Name = "pythonloader.uno.dll";
  #endif
    Styles = (PACKED);
End

File gid_File_Py_Unohelper
    TXT_FILE_BODY;
#if defined MACOSX
    Dir = gid_Brand_Dir_Program;
#else
    Dir = gid_Dir_Common_Ure;
#endif
//    Dir = gid_Dir_Program;
    Name = "unohelper.py";
    Styles = (PACKED);
End

File gid_File_Py_Officehelper
    TXT_FILE_BODY;
#if defined MACOSX
    Dir = gid_Brand_Dir_Program;
#else
    Dir = gid_Dir_Common_Ure;
#endif
//    Dir = gid_Dir_Program;
    Name = "officehelper.py";
    Styles = (PACKED);
End

File gid_File_Py_Uno
    TXT_FILE_BODY;
#if defined MACOSX
    Dir = gid_Brand_Dir_Program;
#else
    Dir = gid_Dir_Common_Ure;
#endif
//    Dir = gid_Dir_Program;
    Name = "uno.py";
    Styles = (PACKED);
End

File gid_File_Py_Pythonloader
    TXT_FILE_BODY;
    Dir = gid_Brand_Dir_Program;
//    Dir = gid_Dir_Program;
    Name = "pythonloader.py";
    Styles = (PACKED);
End

#ifndef SYSTEM_PYTHON
File gid_File_Py_Python_Core
    TXT_FILE_BODY;
#if defined MACOSX
    Dir = gid_Brand_Dir_Program;
#else
    Dir = gid_Dir_Common_Ure;
#endif
//    Dir = gid_Dir_Program;
  #ifdef MACOSX
    Name = "OOoPython.framework.zip";
    Styles = (ARCHIVE,USE_INTERNAL_RIGHTS);
  #else
    Name = STRING(CONCAT3(python-core-,PYVERSION,.zip));
    Styles = (ARCHIVE);
  #endif
End

#ifdef UNX
#ifndef MACOSX
File gid_File_Py_Python_Bin
    BIN_FILE_BODY;
    Dir = gid_Dir_Common_Ure;
//    Dir = gid_Dir_Program;
    Name = "python.bin";
    Styles = (PACKED);
End
#endif
#endif
#endif

// Scripting Framework Python script proxy

File gid_File_Py_Pythonscript
    TXT_FILE_BODY;
#if defined MACOSX
    Dir = gid_Brand_Dir_Program;
#else
    Dir = gid_Dir_Common_Ure;
#endif
//    Dir = gid_Dir_Program;
    Name = "pythonscript.py";
    Styles = (PACKED);
End
 
//Scripting Framework Python example scripts

File gid_File_Scripts_Python
    TXT_FILE_BODY; 
    Styles = (ARCHIVE);
    Dir = gid_Dir_Share_Scripts;
    Name = "ScriptsPython.zip";
End

// Scripting Framework Python configuration settings

File gid_File_Share_Registry_Pyuno_Xcd
    TXT_FILE_BODY;
    Styles = (PACKED);
    Dir = gid_Dir_Share_Registry;
    Name = "pyuno.xcd";
End

#ifndef SYSTEM_PYTHON
#ifndef MACOSX
File gid_File_Lib_Python_So
    TXT_FILE_BODY;
    Dir = gid_Dir_Common_Ure;
//    Dir = gid_Dir_Program;
    Name = STRING(PY_FULL_DLL_NAME);
    Styles = (PACKED);
End
#else //MACOSX
//directory entries solely to be able to create the symlinks
Directory gid_Dir_PythonFramework
#if defined MACOSX
    Dir = gid_Brand_Dir_Program;
#else
    Dir = gid_Dir_Common_Ure;
#endif
//    ParentID = gid_Dir_Program;
    HostName = "OOoPython.framework";
End

Unixlink gid_Unixlink_Python_Headers
    BIN_FILE_BODY;
    Dir = gid_Dir_PythonFramework;
    Name = "Headers";
    Target = "Versions/Current/Headers";
    Styles = ();
End

Unixlink gid_Unixlink_Python_Resources
    BIN_FILE_BODY;
    Dir = gid_Dir_PythonFramework;
    Name = "Resources";
    Target = "Versions/Current/Resources";
    Styles = ();
End

Directory gid_Dir_PythonFramework_Versions
    ParentID = gid_Dir_PythonFramework;
    HostName = "Versions";
End

Unixlink gid_Unixlink_Python_Versions_Current
    BIN_FILE_BODY;
    Dir = gid_Dir_PythonFramework_Versions;
    Name = "Current";
    Target = STRING(PYMAJMIN);
    Styles = ();
End

Directory gid_Dir_PythonFramework_Versions_ver
    ParentID = gid_Dir_PythonFramework_Versions;
    HostName = STRING(PYMAJMIN);
End

Unixlink gid_Unixlink_Python_Versions_ver_Headers
    BIN_FILE_BODY;
    Dir = gid_Dir_PythonFramework_Versions_ver;
    Name = "Headers";
    Target = STRING(CONCAT2(include/python,PYMAJMIN));
    Styles = ();
End

Directory gid_Dir_PythonFramework_Versions_ver_bin
    ParentID = gid_Dir_PythonFramework_Versions_ver;
    HostName = "bin";
End

Directory gid_Dir_PythonFramework_Versions_ver_lib
    ParentID = gid_Dir_PythonFramework_Versions_ver;
    HostName = "lib";
End

Directory gid_Dir_PythonFramework_Versions_ver_lib_pythonver
    ParentID = gid_Dir_PythonFramework_Versions_ver_lib;
    HostName = STRING(CONCAT2(python,PYMAJMIN));
End

Directory gid_Dir_PythonFramework_Versions_ver_lib_pythonver_config
    ParentID = gid_Dir_PythonFramework_Versions_ver_lib_pythonver;
    HostName = "config";
End

Unixlink gid_Unixlink_Python_OOoPython
    BIN_FILE_BODY;
    Dir = gid_Dir_PythonFramework;
    Name = "OOoPython";
    Target = "Versions/Current/OOoPython";
    Styles = ();
End

Unixlink gid_Unixlink_Python_bin_idle
    BIN_FILE_BODY;
    Dir = gid_Dir_PythonFramework_Versions_ver_bin;
    Name = "idle";
    Target = STRING(CONCAT2(idle,PYMAJMIN));
    Styles = ();
End

Unixlink gid_Unixlink_Python_bin_pydoc
    BIN_FILE_BODY;
    Dir = gid_Dir_PythonFramework_Versions_ver_bin;
    Name = "pydoc";
    Target = STRING(CONCAT2(pydoc,PYMAJMIN));
    Styles = ();
End

Unixlink gid_Unixlink_Python_bin_python_real
    BIN_FILE_BODY;
    Dir = gid_Dir_PythonFramework_Versions_ver_bin;
    Name = "python";
    Target = "../Resources/Python.app/Contents/MacOS/OOoPython";
    Styles = ();
End

Unixlink gid_Unixlink_Python_bin_python
    BIN_FILE_BODY;
    Dir = gid_Dir_PythonFramework_Versions_ver_bin;
    Name = "python";
    Target = STRING(CONCAT2(python,PYMAJMIN));
    Styles = ();
End

Unixlink gid_Unixlink_Python_bin_pythonconfig
    BIN_FILE_BODY;
    Dir = gid_Dir_PythonFramework_Versions_ver_bin;
    Name = "python-config";
    Target = STRING(CONCAT3(python,PYMAJMIN,-config));
    Styles = ();
End

Unixlink gid_Unixlink_Python_bin_pythonw_real
    BIN_FILE_BODY;
    Dir = gid_Dir_PythonFramework_Versions_ver_bin;
    Name = "pythonw";
    Target = "../Resources/Python.app/Contents/MacOS/OOoPython";
    Styles = ();
End

Unixlink gid_Unixlink_Python_bin_pythonw
    BIN_FILE_BODY;
    Dir = gid_Dir_PythonFramework_Versions_ver_bin;
    Name = "pythonw";
    Target = STRING(CONCAT2(pythonw,PYMAJMIN));
    Styles = ();
End

Unixlink gid_Unixlink_Python_bin_smtpdpy
    BIN_FILE_BODY;
    Dir = gid_Dir_PythonFramework_Versions_ver_bin;
    Name = "smtpd.py";
    Target = STRING(CONCAT3(smtpd,PYMAJMIN,.py));
    Styles = ();
End

Unixlink gid_Unixlink_Python_libpython
    BIN_FILE_BODY;
    Dir = gid_Dir_PythonFramework_Versions_ver_lib_pythonver_config;
    Name = STRING(PY_FULL_DLL_NAME);
    Target = "../../../OOoPython";
    Styles = ();
End
#endif //MACOSX

//#ifdef WNT
//File gid_File_Lib_Python_So_Brand // Fix for system-python-problem on windows
//    TXT_FILE_BODY;
//    Dir = gid_Brand_Dir_Program;
//    Name = STRING(PY_FULL_DLL_NAME);
//    Styles = (PACKED);
//End
//#endif
#endif

#ifdef UNX

// pyuno.so even on Mac OS X, because it is a python module
File gid_File_Pyuno
    TXT_FILE_BODY;
    Name = "pyuno.so";
#if defined MACOSX
    Dir = gid_Brand_Dir_Program;
#else
    Dir = gid_Dir_Common_Ure;
#endif
//    Dir = gid_Dir_Program;
    Styles = (PACKED);
End

#endif

