Merge branch 'mac-build'

Conflicts:
	.gitignore
actorid
Ardekantur 15 years ago
commit 1004ab7ea2

1
.gitignore vendored

@ -8,3 +8,4 @@ cmake*.cmake
openmw
Ogre.log
ogre.cfg
build

@ -23,7 +23,8 @@ endif (WIN32)
# Dependencies
find_package(OGRE REQUIRED)
include_directories("." ${OGRE_INCLUDE_DIR} ${PLATFORM_INCLUDE_DIR})
find_package(BOOST REQUIRED)
include_directories("." ${OGRE_INCLUDE_DIR} ${Boost_INCLUDE_DIR} ${PLATFORM_INCLUDE_DIR})
link_directories(${OGRE_LIB_DIR})
# Main executable

@ -0,0 +1,37 @@
OpenMW
======
From the [official website][]:
> OpenMW is an attempt to reimplement the popular role playing game Morrowind. It aims to be a fully playable, open source implementation of the game. You must own Morrowind to use OpenMW.
About This Project
------------------
This specific repository is a branch of OpenMW intended to keep pace with development of the project in order to provide a Mac build for interested parties to contribute. This is not an official, sanctioned branch of the OpenMW project. I will only be able to answer specific questions about getting this project running on Mac OS X, **no other platform**. I will not even be able to guarantee my changes maintain backwards compatibility against builds in other operating systems. You have been warned.
Getting OpenMW Working
----------------------
1. Clone this repository.
2. Install `bjam` through MacPorts.
3. Download [boost][] 1.43 and install it with the following command:
$ mkdir build && sudo bjam --build-dir=build --layout=versioned --toolset=darwin --architecture=combined --address-model=32 --link=shared,static install
4. Download [Ogre][] 1.7.1 and build and Xcode project with CMake:
$ mdkir build && cd build && BOOST_INCLUDEDIR=/usr/local/include/boost-1_43 BOOST_LIBRARYDIR=/usr/local/lib cmake -G Xcode ..
5. Once the build completes, move `lib/Release/Ogre.framework` into `/Library/Frameworks`.
6. Generate the Makefile for OpenMW as follows:
$ mkdir build && cd build && BOOST_INCLUDEDIR=/usr/local/include/boost-1_43 BOOST_LIBRARYDIR=/usr/local/lib CMAKE_OSX_ARCHITECTURES=i386 cmake ..
7. Move your Morrowind `Data Files` directory into `build`, renamed as `data`.
[boost]: http://www.boost.org
[Ogre]: http://www.ogre3d.org
[official website]: http://openmw.com
[Will Thimbleby's Ogre Framework]: http://www.thimbleby.net/ogre/

@ -131,6 +131,63 @@ public:
// Check if the file exists.
bool exists(const String& filename) { return arc.exists(filename.c_str()); }
// Fill out all types of virtual members from Ogre framework
StringVectorPtr list(bool recursive = true)
{
StringVectorPtr ptr = StringVectorPtr(new StringVector());
return ptr;
}
StringVectorPtr find(const String& pattern, bool recursive = true)
{
StringVectorPtr ptr = StringVectorPtr(new StringVector());
return ptr;
}
FileInfoListPtr listFileInfo(bool recursive = true)
{
FileInfoListPtr ptr = FileInfoListPtr(new FileInfoList());
return ptr;
}
FileInfoListPtr findFileInfo(const String& pattern, bool recursive = true)
{
FileInfoListPtr ptr = FileInfoListPtr(new FileInfoList());
// Check if the file exists (only works for single files - wild
// cards and recursive search isn't implemented.)
if(exists(pattern)) {
FileInfo fi;
fi.archive = this;
fi.filename = pattern;
// It apparently doesn't matter that we return bogus
// information
fi.path = "";
fi.compressedSize = fi.uncompressedSize = 0;
ptr->push_back(fi);
}
return ptr;
}
DataStreamPtr open(const String& filename, bool recursive = true) const
{
// Get a non-const reference to arc. This is a hack and it's all
// OGRE's fault. You should NOT expect an open() command not to
// have any side effects on the archive, and hence this function
// should not have been declared const in the first place.
BSAFile *narc = (BSAFile*)&arc;
// Open the file
StreamPtr strm = narc->getFile(filename.c_str());
// Wrap it into an Ogre::DataStream.
return DataStreamPtr(new Mangle2OgreStream(strm));
}
};
// An archive factory for BSA archives

@ -33,14 +33,30 @@ IF (WIN32) #Windows
SET(OGRE_LIB_DIR $ENV{OGRE_SRC}/lib)
SET(OGRE_LIBRARIES debug OgreMain_d optimized OgreMain)
ENDIF (OGRESOURCE)
ELSE (WIN32) #Unix
ENDIF (WIN32)
IF (UNIX AND NOT APPLE)
CMAKE_MINIMUM_REQUIRED(VERSION 2.4.7 FATAL_ERROR)
FIND_PACKAGE(PkgConfig REQUIRED)
PKG_SEARCH_MODULE(OGRE REQUIRED OGRE)
SET(OGRE_INCLUDE_DIR ${OGRE_INCLUDE_DIRS})
SET(OGRE_LIB_DIR ${OGRE_LIBDIR})
SET(OGRE_LIBRARIES ${OGRE_LIBRARIES} CACHE STRING "")
ENDIF (WIN32)
ENDIF (UNIX AND NOT APPLE)
IF (APPLE)
FIND_PATH(OGRE_INCLUDE_DIR Ogre.h
PATHS
/Library/Frameworks
/opt/local
)
FIND_LIBRARY(OGRE_LIBRARIES
NAMES Ogre
PATHS
/Library/Frameworks
/opt/local
)
ENDIF (APPLE)
#Do some preparation
SEPARATE_ARGUMENTS(OGRE_INCLUDE_DIR)

@ -14,6 +14,12 @@
#include "../mangle/tools/str_exception.hpp"
#include "../tools/stringops.hpp"
static size_t strnlen(const char *s, size_t n)
{
const char *p = (const char *)memchr(s, 0, n);
return(p ? p-s : n);
}
namespace ESM {
enum Version

Loading…
Cancel
Save