From f0c7a7ebdce6e4212ad99f9fe707b21bf9c9888e Mon Sep 17 00:00:00 2001 From: Leandro Conde Date: Sat, 1 Jul 2017 18:11:17 -0300 Subject: [PATCH 01/14] (#21) Update build process documentation Started editing the existing build process documents with up-to date information. --- docs/BUILD.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/docs/BUILD.md b/docs/BUILD.md index 191cf23..03da645 100644 --- a/docs/BUILD.md +++ b/docs/BUILD.md @@ -9,12 +9,26 @@ The instructions for both methods are tailored to the creation of MSVC 2013 solu Make sure you have satisfied the dependencies below before following the instructions for either build method. +## Requirements/Tools + +The build process raquires that the user has a modern Python distribution installed, and if he choses to go the CMake route, then a CMake installation is, of course, required. + +* [Python](https://www.python.org/downloads/) - Last version used: 2.7.13 +* [CMake](https://cmake.org/download/) - Last version used: 3.7.0-rc2 + +## C++ compiler + +A compiler of your choice, but it must be C++11 compliant at least. This code was last built and developed using Visual Studio Community Edition 2015 on Windows, so I'd recommend sticking to that (or a later version) unless you know what you're doing. For the purposes of this write-up I'm asumming that you'll go that route and direct you to the corresponding downloads. + +* [Visual Studio Community Edition](https://www.visualstudio.com/downloads/) - Can be downloaded for free from MS, use at least v14.0 (VS2015). Only the compilers and runtimes are strictly required. +* *OPTIONAL*: [Visual Studio Code Editor](https://code.visualstudio.com) - This is what I've been using for coding lately, and it's much more light-weight than the full-blown VS IDE and has many useful functions. I'd recommend to give it a try if you hate the VS IDE, like I do :) + ## Dependencies CBash depends on two external libraries: -* [Boost](http://www.boost.org) -* [Zlib](http://zlib.net) +* [Boost](http://www.boost.org) - Last version used: 1.64.0 +* [Zlib](http://zlib.net) - Last version used: 1.2.11 Both libraries can be built from source. However, it is generally easier to install the [prebuilt Boost binaries](http://sourceforge.net/projects/boost/files/boost-binaries/), which also include zlib binaries. Both build methods allow for either approach. From aea4bbec7cd33c8bf4a9c225d03c034546a05374 Mon Sep 17 00:00:00 2001 From: leandor Date: Sat, 1 Jul 2017 18:29:03 -0300 Subject: [PATCH 02/14] (#21) Update build process documentation Started editing dependences section --- docs/BUILD.md | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/docs/BUILD.md b/docs/BUILD.md index 03da645..c89cf15 100644 --- a/docs/BUILD.md +++ b/docs/BUILD.md @@ -38,10 +38,32 @@ If using the prebuilt Boost binaries, download and install them, then make a not Although it is not necessary to build a zlib binary when using the prebuilt binaries, the header files are still required for linking, so download and extract the zlib source. Make a note of where the source is extracted to. -### Building From Source +Skip the next sections on building the dependences. + +### Building Dependences From Source If building from source, extract the source archives and make a note of the paths they were extracted to. See the instructions below for how to build them on Windows using MSVC. +#### Variables + +I'm gonna use some variables during this explanation to represent the fact that you'd have to chose some directories in your machine where the downloaded/cloned sources are going to be placed. + +I cannot hard-code this folders nor give you exact paths for them, so I'll be using symbolic names for the rest of this explanation, as if they were environment variables defined on your system. But it's **not** required to define them as env variables at all... you can take this explanation and search and replace all appearances of a variable with the real path and everything should work. + +As an example, in my own setup, I have everything related to third party libraries located in my 'C:\Sources\3rdparty folder', where for each library I create a root folder inside that to hold the possibly different version of libraries that my project could require. + +These are the variables that we're going to need: + +```dos +set CMAKE_GENERATOR="Visual Studio 14 2015" +set ZLIB_BASE= +set BOOST_BASE= +``` + +* **CMAKE_GENERATOR**: Used for CMAKE generate command. Change this to the version of VS you got. You can Use: CMAKE --help and look in the Generators list at the end of the help dump +* **ZLIB_BASE**: Any directory will do _(preferably an empty one)_. Example from my own setup: 'C:\Sources\3rdparty\ZLIB', but it can be whatever else works for you. +* **BOOST_BASE**: Same as above. Example from my own setup: 'C:\Sources\3rdparty\Boost'. + #### Boost The Boost.Iostreams library must be built, which can be done using the commands below. From a29e71d5f294f57d28e9dea3e824a47a20f89b50 Mon Sep 17 00:00:00 2001 From: leandor Date: Sat, 1 Jul 2017 18:40:19 -0300 Subject: [PATCH 03/14] (#21) Update build process documentation Started editing dependences section --- docs/BUILD.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/BUILD.md b/docs/BUILD.md index c89cf15..53a153f 100644 --- a/docs/BUILD.md +++ b/docs/BUILD.md @@ -54,9 +54,9 @@ As an example, in my own setup, I have everything related to third party librari These are the variables that we're going to need: -```dos +```batch set CMAKE_GENERATOR="Visual Studio 14 2015" -set ZLIB_BASE= +set ZLIB_BASE= set BOOST_BASE= ``` From 27e3e2d68627484f7e2e05e69fa5d998bfe73fdf Mon Sep 17 00:00:00 2001 From: leandor Date: Sat, 1 Jul 2017 18:40:59 -0300 Subject: [PATCH 04/14] (#21) Update build process documentation Started editing dependences section --- docs/BUILD.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/BUILD.md b/docs/BUILD.md index 53a153f..7bfdfc4 100644 --- a/docs/BUILD.md +++ b/docs/BUILD.md @@ -60,7 +60,7 @@ set ZLIB_BASE= set BOOST_BASE= ``` -* **CMAKE_GENERATOR**: Used for CMAKE generate command. Change this to the version of VS you got. You can Use: CMAKE --help and look in the Generators list at the end of the help dump +* **CMAKE_GENERATOR**: Used for CMAKE generate command. Change this to the version of VS you got. You can Use: ```CMAKE --help``` and look in the Generators list at the end of the help dump * **ZLIB_BASE**: Any directory will do _(preferably an empty one)_. Example from my own setup: 'C:\Sources\3rdparty\ZLIB', but it can be whatever else works for you. * **BOOST_BASE**: Same as above. Example from my own setup: 'C:\Sources\3rdparty\Boost'. From 889aad0930b2ec3c4e6bf34af7071d908a638ff5 Mon Sep 17 00:00:00 2001 From: leandor Date: Sat, 1 Jul 2017 18:53:17 -0300 Subject: [PATCH 05/14] (#21) Update build process documentation Expanded upon ZLIB building process --- docs/BUILD.md | 39 +++++++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/docs/BUILD.md b/docs/BUILD.md index 7bfdfc4..448eba2 100644 --- a/docs/BUILD.md +++ b/docs/BUILD.md @@ -56,14 +56,43 @@ These are the variables that we're going to need: ```batch set CMAKE_GENERATOR="Visual Studio 14 2015" -set ZLIB_BASE= -set BOOST_BASE= +set ZLIB_BASE= :: EMPTY DIR BASE FOR ZLIB SOURCES +set BOOST_BASE= :: EMPTY DIR BASE FOR BOOST SOURCES + +set ZLIB_VERSION= :: Use v1.2.11 or later. +set CONFIG=Release :: Either Release -or- Debug ``` * **CMAKE_GENERATOR**: Used for CMAKE generate command. Change this to the version of VS you got. You can Use: ```CMAKE --help``` and look in the Generators list at the end of the help dump * **ZLIB_BASE**: Any directory will do _(preferably an empty one)_. Example from my own setup: 'C:\Sources\3rdparty\ZLIB', but it can be whatever else works for you. * **BOOST_BASE**: Same as above. Example from my own setup: 'C:\Sources\3rdparty\Boost'. + +#### Zlib + +There are a variety of ways to build zlib: for details, see the zlib documentation. I'm gonna describe how to quickly build ZLIB using CMake here. + +1. First, clone source ZLIB repo: +```batch +cd %ZLIB_BASE% +git clone https://github.com/madler/zlib zlib.git -b %ZLIB_VERSION% +cd zlib.git +``` +2. Generate the binaries: +```batch +mkdir build +cd build +cmake -G %CMAKE_GENERATOR% .. +``` +3. Compile the generated projects (you can open the generated projects in VS and compile them from there): +```batch +cmake --build . --target --config %CONFIG% +``` +3. Lastly, copy `zconf.h` to the main ZLIB directory, as their build process don't do that autmatically. +```batch +copy zconf.h .. +``` + #### Boost The Boost.Iostreams library must be built, which can be done using the commands below. @@ -75,9 +104,3 @@ b2 toolset=msvc link=static runtime-link=static variant=release address-model=32 `link`, `runtime-link` and `address-model` can all be modified if shared linking or 64 bit builds are desired. CBash uses statically-linked Boost libraries by default: to change this, edit [CMakeLists.txt](../CMakeLists.txt). -#### Zlib - -There are a variety of ways to build zlib: for details, see the zlib documentation. To build zlib using CMake, do the following: - -1. Configure CMake and generate a build system for Visual Studio by running CMake with keys `-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY=build`. -2. Open the generated solution file, and build target `zlibstatic` with `Release` configuration. From 63e49c8176705e5956c35fde568b29c6d45ccce8 Mon Sep 17 00:00:00 2001 From: leandor Date: Sat, 1 Jul 2017 18:55:50 -0300 Subject: [PATCH 06/14] (#21) Update build process documentation Expanded upon ZLIB building process --- docs/BUILD.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/BUILD.md b/docs/BUILD.md index 448eba2..04b046c 100644 --- a/docs/BUILD.md +++ b/docs/BUILD.md @@ -88,7 +88,7 @@ cmake -G %CMAKE_GENERATOR% .. ```batch cmake --build . --target --config %CONFIG% ``` -3. Lastly, copy `zconf.h` to the main ZLIB directory, as their build process don't do that autmatically. +4. Finally, copy `zconf.h` to the main ZLIB directory, as their build process don't do that autmatically. ```batch copy zconf.h .. ``` From 885c959500ae577e0ae11e1472d098cb47b32a7b Mon Sep 17 00:00:00 2001 From: leandor Date: Sat, 1 Jul 2017 19:01:48 -0300 Subject: [PATCH 07/14] (#21) Update build process documentation Tidying it up a bit. --- docs/BUILD.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/docs/BUILD.md b/docs/BUILD.md index 04b046c..a4d535b 100644 --- a/docs/BUILD.md +++ b/docs/BUILD.md @@ -56,17 +56,21 @@ These are the variables that we're going to need: ```batch set CMAKE_GENERATOR="Visual Studio 14 2015" -set ZLIB_BASE= :: EMPTY DIR BASE FOR ZLIB SOURCES -set BOOST_BASE= :: EMPTY DIR BASE FOR BOOST SOURCES +set ZLIB_BASE= +set BOOST_BASE= -set ZLIB_VERSION= :: Use v1.2.11 or later. -set CONFIG=Release :: Either Release -or- Debug +set ZLIB_VERSION= +set BOOST_VERSION=boost-X.YY.Z + +set CONFIG=Release ``` * **CMAKE_GENERATOR**: Used for CMAKE generate command. Change this to the version of VS you got. You can Use: ```CMAKE --help``` and look in the Generators list at the end of the help dump * **ZLIB_BASE**: Any directory will do _(preferably an empty one)_. Example from my own setup: 'C:\Sources\3rdparty\ZLIB', but it can be whatever else works for you. * **BOOST_BASE**: Same as above. Example from my own setup: 'C:\Sources\3rdparty\Boost'. - +* **ZLIB_VERSION**: Use `v1.2.11` or later. Look at https://github.com/madler/zlib for the latest tag. +* **BOOST_VERSION**: Use `boost-1.64.0` or look at https://github.com/boostorg/boost and check for a later tag. +* **CONFIG**: Type of binary to generate, either `Release` -or- `Debug`. #### Zlib From 15dd42b232e27195420cf57e6070c77349e24565 Mon Sep 17 00:00:00 2001 From: leandor Date: Sat, 1 Jul 2017 19:12:43 -0300 Subject: [PATCH 08/14] (#21) Update build process documentation Boost building process. --- docs/BUILD.md | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/docs/BUILD.md b/docs/BUILD.md index a4d535b..6067595 100644 --- a/docs/BUILD.md +++ b/docs/BUILD.md @@ -99,12 +99,32 @@ copy zconf.h .. #### Boost -The Boost.Iostreams library must be built, which can be done using the commands below. +CBash requires the Boost.Iostreams library, which for that reason must be built. Also, we generate the static libraries because CBash links to Boost statically, but the C++ runtime is always dynamically linked. +1. First and longest step: clone Boost repo. Go take a walk, or get some tea/coffee while this runs :) +```batch +cd %BOOST_BASE% +git clone https://github.com/boostorg/boost boost.git -b %BOOST_VERSION% +``` +2. Second step, and close second in longest time too... another drink maybe? +```batch +cd boost.git +git submodule init +git submodule update ``` +3. Bootstrap, which creates the B2 build system needed for the next step. +```batch bootstrap.bat -b2 toolset=msvc link=static runtime-link=static variant=release address-model=32 --with-iostreams ``` +4. The actual Boost building +```batch +b2 --layout=versioned toolset=msvc-14.0 -sZLIB_LIBPATH=%ZLIB_ROOT% -sZLIB_INCLUDE=%ZLIB_ROOT% address-model=32 link=static variant=release,debug runtime-link=shared threading=multi stage release +``` + +In the command above `link`, `runtime-link` and `address-model` can all be modified if shared linking is desired or if creating 64 bit builds are desired. CBash uses statically-linked Boost libraries by default: but this can be controlled by specifying CMake options to CBash build. + +#### CBash building + +All of the above was pre-requisite. Now is the actual stuff that's needed to produce CBash.dll and other outputs. -`link`, `runtime-link` and `address-model` can all be modified if shared linking or 64 bit builds are desired. CBash uses statically-linked Boost libraries by default: to change this, edit [CMakeLists.txt](../CMakeLists.txt). From ea64bb4214c381151e1018186008180316cf40a1 Mon Sep 17 00:00:00 2001 From: leandor Date: Sat, 1 Jul 2017 19:29:42 -0300 Subject: [PATCH 09/14] (#21) Update build process documentation Detailed CBash building options. --- docs/BUILD.md | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/docs/BUILD.md b/docs/BUILD.md index 6067595..f6aaba8 100644 --- a/docs/BUILD.md +++ b/docs/BUILD.md @@ -127,4 +127,57 @@ In the command above `link`, `runtime-link` and `address-model` can all be modif All of the above was pre-requisite. Now is the actual stuff that's needed to produce CBash.dll and other outputs. +1. First, let us set some variables to simplify the following commands a bit: + +```batch +SET ZLIB_ROOT=%ZLIB_BASE%\zlib.git +SET BOOST_ROOT=%BOOST_BASE%\boost.git +``` + +* **ZLIB_ROOT**: Just points to the folder where we just built the ZLIB sources. +* **BOOST_BASE**: Same as above, for Boost. + +2. Get a copy of the source +```batch +git clone https://github.com/wrye-bash/CBash.git CBash.git -b wip +cd CBash.git +git submodule init +git submodule update +``` + +3. Prepare for building (the actual `build` directory could be anywhere, though) +```batch +mkdir build && cd build +``` + +4. CMake Generate +```batch +cmake -G %CMAKE_GENERATOR% .. + -DCBash_BUILD_SHARED_LIBS=ON + -DBoost_NO_SYSTEM_PATHS=ON + -DCBash_USE_STATIC_RUNTIME=OFF + -DCBash_NO_BOOST_ZLIB=ON + -DBOOST_ROOT=%BOOST_ROOT% + -DBOOST_INCLUDEDIR=%BOOST_ROOT% + -DBOOST_LIBRARYDIR=%BOOST_ROOT%\stage\lib + -DZLIB_INCLUDE_DIR=%ZLIB_ROOT% + -DZLIB_LIBRARY_RELEASE=%ZLIB_ROOT%\build\Release\zlibstatic.lib + -DZLIB_LIBRARY_DEBUG=%ZLIB_ROOT%\build\Debug\zlibstaticd.lib +``` + +Lets explain the options, since there are many: +* **CBash_BUILD_SHARED_LIBS**: Instructs the CMake process to generate a `CBash.dll` output. You can set this to OFF and generate a static library instead. +* **CBash_USE_STATIC_RUNTIME**: Switch to chose if the runtimes are to be linked statically or dynamically. Preferred option is dynamically, due to the fact that if static linkage is needed, then you'd have to change the build options for Boost and ZLIB to have the same requirements as dynamic and static runtimes cannot be mixed in the same link. +* **CBash_NO_BOOST_ZLIB**: Instruct CBash not to search for Boost's provided ZLIB implementation, because we're using the real ZLIB here. +* **Boost_NO_SYSTEM_PATHS**: Instruct the CMake's FindBoost command NOT to look on the user's system paths for Boost, as some compilers bring their own Boost distributions (Borland's C++Builder notably) which could be very outdated w.r.t. current Boost implementation, and CMake insists in prioritizing those detected paths instead of the ones we want. +* **BOOST_INCLUDEDIR**: Simply a path to the boost's includes +* **BOOST_LIBRARYDIR**: Path to the boost's produced libraries (*.lib) +* **ZLIB_INCLUDE_DIR**: Path to ZLIB includes +* **ZLIB_LIBRARY_RELEASE**: Path to ZLIB release version of the compiled library file. +* **ZLIB_LIBRARY_DEBUG**: Path to ZLIB debug version of the compiled library file. + +5. Once everything is generated, we can actually compile CBash, either from CMake or by opening generated VS solution files from the `build` directory. +```batch +cmake --build . --target --config %CONFIG% +``` From 9de770cbf9222f51b7fd565a400c1c0d6debda43 Mon Sep 17 00:00:00 2001 From: leandor Date: Sat, 1 Jul 2017 19:37:30 -0300 Subject: [PATCH 10/14] (#21) Update build process documentation Deprecation notice for the MANUAL build procedure. --- docs/BUILD.MANUAL.md | 4 ++++ docs/BUILD.md | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/BUILD.MANUAL.md b/docs/BUILD.MANUAL.md index 3f95f1e..0c9f1bb 100644 --- a/docs/BUILD.MANUAL.md +++ b/docs/BUILD.MANUAL.md @@ -1,3 +1,7 @@ +**DISCLAIMER**: For Windows, this method is discouraged at the moment, and the explanation is probably outdated but won't be corrected/ammended. + +It will probably will become MORE outdated as the CBash build process gets more complicated. In fact, this method won't work for generating the Python bindings in the future, as the `pybind11` integration depends on CMake scripts to work and there will be no plans to change that, at least at the present. + # Building CBash "Manually" These instructions are for building CBash on Windows by manually creating a Microsoft Visual Studio solution. The instructions were written using MSVC 2013, so slight changes may be required if you are using a different version. diff --git a/docs/BUILD.md b/docs/BUILD.md index f6aaba8..a972e2f 100644 --- a/docs/BUILD.md +++ b/docs/BUILD.md @@ -3,12 +3,14 @@ Two methods of building CBash are documented: * [Automated](BUILD.CMAKE.md): Using [CMake](http://cmake.org) to generate a Microsoft Visual C++ solution to build. -* [Manual](BUILD.MANUAL.md): Manually creating a Microsoft Visual C++ solution to build. +* [Manual](BUILD.MANUAL.md): Manually creating a Microsoft Visual C++ solution to build (**NOT RECOMMENDED**). The instructions for both methods are tailored to the creation of MSVC 2013 solutions, though the automated method does allow for other build systems and platforms, at the expense of requiring CMake to be installed. Make sure you have satisfied the dependencies below before following the instructions for either build method. +# Building CBash the AUTOMATED way (RECOMMENDED) + ## Requirements/Tools The build process raquires that the user has a modern Python distribution installed, and if he choses to go the CMake route, then a CMake installation is, of course, required. From 26d464a2f1b07bd3b994e67d36a73a951f791848 Mon Sep 17 00:00:00 2001 From: leandor Date: Sat, 1 Jul 2017 19:45:04 -0300 Subject: [PATCH 11/14] (#21) Update build process documentation Moved all the detailed explanation to the existing BUILD.CMAKE.md file. --- docs/BUILD.CMAKE.md | 184 +++++++++++++++++++++++++++++++++++++++++++- docs/BUILD.md | 174 ----------------------------------------- 2 files changed, 180 insertions(+), 178 deletions(-) diff --git a/docs/BUILD.CMAKE.md b/docs/BUILD.CMAKE.md index 5c1c981..f8a8be7 100644 --- a/docs/BUILD.CMAKE.md +++ b/docs/BUILD.CMAKE.md @@ -2,19 +2,195 @@ These instructions were used to build CBash using Microsoft Visual Studio 2012 and Microsoft Visual Studio Express 2013 for Desktop, though they should also apply to other compilers with minimal adaptation. -CBash's CMake configuration builds an executable that can be run on Windows XP, but this support has only been implemented for MSVC 2012 and 2013 - other versions of MSVC may require editing of CBash's [CMakeLists.txt](../CMakeLists.txt) file. +CBash's CMake configuration builds an executable that can be run on Windows XP, but this support has only been implemented for MSVC 2012, 2013 and 2015 - other versions of MSVC may require editing of CBash's [CMakeLists.txt](../CMakeLists.txt) file. CBash uses the following CMake variables to set build parameters: Parameter | Values | Description ----------|--------|------------ -`BUILD_SHARED_LIBS` | `ON`, `OFF` | Whether or not to build a shared CBash binary (DLL). Defaults to `ON`. -`PROJECT_STATIC_RUNTIME` | `ON`, `OFF` | Whether to link the C++ runtime statically or not. This also affects the Boost libraries used. Defaults to `ON`. -`CBASH_NO_BOOST_ZLIB` | `ON`, `OFF` | Whether to use the zlib binary distributed with the prebuilt Boost library binaries. Defaults to `OFF`. +`CBash_BUILD_SHARED_LIBS` | `ON`, `OFF` | Whether or not to build a shared CBash binary (DLL). Defaults to `ON`. +`CBash_USE_STATIC_RUNTIME` | `ON`, `OFF` | Whether to link the C++ runtime statically or not. This also affects the Boost libraries used. Defaults to `ON`. +`CBash_NO_BOOST_ZLIB` | `ON`, `OFF` | Whether to use the zlib binary distributed with the prebuilt Boost library binaries. Defaults to `OFF`. Depending on your configuration, you may also need to define the `BOOST_ROOT`, `BOOST_LIBRARYDIR` and `ZLIB_ROOT` folder paths for CMake to find the required libraries. Use the paths you noted down when you installed/extracted the dependencies. +**General procedure** 1. Set CMake up so that it builds the binaries in the `build` subdirectory of the CBash folder. 2. Define any necessary parameters. 3. Configure CMake, then generate a build system for Visual Studio 2013. 4. Open the generated solution file, and build it. + + + +## Requirements/Tools + +The build process raquires that the user has a modern Python distribution installed, and if he choses to go the CMake route, then a CMake installation is, of course, required. + +* [Python](https://www.python.org/downloads/) - Last version used: 2.7.13 +* [CMake](https://cmake.org/download/) - Last version used: 3.7.0-rc2 + +## C++ compiler + +A compiler of your choice, but it must be C++11 compliant at least. This code was last built and developed using Visual Studio Community Edition 2015 on Windows, so I'd recommend sticking to that (or a later version) unless you know what you're doing. For the purposes of this write-up I'm asumming that you'll go that route and direct you to the corresponding downloads. + +* [Visual Studio Community Edition](https://www.visualstudio.com/downloads/) - Can be downloaded for free from MS, use at least v14.0 (VS2015). Only the compilers and runtimes are strictly required. +* *OPTIONAL*: [Visual Studio Code Editor](https://code.visualstudio.com) - This is what I've been using for coding lately, and it's much more light-weight than the full-blown VS IDE and has many useful functions. I'd recommend to give it a try if you hate the VS IDE, like I do :) + +## Dependencies + +CBash depends on two external libraries: + +* [Boost](http://www.boost.org) - Last version used: 1.64.0 +* [Zlib](http://zlib.net) - Last version used: 1.2.11 + +Both libraries can be built from source. However, it is generally easier to install the [prebuilt Boost binaries](http://sourceforge.net/projects/boost/files/boost-binaries/), which also include zlib binaries. Both build methods allow for either approach. + +### Using Prebuilt Binaries + +If using the prebuilt Boost binaries, download and install them, then make a note of the install path and the path the binary files themselves are found in. + +Although it is not necessary to build a zlib binary when using the prebuilt binaries, the header files are still required for linking, so download and extract the zlib source. Make a note of where the source is extracted to. + +Skip the next sections on building the dependences. + +### Building Dependences From Source + +If building from source, extract the source archives and make a note of the paths they were extracted to. See the instructions below for how to build them on Windows using MSVC. + +#### Variables + +I'm gonna use some variables during this explanation to represent the fact that you'd have to chose some directories in your machine where the downloaded/cloned sources are going to be placed. + +I cannot hard-code this folders nor give you exact paths for them, so I'll be using symbolic names for the rest of this explanation, as if they were environment variables defined on your system. But it's **not** required to define them as env variables at all... you can take this explanation and search and replace all appearances of a variable with the real path and everything should work. + +As an example, in my own setup, I have everything related to third party libraries located in my 'C:\Sources\3rdparty folder', where for each library I create a root folder inside that to hold the possibly different version of libraries that my project could require. + +These are the variables that we're going to need: + +```batch +set CMAKE_GENERATOR="Visual Studio 14 2015" +set ZLIB_BASE= +set BOOST_BASE= + +set ZLIB_VERSION= +set BOOST_VERSION=boost-X.YY.Z + +set CONFIG=Release +``` + +* **CMAKE_GENERATOR**: Used for CMAKE generate command. Change this to the version of VS you got. You can Use: ```CMAKE --help``` and look in the Generators list at the end of the help dump +* **ZLIB_BASE**: Any directory will do _(preferably an empty one)_. Example from my own setup: 'C:\Sources\3rdparty\ZLIB', but it can be whatever else works for you. +* **BOOST_BASE**: Same as above. Example from my own setup: 'C:\Sources\3rdparty\Boost'. +* **ZLIB_VERSION**: Use `v1.2.11` or later. Look at https://github.com/madler/zlib for the latest tag. +* **BOOST_VERSION**: Use `boost-1.64.0` or look at https://github.com/boostorg/boost and check for a later tag. +* **CONFIG**: Type of binary to generate, either `Release` -or- `Debug`. + +#### Zlib + +There are a variety of ways to build zlib: for details, see the zlib documentation. I'm gonna describe how to quickly build ZLIB using CMake here. + +1. First, clone source ZLIB repo: +```batch +cd %ZLIB_BASE% +git clone https://github.com/madler/zlib zlib.git -b %ZLIB_VERSION% +cd zlib.git +``` +2. Generate the binaries: +```batch +mkdir build +cd build +cmake -G %CMAKE_GENERATOR% .. +``` +3. Compile the generated projects (you can open the generated projects in VS and compile them from there): +```batch +cmake --build . --target --config %CONFIG% +``` +4. Finally, copy `zconf.h` to the main ZLIB directory, as their build process don't do that autmatically. +```batch +copy zconf.h .. +``` + +#### Boost + +CBash requires the Boost.Iostreams library, which for that reason must be built. Also, we generate the static libraries because CBash links to Boost statically, but the C++ runtime is always dynamically linked. + +1. First and longest step: clone Boost repo. Go take a walk, or get some tea/coffee while this runs :) +```batch +cd %BOOST_BASE% +git clone https://github.com/boostorg/boost boost.git -b %BOOST_VERSION% +``` +2. Second step, and close second in longest time too... another drink maybe? +```batch +cd boost.git +git submodule init +git submodule update +``` +3. Bootstrap, which creates the B2 build system needed for the next step. +```batch +bootstrap.bat +``` +4. The actual Boost building +```batch +b2 --layout=versioned toolset=msvc-14.0 -sZLIB_LIBPATH=%ZLIB_ROOT% -sZLIB_INCLUDE=%ZLIB_ROOT% address-model=32 link=static variant=release,debug runtime-link=shared threading=multi stage release +``` + +In the command above `link`, `runtime-link` and `address-model` can all be modified if shared linking is desired or if creating 64 bit builds are desired. CBash uses statically-linked Boost libraries by default: but this can be controlled by specifying CMake options to CBash build. + +#### CBash building + +All of the above was pre-requisite. Now is the actual stuff that's needed to produce CBash.dll and other outputs. + +1. First, let us set some variables to simplify the following commands a bit: + +```batch +SET ZLIB_ROOT=%ZLIB_BASE%\zlib.git +SET BOOST_ROOT=%BOOST_BASE%\boost.git +``` + +* **ZLIB_ROOT**: Just points to the folder where we just built the ZLIB sources. +* **BOOST_BASE**: Same as above, for Boost. + +2. Get a copy of the source +```batch +git clone https://github.com/wrye-bash/CBash.git CBash.git -b wip +cd CBash.git +git submodule init +git submodule update +``` + +3. Prepare for building (the actual `build` directory could be anywhere, though) +```batch +mkdir build && cd build +``` + +4. CMake Generate +```batch +cmake -G %CMAKE_GENERATOR% .. + -DCBash_BUILD_SHARED_LIBS=ON + -DBoost_NO_SYSTEM_PATHS=ON + -DCBash_USE_STATIC_RUNTIME=OFF + -DCBash_NO_BOOST_ZLIB=ON + -DBOOST_ROOT=%BOOST_ROOT% + -DBOOST_INCLUDEDIR=%BOOST_ROOT% + -DBOOST_LIBRARYDIR=%BOOST_ROOT%\stage\lib + -DZLIB_INCLUDE_DIR=%ZLIB_ROOT% + -DZLIB_LIBRARY_RELEASE=%ZLIB_ROOT%\build\Release\zlibstatic.lib + -DZLIB_LIBRARY_DEBUG=%ZLIB_ROOT%\build\Debug\zlibstaticd.lib +``` + +Lets explain the options, since there are many: +* **CBash_BUILD_SHARED_LIBS**: Instructs the CMake process to generate a `CBash.dll` output. You can set this to OFF and generate a static library instead. +* **CBash_USE_STATIC_RUNTIME**: Switch to chose if the runtimes are to be linked statically or dynamically. Preferred option is dynamically, due to the fact that if static linkage is needed, then you'd have to change the build options for Boost and ZLIB to have the same requirements as dynamic and static runtimes cannot be mixed in the same link. +* **CBash_NO_BOOST_ZLIB**: Instruct CBash not to search for Boost's provided ZLIB implementation, because we're using the real ZLIB here. +* **Boost_NO_SYSTEM_PATHS**: Instruct the CMake's FindBoost command NOT to look on the user's system paths for Boost, as some compilers bring their own Boost distributions (Borland's C++Builder notably) which could be very outdated w.r.t. current Boost implementation, and CMake insists in prioritizing those detected paths instead of the ones we want. +* **BOOST_INCLUDEDIR**: Simply a path to the boost's includes +* **BOOST_LIBRARYDIR**: Path to the boost's produced libraries (*.lib) +* **ZLIB_INCLUDE_DIR**: Path to ZLIB includes +* **ZLIB_LIBRARY_RELEASE**: Path to ZLIB release version of the compiled library file. +* **ZLIB_LIBRARY_DEBUG**: Path to ZLIB debug version of the compiled library file. + +5. Once everything is generated, we can actually compile CBash, either from CMake or by opening generated VS solution files from the `build` directory. +```batch +cmake --build . --target --config %CONFIG% +``` + diff --git a/docs/BUILD.md b/docs/BUILD.md index a972e2f..5a8194d 100644 --- a/docs/BUILD.md +++ b/docs/BUILD.md @@ -9,177 +9,3 @@ The instructions for both methods are tailored to the creation of MSVC 2013 solu Make sure you have satisfied the dependencies below before following the instructions for either build method. -# Building CBash the AUTOMATED way (RECOMMENDED) - -## Requirements/Tools - -The build process raquires that the user has a modern Python distribution installed, and if he choses to go the CMake route, then a CMake installation is, of course, required. - -* [Python](https://www.python.org/downloads/) - Last version used: 2.7.13 -* [CMake](https://cmake.org/download/) - Last version used: 3.7.0-rc2 - -## C++ compiler - -A compiler of your choice, but it must be C++11 compliant at least. This code was last built and developed using Visual Studio Community Edition 2015 on Windows, so I'd recommend sticking to that (or a later version) unless you know what you're doing. For the purposes of this write-up I'm asumming that you'll go that route and direct you to the corresponding downloads. - -* [Visual Studio Community Edition](https://www.visualstudio.com/downloads/) - Can be downloaded for free from MS, use at least v14.0 (VS2015). Only the compilers and runtimes are strictly required. -* *OPTIONAL*: [Visual Studio Code Editor](https://code.visualstudio.com) - This is what I've been using for coding lately, and it's much more light-weight than the full-blown VS IDE and has many useful functions. I'd recommend to give it a try if you hate the VS IDE, like I do :) - -## Dependencies - -CBash depends on two external libraries: - -* [Boost](http://www.boost.org) - Last version used: 1.64.0 -* [Zlib](http://zlib.net) - Last version used: 1.2.11 - -Both libraries can be built from source. However, it is generally easier to install the [prebuilt Boost binaries](http://sourceforge.net/projects/boost/files/boost-binaries/), which also include zlib binaries. Both build methods allow for either approach. - -### Using Prebuilt Binaries - -If using the prebuilt Boost binaries, download and install them, then make a note of the install path and the path the binary files themselves are found in. - -Although it is not necessary to build a zlib binary when using the prebuilt binaries, the header files are still required for linking, so download and extract the zlib source. Make a note of where the source is extracted to. - -Skip the next sections on building the dependences. - -### Building Dependences From Source - -If building from source, extract the source archives and make a note of the paths they were extracted to. See the instructions below for how to build them on Windows using MSVC. - -#### Variables - -I'm gonna use some variables during this explanation to represent the fact that you'd have to chose some directories in your machine where the downloaded/cloned sources are going to be placed. - -I cannot hard-code this folders nor give you exact paths for them, so I'll be using symbolic names for the rest of this explanation, as if they were environment variables defined on your system. But it's **not** required to define them as env variables at all... you can take this explanation and search and replace all appearances of a variable with the real path and everything should work. - -As an example, in my own setup, I have everything related to third party libraries located in my 'C:\Sources\3rdparty folder', where for each library I create a root folder inside that to hold the possibly different version of libraries that my project could require. - -These are the variables that we're going to need: - -```batch -set CMAKE_GENERATOR="Visual Studio 14 2015" -set ZLIB_BASE= -set BOOST_BASE= - -set ZLIB_VERSION= -set BOOST_VERSION=boost-X.YY.Z - -set CONFIG=Release -``` - -* **CMAKE_GENERATOR**: Used for CMAKE generate command. Change this to the version of VS you got. You can Use: ```CMAKE --help``` and look in the Generators list at the end of the help dump -* **ZLIB_BASE**: Any directory will do _(preferably an empty one)_. Example from my own setup: 'C:\Sources\3rdparty\ZLIB', but it can be whatever else works for you. -* **BOOST_BASE**: Same as above. Example from my own setup: 'C:\Sources\3rdparty\Boost'. -* **ZLIB_VERSION**: Use `v1.2.11` or later. Look at https://github.com/madler/zlib for the latest tag. -* **BOOST_VERSION**: Use `boost-1.64.0` or look at https://github.com/boostorg/boost and check for a later tag. -* **CONFIG**: Type of binary to generate, either `Release` -or- `Debug`. - -#### Zlib - -There are a variety of ways to build zlib: for details, see the zlib documentation. I'm gonna describe how to quickly build ZLIB using CMake here. - -1. First, clone source ZLIB repo: -```batch -cd %ZLIB_BASE% -git clone https://github.com/madler/zlib zlib.git -b %ZLIB_VERSION% -cd zlib.git -``` -2. Generate the binaries: -```batch -mkdir build -cd build -cmake -G %CMAKE_GENERATOR% .. -``` -3. Compile the generated projects (you can open the generated projects in VS and compile them from there): -```batch -cmake --build . --target --config %CONFIG% -``` -4. Finally, copy `zconf.h` to the main ZLIB directory, as their build process don't do that autmatically. -```batch -copy zconf.h .. -``` - -#### Boost - -CBash requires the Boost.Iostreams library, which for that reason must be built. Also, we generate the static libraries because CBash links to Boost statically, but the C++ runtime is always dynamically linked. - -1. First and longest step: clone Boost repo. Go take a walk, or get some tea/coffee while this runs :) -```batch -cd %BOOST_BASE% -git clone https://github.com/boostorg/boost boost.git -b %BOOST_VERSION% -``` -2. Second step, and close second in longest time too... another drink maybe? -```batch -cd boost.git -git submodule init -git submodule update -``` -3. Bootstrap, which creates the B2 build system needed for the next step. -```batch -bootstrap.bat -``` -4. The actual Boost building -```batch -b2 --layout=versioned toolset=msvc-14.0 -sZLIB_LIBPATH=%ZLIB_ROOT% -sZLIB_INCLUDE=%ZLIB_ROOT% address-model=32 link=static variant=release,debug runtime-link=shared threading=multi stage release -``` - -In the command above `link`, `runtime-link` and `address-model` can all be modified if shared linking is desired or if creating 64 bit builds are desired. CBash uses statically-linked Boost libraries by default: but this can be controlled by specifying CMake options to CBash build. - -#### CBash building - -All of the above was pre-requisite. Now is the actual stuff that's needed to produce CBash.dll and other outputs. - -1. First, let us set some variables to simplify the following commands a bit: - -```batch -SET ZLIB_ROOT=%ZLIB_BASE%\zlib.git -SET BOOST_ROOT=%BOOST_BASE%\boost.git -``` - -* **ZLIB_ROOT**: Just points to the folder where we just built the ZLIB sources. -* **BOOST_BASE**: Same as above, for Boost. - -2. Get a copy of the source -```batch -git clone https://github.com/wrye-bash/CBash.git CBash.git -b wip -cd CBash.git -git submodule init -git submodule update -``` - -3. Prepare for building (the actual `build` directory could be anywhere, though) -```batch -mkdir build && cd build -``` - -4. CMake Generate -```batch -cmake -G %CMAKE_GENERATOR% .. - -DCBash_BUILD_SHARED_LIBS=ON - -DBoost_NO_SYSTEM_PATHS=ON - -DCBash_USE_STATIC_RUNTIME=OFF - -DCBash_NO_BOOST_ZLIB=ON - -DBOOST_ROOT=%BOOST_ROOT% - -DBOOST_INCLUDEDIR=%BOOST_ROOT% - -DBOOST_LIBRARYDIR=%BOOST_ROOT%\stage\lib - -DZLIB_INCLUDE_DIR=%ZLIB_ROOT% - -DZLIB_LIBRARY_RELEASE=%ZLIB_ROOT%\build\Release\zlibstatic.lib - -DZLIB_LIBRARY_DEBUG=%ZLIB_ROOT%\build\Debug\zlibstaticd.lib -``` - -Lets explain the options, since there are many: -* **CBash_BUILD_SHARED_LIBS**: Instructs the CMake process to generate a `CBash.dll` output. You can set this to OFF and generate a static library instead. -* **CBash_USE_STATIC_RUNTIME**: Switch to chose if the runtimes are to be linked statically or dynamically. Preferred option is dynamically, due to the fact that if static linkage is needed, then you'd have to change the build options for Boost and ZLIB to have the same requirements as dynamic and static runtimes cannot be mixed in the same link. -* **CBash_NO_BOOST_ZLIB**: Instruct CBash not to search for Boost's provided ZLIB implementation, because we're using the real ZLIB here. -* **Boost_NO_SYSTEM_PATHS**: Instruct the CMake's FindBoost command NOT to look on the user's system paths for Boost, as some compilers bring their own Boost distributions (Borland's C++Builder notably) which could be very outdated w.r.t. current Boost implementation, and CMake insists in prioritizing those detected paths instead of the ones we want. -* **BOOST_INCLUDEDIR**: Simply a path to the boost's includes -* **BOOST_LIBRARYDIR**: Path to the boost's produced libraries (*.lib) -* **ZLIB_INCLUDE_DIR**: Path to ZLIB includes -* **ZLIB_LIBRARY_RELEASE**: Path to ZLIB release version of the compiled library file. -* **ZLIB_LIBRARY_DEBUG**: Path to ZLIB debug version of the compiled library file. - -5. Once everything is generated, we can actually compile CBash, either from CMake or by opening generated VS solution files from the `build` directory. -```batch -cmake --build . --target --config %CONFIG% -``` - From 876d4bc71fba9126835a37d31af5615d29793fb7 Mon Sep 17 00:00:00 2001 From: leandor Date: Sat, 1 Jul 2017 19:54:15 -0300 Subject: [PATCH 12/14] (#21) Update build process documentation Moved the pre-requisites section to the main file. Some clarification edits w.r.t. Visual Studio versions used. --- docs/BUILD.CMAKE.md | 22 +++------------------- docs/BUILD.md | 18 +++++++++++++++++- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/BUILD.CMAKE.md b/docs/BUILD.CMAKE.md index f8a8be7..2f5091e 100644 --- a/docs/BUILD.CMAKE.md +++ b/docs/BUILD.CMAKE.md @@ -1,6 +1,6 @@ # Building CBash Using CMake -These instructions were used to build CBash using Microsoft Visual Studio 2012 and Microsoft Visual Studio Express 2013 for Desktop, though they should also apply to other compilers with minimal adaptation. +These instructions were used to build CBash using Microsoft Visual Studio 2012, and Microsoft Visual Studio Express 2013 for Desktop, and the new Visual Studio Community Edition 2015 and forward, though they should also apply to other compilers with minimal adaptation. CBash's CMake configuration builds an executable that can be run on Windows XP, but this support has only been implemented for MSVC 2012, 2013 and 2015 - other versions of MSVC may require editing of CBash's [CMakeLists.txt](../CMakeLists.txt) file. @@ -20,23 +20,7 @@ Depending on your configuration, you may also need to define the `BOOST_ROOT`, ` 3. Configure CMake, then generate a build system for Visual Studio 2013. 4. Open the generated solution file, and build it. - - -## Requirements/Tools - -The build process raquires that the user has a modern Python distribution installed, and if he choses to go the CMake route, then a CMake installation is, of course, required. - -* [Python](https://www.python.org/downloads/) - Last version used: 2.7.13 -* [CMake](https://cmake.org/download/) - Last version used: 3.7.0-rc2 - -## C++ compiler - -A compiler of your choice, but it must be C++11 compliant at least. This code was last built and developed using Visual Studio Community Edition 2015 on Windows, so I'd recommend sticking to that (or a later version) unless you know what you're doing. For the purposes of this write-up I'm asumming that you'll go that route and direct you to the corresponding downloads. - -* [Visual Studio Community Edition](https://www.visualstudio.com/downloads/) - Can be downloaded for free from MS, use at least v14.0 (VS2015). Only the compilers and runtimes are strictly required. -* *OPTIONAL*: [Visual Studio Code Editor](https://code.visualstudio.com) - This is what I've been using for coding lately, and it's much more light-weight than the full-blown VS IDE and has many useful functions. I'd recommend to give it a try if you hate the VS IDE, like I do :) - -## Dependencies +## Compile-time Dependencies CBash depends on two external libraries: @@ -51,7 +35,7 @@ If using the prebuilt Boost binaries, download and install them, then make a not Although it is not necessary to build a zlib binary when using the prebuilt binaries, the header files are still required for linking, so download and extract the zlib source. Make a note of where the source is extracted to. -Skip the next sections on building the dependences. +Skip the next sections on building the dependencies if you're using the prebuilt binaries for them. ### Building Dependences From Source diff --git a/docs/BUILD.md b/docs/BUILD.md index 5a8194d..125f45a 100644 --- a/docs/BUILD.md +++ b/docs/BUILD.md @@ -1,11 +1,27 @@ # Building CBash +## Requirements/Tools + +The build process requires that the user has a modern Python distribution installed, and if he choses to go the CMake route as I assume you're doing since you're reading this, then a CMake installation is, of course, required. + +* [Python](https://www.python.org/downloads/) - Last version used: 2.7.13 +* [CMake](https://cmake.org/download/) - Last version used: 3.7.0-rc2 + +## C++ compiler + +A compiler of your choice, but it must be C++11 compliant at least. This code was last built and developed using Visual Studio Community Edition 2015 on Windows, so I'd recommend sticking to that (or a later version) unless you know what you're doing. For the purposes of this write-up I'm asumming that you'll go that route and direct you to the corresponding downloads. + +* [Visual Studio Community Edition](https://www.visualstudio.com/downloads/) - Can be downloaded for free from MS, use at least v14.0 (VS2015). Only the compilers and runtimes are strictly required. +* *OPTIONAL*: [Visual Studio Code Editor](https://code.visualstudio.com) - This is what I've been using for coding lately, and it's much more light-weight than the full-blown VS IDE and has many useful functions. I'd recommend to give it a try if you hate the VS IDE, like I do :) + +## Detailed explanation + Two methods of building CBash are documented: * [Automated](BUILD.CMAKE.md): Using [CMake](http://cmake.org) to generate a Microsoft Visual C++ solution to build. * [Manual](BUILD.MANUAL.md): Manually creating a Microsoft Visual C++ solution to build (**NOT RECOMMENDED**). -The instructions for both methods are tailored to the creation of MSVC 2013 solutions, though the automated method does allow for other build systems and platforms, at the expense of requiring CMake to be installed. +The instructions for both methods are tailored to the creation of MSVC solutions, though the automated method does allow for other build systems and platforms, at the expense of requiring CMake to be installed. Make sure you have satisfied the dependencies below before following the instructions for either build method. From 14051ac2d9459ce77ccf75c76f73d2f75ef185ea Mon Sep 17 00:00:00 2001 From: leandor Date: Sat, 1 Jul 2017 20:00:55 -0300 Subject: [PATCH 13/14] (#21) Update build process documentation Added a headline to the main article --- docs/BUILD.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/BUILD.md b/docs/BUILD.md index 125f45a..42e3d54 100644 --- a/docs/BUILD.md +++ b/docs/BUILD.md @@ -1,5 +1,7 @@ # Building CBash +This is the documentation that offers the details needed to build CBash from the sources on [this repository](https://github.com/wrye-bash/CBash) + ## Requirements/Tools The build process requires that the user has a modern Python distribution installed, and if he choses to go the CMake route as I assume you're doing since you're reading this, then a CMake installation is, of course, required. From a250f181cab7f5330d4a596a8689447457fede24 Mon Sep 17 00:00:00 2001 From: leandor Date: Sat, 1 Jul 2017 20:10:39 -0300 Subject: [PATCH 14/14] (#21) Update build process documentation Reformatted a bit the main README.md file --- README.md | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 01b2f5a..ff1ef93 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,18 @@ # CBash -**DISCLAIMER**: Keep in mind that binaries produced from this code aren't compatible yet with the current Wrye Bash _(current means: the 'dev' branch on Wrye-Bash here.)_ The incompatibility lies in some changes to published functions that broke the API provided to `cint.py`. - CBash is a C/C++ library for reading and writing TES IV: Oblivion, TES V: Skyrim and Fallout: New Vegas plugin files. It's used by the [Wrye Bash](https://github.com/wrye-bash/wrye-bash) modding utility to build its Bashed Patch plugins. For bugs and feature request, feel free to open a new Issue in the Issue tracker. For other discussions, open a new thread [here](http://ost.io/@lojack5/CBash "ost.io"), for example asking questions about what specific parts of the code do, etc. -Instructions on how to build CBash can be found [here](docs/BUILD.md). If linking to a static build of CBash, be sure to define `CBASH_STATIC`. Otherwise, if linking to a dynamic build, define `CBASH_DLL`. +## Build CBash + +Instructions on how to build CBash can be found [in this document](docs/BUILD.md) in the source code distribution. Also, always check the [wiki](https://github.com/wrye-bash/CBash/wiki) in case there's more general information to find there. + +## CBash provided API + +The CBash API is currently sparsely documented. There is some Doxygen-style documentation of the API in the [include headers](include/cbash). + +## Supported Record formats The plugin file formats are documented at the following locations: @@ -14,10 +20,12 @@ The plugin file formats are documented at the following locations: * Skyrim: [UESP.net](http://www.uesp.net/wiki/Tes5Mod:Mod_File_Format) * Fallout: New Vegas: [FOPDoc](https://github.com/WrinklyNinja/fopdoc) -The CBash API is currently sparsely documented. There is some Doxygen-style documentation of the API in the [include headers](include/cbash). - CBash's record and field support is incomplete. For information on what has and has not ben implemented, see the [wiki](https://github.com/wrye-bash/CBash/wiki). +## History and credits + This repository was created from the [current state](https://github.com/lojack5/CBash/commit/1f90085a27c6847685d6eb9589a1d7fda5c85862) (as of 10/15/2016) of Lojack's [CBash repository](https://github.com/lojack5/CBash). -The WIKI content is still to be ported, so use the [original location](https://github.com/lojack5/CBash/wiki) until we are finished with the move. +## License + +See [gpl.txt](gpl.txt) \ No newline at end of file