mirror of
https://github.com/kevinbentley/Descent3.git
synced 2025-01-22 11:28:56 +00:00
Merge pull request #637 from winterheart/cmake-makehogs
Optimize making HOG files
This commit is contained in:
commit
f6faeaacb7
31
BUILD.md
31
BUILD.md
@ -40,7 +40,7 @@ The build process uses [**CMake**](https://cmake.org/) and, by default, [**Ninja
|
|||||||
git clone --recurse-submodules https://github.com/DescentDevelopers/Descent3
|
git clone --recurse-submodules https://github.com/DescentDevelopers/Descent3
|
||||||
```
|
```
|
||||||
|
|
||||||
4. **Build Descent3.**
|
3. **Build Descent3.**
|
||||||
|
|
||||||
```batch
|
```batch
|
||||||
cd Descent3
|
cd Descent3
|
||||||
@ -49,7 +49,7 @@ The build process uses [**CMake**](https://cmake.org/) and, by default, [**Ninja
|
|||||||
```
|
```
|
||||||
See [Build Options](#build-options) below for more information on `Debug` vs `Release`.
|
See [Build Options](#build-options) below for more information on `Debug` vs `Release`.
|
||||||
|
|
||||||
Once CMake finishes, the built files will be put in `builds\win\Descent3\Debug` or `builds\win\Descent3\Release`.
|
Once CMake finishes, the built files will be put in `builds\win\build\Debug` or `builds\win\build\Release`.
|
||||||
|
|
||||||
## Building - macOS
|
## Building - macOS
|
||||||
1. **Install the prerequisite build tools.**
|
1. **Install the prerequisite build tools.**
|
||||||
@ -87,7 +87,7 @@ Once CMake finishes, the built files will be put in `builds\win\Descent3\Debug`
|
|||||||
```
|
```
|
||||||
See [Build Options](#build-options) below for more information on `Debug` vs `Release`.
|
See [Build Options](#build-options) below for more information on `Debug` vs `Release`.
|
||||||
|
|
||||||
Once CMake finishes, the built files will be put in `builds/mac/Descent3/Debug` or `builds/mac/Descent3/Release`.
|
Once CMake finishes, the built files will be put in `builds/mac/build/Debug` or `builds/mac/build/Release`.
|
||||||
|
|
||||||
## Building - Linux
|
## Building - Linux
|
||||||
1. **Install the prerequisite build tools.**
|
1. **Install the prerequisite build tools.**
|
||||||
@ -147,7 +147,30 @@ Once CMake finishes, the built files will be put in `builds/mac/Descent3/Debug`
|
|||||||
```
|
```
|
||||||
See [Build Options](#build-options) below for more information on `Debug` vs `Release`.
|
See [Build Options](#build-options) below for more information on `Debug` vs `Release`.
|
||||||
|
|
||||||
Once CMake finishes, the built files will be put in `builds/linux/Descent3/Debug` or `builds/linux/Descent3/Release`.
|
Once CMake finishes, the built files will be put in `builds/linux/build/Debug` or `builds/linux/build/Release`.
|
||||||
|
|
||||||
|
## Cross-compilation
|
||||||
|
|
||||||
|
In order to cross-compile Descent3 to another platform (for example, Linux ARM64), you'll need to build auxiliary
|
||||||
|
tools which needed to build data files. First create build-native directory and configure project in it:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
mkdir build-native
|
||||||
|
cd build-native
|
||||||
|
cmake ..
|
||||||
|
make HogMaker
|
||||||
|
```
|
||||||
|
|
||||||
|
Now you ready for cross-compilation. Create cross-compile directory and configure project in it, but this time add
|
||||||
|
`-DCMAKE_TOOLCHAIN_FILE=MyToolchain.cmake` and `-DHogMaker_DIR=<path-to-Descent3/build-native/` options. This enables
|
||||||
|
cross-compilation environment.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
mkdir build-cross
|
||||||
|
cd build-cross
|
||||||
|
cmake -DCMAKE_TOOLCHAIN_FILE=MyToolchain.cmake -DHogMaker_DIR=~/src/build-native/ ..
|
||||||
|
make
|
||||||
|
```
|
||||||
|
|
||||||
## Build Options
|
## Build Options
|
||||||
|
|
||||||
|
@ -78,6 +78,8 @@ if(FORCE_COLORED_OUTPUT)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
|
||||||
|
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
if(FORCE_PORTABLE_INSTALL)
|
if(FORCE_PORTABLE_INSTALL)
|
||||||
set(CMAKE_INSTALL_BINDIR ".")
|
set(CMAKE_INSTALL_BINDIR ".")
|
||||||
@ -86,6 +88,15 @@ if(FORCE_PORTABLE_INSTALL)
|
|||||||
set(CMAKE_INSTALL_DOCDIR ".")
|
set(CMAKE_INSTALL_DOCDIR ".")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Get info about multi-config environment
|
||||||
|
get_property(IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||||
|
# Properly determine output directory for generated files
|
||||||
|
if(IS_MULTI_CONFIG)
|
||||||
|
set(D3_GENERATED_FILES_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/build/$<CONFIG>")
|
||||||
|
else ()
|
||||||
|
set(D3_GENERATED_FILES_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/build")
|
||||||
|
endif()
|
||||||
|
|
||||||
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
||||||
set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/installed" CACHE PATH "Default install path" FORCE)
|
set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/installed" CACHE PATH "Default install path" FORCE)
|
||||||
endif()
|
endif()
|
||||||
@ -110,6 +121,15 @@ if(BUILD_TESTING)
|
|||||||
add_subdirectory(tests)
|
add_subdirectory(tests)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Define names for HOG files
|
||||||
|
if(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
|
||||||
|
set(HOG_NAME "linux")
|
||||||
|
elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||||
|
set(HOG_NAME "osx")
|
||||||
|
elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||||
|
set(HOG_NAME "win")
|
||||||
|
endif()
|
||||||
|
|
||||||
# rebuild d3_version.h every time
|
# rebuild d3_version.h every time
|
||||||
add_custom_target(get_git_hash ALL)
|
add_custom_target(get_git_hash ALL)
|
||||||
|
|
||||||
|
@ -344,7 +344,24 @@ target_link_libraries(Descent3 PRIVATE
|
|||||||
${PLATFORM_LIBS})
|
${PLATFORM_LIBS})
|
||||||
target_include_directories(Descent3 PRIVATE ${PROJECT_BINARY_DIR}/lib)
|
target_include_directories(Descent3 PRIVATE ${PROJECT_BINARY_DIR}/lib)
|
||||||
target_link_options(Descent3 PRIVATE $<$<PLATFORM_ID:Windows>:/DEBUG:FULL>)
|
target_link_options(Descent3 PRIVATE $<$<PLATFORM_ID:Windows>:/DEBUG:FULL>)
|
||||||
add_dependencies(Descent3 get_git_hash Direct_TCP_IP_Hog Descent3_Online_TCP_IP_Hog HogFull NetgamesDir Parallax_Online_Hog)
|
set_target_properties(Descent3 PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/build")
|
||||||
|
add_dependencies(Descent3
|
||||||
|
get_git_hash
|
||||||
|
Direct_TCP_IP_Hog
|
||||||
|
Descent3_Online_TCP_IP_Hog
|
||||||
|
HogFull
|
||||||
|
Parallax_Online_Hog
|
||||||
|
anarchy
|
||||||
|
coop
|
||||||
|
ctf
|
||||||
|
entropy
|
||||||
|
hoard
|
||||||
|
hyperanarchy
|
||||||
|
monsterball
|
||||||
|
roboanarchy
|
||||||
|
tanarchy
|
||||||
|
)
|
||||||
|
|
||||||
install(TARGETS Descent3 RUNTIME BUNDLE DESTINATION .)
|
install(TARGETS Descent3 RUNTIME BUNDLE DESTINATION .)
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
install(FILES $<TARGET_PDB_FILE:Descent3> DESTINATION ${CMAKE_INSTALL_BINDIR})
|
install(FILES $<TARGET_PDB_FILE:Descent3> DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
|
73
USAGE.md
73
USAGE.md
@ -1,31 +1,74 @@
|
|||||||
# Descent 3 Open source usage instructions
|
# Descent 3 Open source usage instructions
|
||||||
|
|
||||||
**Important note**: This open source distribution of Descent 3 DOES NOT CONTAIN GAME ASSETS. Assets must be acquired separately from an official copy of the game, and copied as describe in the next section.
|
**Important note**: This open source distribution of Descent 3 DOES NOT CONTAIN
|
||||||
|
GAME ASSETS. Assets must be acquired separately from an official copy of the
|
||||||
|
game, and copied as describe in the next section.
|
||||||
|
|
||||||
This is the first release of the Descent 3 open source engine, that should be considered a beta version. If you find a bug that has not been reported before, please open a new ticket it on our [online issue tracker](https://github.com/DescentDevelopers/Descent3/issues).
|
This is the first release of the Descent 3 open source engine, that should be
|
||||||
|
considered a beta version. If you find a bug that has not been reported before,
|
||||||
|
please open a new ticket it on our [online issue tracker](https://github.com/DescentDevelopers/Descent3/issues).
|
||||||
|
|
||||||
|
1. Make sure that you have a copy of Descent 3. You can purchase a copy of
|
||||||
|
Descent 3 from [GOG](https://www.gog.com/game/descent_3_expansion) or
|
||||||
|
[Steam](https://store.steampowered.com/app/273590/Descent_3/).
|
||||||
|
|
||||||
1. Make sure that you have a copy of Descent 3. You can purchase a copy of Descent 3 from [GOG](https://www.gog.com/game/descent_3_expansion) or [Steam](https://store.steampowered.com/app/273590/Descent_3/).
|
|
||||||
2. Install Descent 3.
|
2. Install Descent 3.
|
||||||
**Note for Steam users:** If you own Descent 3 on Steam, then it’s recommended that you install the Windows version of the game even if you’re running macOS or Linux, otherwise movies will not work due to [current lack of Ogv support](https://github.com/DescentDevelopers/Descent3/issues/240). You can use either [Steam Play](https://help.steampowered.com/en/faqs/view/08F7-5D56-9654-39AF) or [SteamCMD](https://developer.valvesoftware.com/wiki/SteamCMD#Cross-Platform_Installation) to install the Windows version of the game on macOS or Linux.
|
**Note for Steam users:** If you own Descent 3 on Steam, then it’s recommended
|
||||||
3. If your version of Descent 3 is older than v1.4, then [update it to v1.4](http://descent3.com/downloads.php).
|
that you install the Windows version of the game even if you’re running macOS
|
||||||
4. Find the installation location of Descent 3. Using the Steam client, you can find it from the library page using the `Manage > Browse local files` context menu.
|
or Linux, otherwise movies will not work due to
|
||||||
|
[current lack of OGV support](https://github.com/DescentDevelopers/Descent3/issues/240).
|
||||||
|
You can use either [Steam Play](https://help.steampowered.com/en/faqs/view/08F7-5D56-9654-39AF)
|
||||||
|
or [SteamCMD](https://developer.valvesoftware.com/wiki/SteamCMD#Cross-Platform_Installation)
|
||||||
|
to install the Windows version of the game on macOS or Linux.
|
||||||
|
|
||||||
|
3. If your version of Descent 3 is older than v1.4, then
|
||||||
|
[update it to v1.4](http://descent3.com/downloads.php).
|
||||||
|
|
||||||
|
4. Find the installation location of Descent 3. Using the Steam client, you can
|
||||||
|
find it from the library page using the `Manage > Browse local files`
|
||||||
|
context menu.
|
||||||
|
|
||||||
5. Create a new folder named `D3-open-source`.
|
5. Create a new folder named `D3-open-source`.
|
||||||
|
|
||||||
6. Copy the following files from your installation of Descent 3 to `D3-open-source`:
|
6. Copy the following files from your installation of Descent 3 to `D3-open-source`:
|
||||||
- All `.hog` files
|
- All `.hog` files
|
||||||
- The `missions` folder
|
- The `missions` folder
|
||||||
- _(Optional)_ All `.pld` files
|
- _(Optional)_ All `.pld` files
|
||||||
- _(Optional)_ The `movies` folder
|
- _(Optional)_ The `movies` folder
|
||||||
|
|
||||||
7. Create the `custom/` folder in `D3-open-source`
|
7. Create the `custom/` folder in `D3-open-source`
|
||||||
|
|
||||||
8. Obtain new Descent 3 engine files:
|
8. Obtain new Descent 3 engine files:
|
||||||
- If you want to use pre-built binaries, then download the latest [release](https://github.com/DescentDevelopers/Descent3/releases). For a more cutting-edge experience with the latest features, use the artifacts from the latest automated build. You can find the list of automated builds [here](https://github.com/DescentDevelopers/Descent3/actions/workflows/build.yml?query=branch%3Amain+event%3Apush).
|
- If you want to use pre-built binaries, then download the latest
|
||||||
- If you want to build the engine files yourself, the follow the instructions in [BUILD.md](BUILD.md). Once you build the engine files, they’ll be put in `builds/<platform>/Descent3/<build-type>/`. For example, if you’re using Linux and you create a “Release” build, then the files will be located at `builds/linux/Descent3/Release`.
|
[release](https://github.com/DescentDevelopers/Descent3/releases). For a
|
||||||
9. Copy all of the new engine files into `D3-open-source` and overwrite any conflicts.
|
more cutting-edge experience with the latest features, use the artifacts
|
||||||
|
from the latest automated build. You can find the list of automated
|
||||||
|
builds [here](https://github.com/DescentDevelopers/Descent3/actions/workflows/build.yml?query=branch%3Amain+event%3Apush).
|
||||||
|
- If you want to build the engine files yourself, the follow the
|
||||||
|
instructions in [BUILD.md](BUILD.md). Once you build the engine files,
|
||||||
|
they’ll be put in `builds/<platform>/<build-type>/`. For example, if
|
||||||
|
you’re using Linux and you create a “Release” build, then the files will
|
||||||
|
be located at `builds/linux/Release`.
|
||||||
|
|
||||||
|
9. Copy all the new engine files into `D3-open-source` and overwrite any
|
||||||
|
conflicts.
|
||||||
|
|
||||||
10. Special notes:
|
10. Special notes:
|
||||||
- D3 Open Source compiles level scripts in their own hogfiles. Make sure you copy and overwrite `d3-{platform}.hog`.
|
- D3 Open Source compiles level scripts in their own hogfiles. Make sure
|
||||||
|
you copy and overwrite `d3-{platform}.hog`.
|
||||||
|
|
||||||
11. Run the game:
|
11. Run the game:
|
||||||
- On Windows, run `D3-open-source\Descent3.exe` from a command-line or double-click on the `Descent3` executable.
|
- On Windows, run `D3-open-source\Descent3.exe` from a command-line or
|
||||||
- On Linux, `cd` to `D3-open-source` and run `./Descent3`. Wayland users may need to set environement variable `SDL_VIDEODRIVER=wayland` before launching the game.
|
double-click on the `Descent3` executable.
|
||||||
- On MacOS, the `.app` bundle is currently not signed, so your operating system will not let you run it by double-clicking it. To remediate that, open your terminal and `cd` to `D3-open-source`. Run `xattr -c ./Descent3.app` and then `chmod +x ./Descent3.app/Content/MacOS/Descent3`, then run the game using `./Descent3.app/Content/MacOS/Descent3`
|
- On Linux, `cd` to `D3-open-source` and run `./Descent3`. Wayland users
|
||||||
|
may need to set environment variable `SDL_VIDEODRIVER=wayland` before
|
||||||
|
launching the game.
|
||||||
|
- On macOS, the `.app` bundle is currently not signed, so your operating
|
||||||
|
system will not let you run it by double-clicking it. To remediate that,
|
||||||
|
open your terminal and `cd` to `D3-open-source`. Run
|
||||||
|
`xattr -c ./Descent3.app` and then
|
||||||
|
`chmod +x ./Descent3.app/Content/MacOS/Descent3`, then run the game
|
||||||
|
using `./Descent3.app/Content/MacOS/Descent3`
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
@ -33,7 +76,9 @@ This is the first release of the Descent 3 open source engine, that should be co
|
|||||||
Descent 3 Message(Error: Couldn't find the string table.)
|
Descent 3 Message(Error: Couldn't find the string table.)
|
||||||
```
|
```
|
||||||
|
|
||||||
This error means that game data could not be found. Make sure you copied all game files to the `D3-open-source` folder, and that you're running the game from this same folder.
|
This error means that game data could not be found. Make sure you copied all
|
||||||
|
game files to the `D3-open-source` folder, and that you're running the game
|
||||||
|
from this same folder.
|
||||||
|
|
||||||
## Command line options
|
## Command line options
|
||||||
|
|
||||||
|
58
cmake/HogMaker.cmake
Normal file
58
cmake/HogMaker.cmake
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
# Descent 3
|
||||||
|
# Copyright (C) 2024 Descent Developers
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
|
# - Function making a HOG file based on supplied filelist.
|
||||||
|
#
|
||||||
|
# This module provides function MakeHog() used for building HOG files.
|
||||||
|
# MakeHog() registers custom target TARGET which can be used as dependency.
|
||||||
|
#
|
||||||
|
# MakeHog(
|
||||||
|
# <TARGET target>
|
||||||
|
# <OUTPUT d3-full-win32.hog>
|
||||||
|
# <INPUT_FILE filelist.txt>
|
||||||
|
# [SEARCH_PATH additional_dirs]
|
||||||
|
# [DEPENDS additional_dependencies]
|
||||||
|
# )
|
||||||
|
#
|
||||||
|
|
||||||
|
function(MakeHog)
|
||||||
|
set(options)
|
||||||
|
set(oneValueArgs INPUT_FILE OUTPUT TARGET)
|
||||||
|
set(multiValueArgs DEPENDS SEARCH_PATH)
|
||||||
|
|
||||||
|
cmake_parse_arguments(PARSE_ARGV 0
|
||||||
|
"HOG"
|
||||||
|
"${options}"
|
||||||
|
"${oneValueArgs}"
|
||||||
|
"${multiValueArgs}"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Register custom target for tracking dependencies
|
||||||
|
add_custom_target("${HOG_TARGET}"
|
||||||
|
DEPENDS "${HOG_OUTPUT}"
|
||||||
|
)
|
||||||
|
|
||||||
|
add_custom_command(OUTPUT "${HOG_OUTPUT}"
|
||||||
|
COMMAND $<TARGET_FILE:HogMaker>
|
||||||
|
"${HOG_OUTPUT}"
|
||||||
|
"${HOG_INPUT_FILE}"
|
||||||
|
"${HOG_SEARCH_PATH}"
|
||||||
|
DEPENDS HogMaker ${HOG_INPUT_FILE} ${HOG_DEPENDS}
|
||||||
|
COMMENT "Generate ${HOG_OUTPUT}"
|
||||||
|
COMMAND_EXPAND_LISTS
|
||||||
|
)
|
||||||
|
endfunction()
|
@ -26,14 +26,16 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
|||||||
set_target_properties(Descent3_Online_TCP_IP PROPERTIES SUFFIX ".dylib")
|
set_target_properties(Descent3_Online_TCP_IP PROPERTIES SUFFIX ".dylib")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_custom_target(Descent3_Online_TCP_IP_Hog
|
include(HogMaker)
|
||||||
COMMAND $<TARGET_FILE:HogMaker>
|
MakeHog(
|
||||||
"$<TARGET_FILE_DIR:Descent3>/online/Descent3 Online.d3c"
|
TARGET Descent3_Online_TCP_IP_Hog
|
||||||
"${CMAKE_SOURCE_DIR}/netcon/descent3onlineclient/d3online.d3c.txt"
|
OUTPUT "${D3_GENERATED_FILES_OUTPUT_DIRECTORY}/online/Descent3 Online.d3c"
|
||||||
"${CMAKE_SOURCE_DIR}/scripts/data/fullhog/"
|
INPUT_FILE "${CMAKE_SOURCE_DIR}/netcon/descent3onlineclient/d3online.d3c.txt"
|
||||||
"$<TARGET_FILE_DIR:Descent3_Online_TCP_IP>"
|
SEARCH_PATH "$<TARGET_FILE_DIR:Descent3_Online_TCP_IP>" "${CMAKE_SOURCE_DIR}/scripts/data/fullhog/"
|
||||||
|
DEPENDS Descent3_Online_TCP_IP
|
||||||
DEPENDS Descent3_Online_TCP_IP HogMaker
|
)
|
||||||
COMMENT "Generate 'Descent3 Online.d3c'"
|
|
||||||
|
install(
|
||||||
|
FILES "${D3_GENERATED_FILES_OUTPUT_DIRECTORY}/online/Descent3 Online.d3c"
|
||||||
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/online
|
||||||
)
|
)
|
||||||
install(FILES "$<TARGET_FILE_DIR:Descent3>/online/Descent3 Online.d3c" DESTINATION ${CMAKE_INSTALL_DATADIR}/online)
|
|
||||||
|
@ -4,4 +4,3 @@ Descent3 Online.dll
|
|||||||
Descent3 Online.dylib
|
Descent3 Online.dylib
|
||||||
d3online_main.ogf
|
d3online_main.ogf
|
||||||
d3online_game.ogf
|
d3online_game.ogf
|
||||||
|
|
||||||
|
@ -19,14 +19,16 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
|||||||
set_target_properties(Direct_TCP_IP PROPERTIES SUFFIX ".dylib")
|
set_target_properties(Direct_TCP_IP PROPERTIES SUFFIX ".dylib")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_custom_target(Direct_TCP_IP_Hog
|
include(HogMaker)
|
||||||
COMMAND $<TARGET_FILE:HogMaker>
|
MakeHog(
|
||||||
"$<TARGET_FILE_DIR:Descent3>/online/Direct TCP~IP.d3c"
|
TARGET Direct_TCP_IP_Hog
|
||||||
"${CMAKE_SOURCE_DIR}/netcon/lanclient/TCP_IP.d3c.txt"
|
OUTPUT "${D3_GENERATED_FILES_OUTPUT_DIRECTORY}/online/Direct TCP~IP.d3c"
|
||||||
"${CMAKE_SOURCE_DIR}/scripts/data/fullhog/"
|
INPUT_FILE "${CMAKE_SOURCE_DIR}/netcon/lanclient/TCP_IP.d3c.txt"
|
||||||
"$<TARGET_FILE_DIR:Direct_TCP_IP>"
|
SEARCH_PATH "$<TARGET_FILE_DIR:Direct_TCP_IP>" "${CMAKE_SOURCE_DIR}/scripts/data/fullhog/"
|
||||||
|
DEPENDS Direct_TCP_IP
|
||||||
DEPENDS Direct_TCP_IP HogMaker
|
)
|
||||||
COMMENT "Generate 'Direct TCP~IP.d3c'"
|
|
||||||
|
install(
|
||||||
|
FILES "${D3_GENERATED_FILES_OUTPUT_DIRECTORY}/online/Direct TCP~IP.d3c"
|
||||||
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/online
|
||||||
)
|
)
|
||||||
install(FILES "$<TARGET_FILE_DIR:Descent3>/online/Direct TCP~IP.d3c" DESTINATION ${CMAKE_INSTALL_DATADIR}/online)
|
|
||||||
|
@ -29,14 +29,16 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
|||||||
set_target_properties(Parallax_Online PROPERTIES SUFFIX ".dylib")
|
set_target_properties(Parallax_Online PROPERTIES SUFFIX ".dylib")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_custom_target(Parallax_Online_Hog
|
include(HogMaker)
|
||||||
COMMAND $<TARGET_FILE:HogMaker>
|
MakeHog(
|
||||||
"$<TARGET_FILE_DIR:Descent3>/online/Parallax Online.d3c"
|
TARGET Parallax_Online_Hog
|
||||||
"${CMAKE_SOURCE_DIR}/netcon/mtclient/Parallax_Online.d3c.txt"
|
OUTPUT "${D3_GENERATED_FILES_OUTPUT_DIRECTORY}/online/Parallax Online.d3c"
|
||||||
"${CMAKE_SOURCE_DIR}/scripts/data/fullhog/"
|
INPUT_FILE "${CMAKE_SOURCE_DIR}/netcon/mtclient/Parallax_Online.d3c.txt"
|
||||||
"$<TARGET_FILE_DIR:Parallax_Online>"
|
SEARCH_PATH "$<TARGET_FILE_DIR:Parallax_Online>" "${CMAKE_SOURCE_DIR}/scripts/data/fullhog/"
|
||||||
|
DEPENDS Parallax_Online
|
||||||
DEPENDS Parallax_Online HogMaker
|
)
|
||||||
COMMENT "Generate 'Parallax Online.d3c'"
|
|
||||||
|
install(
|
||||||
|
FILES "${D3_GENERATED_FILES_OUTPUT_DIRECTORY}/online/Parallax Online.d3c"
|
||||||
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/online
|
||||||
)
|
)
|
||||||
install(FILES "$<TARGET_FILE_DIR:Descent3>/online/Parallax Online.d3c" DESTINATION ${CMAKE_INSTALL_DATADIR}/online)
|
|
||||||
|
@ -11,16 +11,3 @@ add_subdirectory(hyperanarchy)
|
|||||||
add_subdirectory(monsterball)
|
add_subdirectory(monsterball)
|
||||||
add_subdirectory(roboanarchy)
|
add_subdirectory(roboanarchy)
|
||||||
add_subdirectory(tanarchy)
|
add_subdirectory(tanarchy)
|
||||||
|
|
||||||
add_custom_target(NetgamesDir
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:anarchy> "$<TARGET_FILE_DIR:Descent3>/netgames/Anarchy.d3m"
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:coop> "$<TARGET_FILE_DIR:Descent3>/netgames/Co-op.d3m"
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:ctf> "$<TARGET_FILE_DIR:Descent3>/netgames/CTF.d3m"
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:entropy> "$<TARGET_FILE_DIR:Descent3>/netgames/Entropy.d3m"
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:hoard> "$<TARGET_FILE_DIR:Descent3>/netgames/Hoard.d3m"
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:hyperanarchy> "$<TARGET_FILE_DIR:Descent3>/netgames/Hyper-Anarchy.d3m"
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:monsterball> "$<TARGET_FILE_DIR:Descent3>/netgames/Monsterball.d3m"
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:roboanarchy> "$<TARGET_FILE_DIR:Descent3>/netgames/Robo-Anarchy.d3m"
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:tanarchy> "$<TARGET_FILE_DIR:Descent3>/netgames/Team Anarchy.d3m"
|
|
||||||
COMMENT "Create netgames/ directory"
|
|
||||||
)
|
|
||||||
|
@ -7,6 +7,8 @@ add_library(${NETGAME_MODULE} MODULE ${CPPS} ${HEADERS})
|
|||||||
set_target_properties(${NETGAME_MODULE} PROPERTIES CXX_VISIBILITY_PRESET "hidden")
|
set_target_properties(${NETGAME_MODULE} PROPERTIES CXX_VISIBILITY_PRESET "hidden")
|
||||||
set_target_properties(${NETGAME_MODULE} PROPERTIES PREFIX "")
|
set_target_properties(${NETGAME_MODULE} PROPERTIES PREFIX "")
|
||||||
set_target_properties(${NETGAME_MODULE} PROPERTIES SUFFIX ".d3m")
|
set_target_properties(${NETGAME_MODULE} PROPERTIES SUFFIX ".d3m")
|
||||||
|
set_target_properties(${NETGAME_MODULE} PROPERTIES LIBRARY_OUTPUT_NAME "anarchy")
|
||||||
|
set_target_properties(${NETGAME_MODULE} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "$<TARGET_FILE_DIR:Descent3>/netgames")
|
||||||
|
|
||||||
target_link_libraries(${NETGAME_MODULE} PRIVATE
|
target_link_libraries(${NETGAME_MODULE} PRIVATE
|
||||||
dmfc
|
dmfc
|
||||||
|
@ -9,6 +9,8 @@ add_library(${NETGAME_MODULE} MODULE ${CPPS} ${HEADERS})
|
|||||||
set_target_properties(${NETGAME_MODULE} PROPERTIES CXX_VISIBILITY_PRESET "hidden")
|
set_target_properties(${NETGAME_MODULE} PROPERTIES CXX_VISIBILITY_PRESET "hidden")
|
||||||
set_target_properties(${NETGAME_MODULE} PROPERTIES PREFIX "")
|
set_target_properties(${NETGAME_MODULE} PROPERTIES PREFIX "")
|
||||||
set_target_properties(${NETGAME_MODULE} PROPERTIES SUFFIX ".d3m")
|
set_target_properties(${NETGAME_MODULE} PROPERTIES SUFFIX ".d3m")
|
||||||
|
set_target_properties(${NETGAME_MODULE} PROPERTIES LIBRARY_OUTPUT_NAME "co-op")
|
||||||
|
set_target_properties(${NETGAME_MODULE} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "$<TARGET_FILE_DIR:Descent3>/netgames")
|
||||||
|
|
||||||
target_link_libraries(${NETGAME_MODULE} PRIVATE
|
target_link_libraries(${NETGAME_MODULE} PRIVATE
|
||||||
dmfc
|
dmfc
|
||||||
|
@ -7,6 +7,8 @@ add_library(${NETGAME_MODULE} MODULE ${CPPS} ${HEADERS})
|
|||||||
set_target_properties(${NETGAME_MODULE} PROPERTIES CXX_VISIBILITY_PRESET "hidden")
|
set_target_properties(${NETGAME_MODULE} PROPERTIES CXX_VISIBILITY_PRESET "hidden")
|
||||||
set_target_properties(${NETGAME_MODULE} PROPERTIES PREFIX "")
|
set_target_properties(${NETGAME_MODULE} PROPERTIES PREFIX "")
|
||||||
set_target_properties(${NETGAME_MODULE} PROPERTIES SUFFIX ".d3m")
|
set_target_properties(${NETGAME_MODULE} PROPERTIES SUFFIX ".d3m")
|
||||||
|
set_target_properties(${NETGAME_MODULE} PROPERTIES LIBRARY_OUTPUT_NAME "ctf")
|
||||||
|
set_target_properties(${NETGAME_MODULE} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "$<TARGET_FILE_DIR:Descent3>/netgames")
|
||||||
|
|
||||||
target_link_libraries(${NETGAME_MODULE} PRIVATE
|
target_link_libraries(${NETGAME_MODULE} PRIVATE
|
||||||
dmfc
|
dmfc
|
||||||
|
@ -7,6 +7,8 @@ add_library(${NETGAME_MODULE} MODULE ${CPPS} ${HEADERS})
|
|||||||
set_target_properties(${NETGAME_MODULE} PROPERTIES CXX_VISIBILITY_PRESET "hidden")
|
set_target_properties(${NETGAME_MODULE} PROPERTIES CXX_VISIBILITY_PRESET "hidden")
|
||||||
set_target_properties(${NETGAME_MODULE} PROPERTIES PREFIX "")
|
set_target_properties(${NETGAME_MODULE} PROPERTIES PREFIX "")
|
||||||
set_target_properties(${NETGAME_MODULE} PROPERTIES SUFFIX ".d3m")
|
set_target_properties(${NETGAME_MODULE} PROPERTIES SUFFIX ".d3m")
|
||||||
|
set_target_properties(${NETGAME_MODULE} PROPERTIES LIBRARY_OUTPUT_NAME "entropy")
|
||||||
|
set_target_properties(${NETGAME_MODULE} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "$<TARGET_FILE_DIR:Descent3>/netgames")
|
||||||
|
|
||||||
target_link_libraries(${NETGAME_MODULE} PRIVATE
|
target_link_libraries(${NETGAME_MODULE} PRIVATE
|
||||||
dmfc
|
dmfc
|
||||||
|
@ -7,6 +7,8 @@ add_library(${NETGAME_MODULE} MODULE ${CPPS} ${HEADERS})
|
|||||||
set_target_properties(${NETGAME_MODULE} PROPERTIES CXX_VISIBILITY_PRESET "hidden")
|
set_target_properties(${NETGAME_MODULE} PROPERTIES CXX_VISIBILITY_PRESET "hidden")
|
||||||
set_target_properties(${NETGAME_MODULE} PROPERTIES PREFIX "")
|
set_target_properties(${NETGAME_MODULE} PROPERTIES PREFIX "")
|
||||||
set_target_properties(${NETGAME_MODULE} PROPERTIES SUFFIX ".d3m")
|
set_target_properties(${NETGAME_MODULE} PROPERTIES SUFFIX ".d3m")
|
||||||
|
set_target_properties(${NETGAME_MODULE} PROPERTIES LIBRARY_OUTPUT_NAME "hoard")
|
||||||
|
set_target_properties(${NETGAME_MODULE} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "$<TARGET_FILE_DIR:Descent3>/netgames")
|
||||||
|
|
||||||
target_link_libraries(${NETGAME_MODULE} PRIVATE
|
target_link_libraries(${NETGAME_MODULE} PRIVATE
|
||||||
dmfc
|
dmfc
|
||||||
|
@ -7,6 +7,8 @@ add_library(${NETGAME_MODULE} MODULE ${CPPS} ${HEADERS})
|
|||||||
set_target_properties(${NETGAME_MODULE} PROPERTIES CXX_VISIBILITY_PRESET "hidden")
|
set_target_properties(${NETGAME_MODULE} PROPERTIES CXX_VISIBILITY_PRESET "hidden")
|
||||||
set_target_properties(${NETGAME_MODULE} PROPERTIES PREFIX "")
|
set_target_properties(${NETGAME_MODULE} PROPERTIES PREFIX "")
|
||||||
set_target_properties(${NETGAME_MODULE} PROPERTIES SUFFIX ".d3m")
|
set_target_properties(${NETGAME_MODULE} PROPERTIES SUFFIX ".d3m")
|
||||||
|
set_target_properties(${NETGAME_MODULE} PROPERTIES LIBRARY_OUTPUT_NAME "hyper-anarchy")
|
||||||
|
set_target_properties(${NETGAME_MODULE} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "$<TARGET_FILE_DIR:Descent3>/netgames")
|
||||||
|
|
||||||
target_link_libraries(${NETGAME_MODULE} PRIVATE
|
target_link_libraries(${NETGAME_MODULE} PRIVATE
|
||||||
dmfc
|
dmfc
|
||||||
|
@ -7,6 +7,8 @@ add_library(${NETGAME_MODULE} MODULE ${CPPS} ${HEADERS})
|
|||||||
set_target_properties(${NETGAME_MODULE} PROPERTIES CXX_VISIBILITY_PRESET "hidden")
|
set_target_properties(${NETGAME_MODULE} PROPERTIES CXX_VISIBILITY_PRESET "hidden")
|
||||||
set_target_properties(${NETGAME_MODULE} PROPERTIES PREFIX "")
|
set_target_properties(${NETGAME_MODULE} PROPERTIES PREFIX "")
|
||||||
set_target_properties(${NETGAME_MODULE} PROPERTIES SUFFIX ".d3m")
|
set_target_properties(${NETGAME_MODULE} PROPERTIES SUFFIX ".d3m")
|
||||||
|
set_target_properties(${NETGAME_MODULE} PROPERTIES LIBRARY_OUTPUT_NAME "monsterball")
|
||||||
|
set_target_properties(${NETGAME_MODULE} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "$<TARGET_FILE_DIR:Descent3>/netgames")
|
||||||
|
|
||||||
target_link_libraries(${NETGAME_MODULE} PRIVATE
|
target_link_libraries(${NETGAME_MODULE} PRIVATE
|
||||||
dmfc
|
dmfc
|
||||||
|
@ -7,6 +7,8 @@ add_library(${NETGAME_MODULE} MODULE ${CPPS} ${HEADERS})
|
|||||||
set_target_properties(${NETGAME_MODULE} PROPERTIES CXX_VISIBILITY_PRESET "hidden")
|
set_target_properties(${NETGAME_MODULE} PROPERTIES CXX_VISIBILITY_PRESET "hidden")
|
||||||
set_target_properties(${NETGAME_MODULE} PROPERTIES PREFIX "")
|
set_target_properties(${NETGAME_MODULE} PROPERTIES PREFIX "")
|
||||||
set_target_properties(${NETGAME_MODULE} PROPERTIES SUFFIX ".d3m")
|
set_target_properties(${NETGAME_MODULE} PROPERTIES SUFFIX ".d3m")
|
||||||
|
set_target_properties(${NETGAME_MODULE} PROPERTIES LIBRARY_OUTPUT_NAME "robo-anarchy")
|
||||||
|
set_target_properties(${NETGAME_MODULE} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "$<TARGET_FILE_DIR:Descent3>/netgames")
|
||||||
|
|
||||||
target_link_libraries(${NETGAME_MODULE} PRIVATE
|
target_link_libraries(${NETGAME_MODULE} PRIVATE
|
||||||
dmfc
|
dmfc
|
||||||
|
@ -7,6 +7,8 @@ add_library(${NETGAME_MODULE} MODULE ${CPPS} ${HEADERS})
|
|||||||
set_target_properties(${NETGAME_MODULE} PROPERTIES CXX_VISIBILITY_PRESET "hidden")
|
set_target_properties(${NETGAME_MODULE} PROPERTIES CXX_VISIBILITY_PRESET "hidden")
|
||||||
set_target_properties(${NETGAME_MODULE} PROPERTIES PREFIX "")
|
set_target_properties(${NETGAME_MODULE} PROPERTIES PREFIX "")
|
||||||
set_target_properties(${NETGAME_MODULE} PROPERTIES SUFFIX ".d3m")
|
set_target_properties(${NETGAME_MODULE} PROPERTIES SUFFIX ".d3m")
|
||||||
|
set_target_properties(${NETGAME_MODULE} PROPERTIES LIBRARY_OUTPUT_NAME "team anarchy")
|
||||||
|
set_target_properties(${NETGAME_MODULE} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "$<TARGET_FILE_DIR:Descent3>/netgames")
|
||||||
|
|
||||||
target_link_libraries(${NETGAME_MODULE} PRIVATE
|
target_link_libraries(${NETGAME_MODULE} PRIVATE
|
||||||
dmfc
|
dmfc
|
||||||
|
@ -67,12 +67,8 @@ set(SCRIPTS
|
|||||||
SewerRat
|
SewerRat
|
||||||
testscript
|
testscript
|
||||||
TrainingMission
|
TrainingMission
|
||||||
Y2K)
|
Y2K
|
||||||
|
)
|
||||||
#add_custom_target(HogDemo-copy
|
|
||||||
# COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/scripts/data/demohog ${CMAKE_BINARY_DIR}/scripts/data/demohog/
|
|
||||||
# COMMENT "Copy script/data/demohog directory"
|
|
||||||
#)
|
|
||||||
|
|
||||||
add_library(dallas STATIC DallasFuncs.cpp osiris_import.cpp osiris_vector.cpp)
|
add_library(dallas STATIC DallasFuncs.cpp osiris_import.cpp osiris_vector.cpp)
|
||||||
set_target_properties(dallas PROPERTIES PREFIX "")
|
set_target_properties(dallas PROPERTIES PREFIX "")
|
||||||
@ -94,25 +90,19 @@ foreach(SCRIPT ${SCRIPTS})
|
|||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
|
include(HogMaker)
|
||||||
set(HOG_NAME "linux")
|
MakeHog(
|
||||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
TARGET HogFull
|
||||||
set(HOG_NAME "osx")
|
OUTPUT "${D3_GENERATED_FILES_OUTPUT_DIRECTORY}/d3-${HOG_NAME}.hog"
|
||||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
INPUT_FILE "${CMAKE_SOURCE_DIR}/scripts/data/fullhog/d3-${HOG_NAME}-fullhog.txt"
|
||||||
set(HOG_NAME "win")
|
SEARCH_PATH "$<TARGET_FILE_DIR:AIGame>"
|
||||||
endif()
|
DEPENDS ${SCRIPTS}
|
||||||
|
|
||||||
add_custom_target(HogFull
|
|
||||||
COMMAND $<TARGET_FILE:HogMaker>
|
|
||||||
"$<TARGET_FILE_DIR:Descent3>/d3-${HOG_NAME}.hog"
|
|
||||||
"${CMAKE_SOURCE_DIR}/scripts/data/fullhog/d3-${HOG_NAME}-fullhog.txt"
|
|
||||||
"$<TARGET_FILE_DIR:AIGame>"
|
|
||||||
DEPENDS ${SCRIPTS} HogMaker data/fullhog/d3-${HOG_NAME}-fullhog.txt
|
|
||||||
COMMENT "Generate fullhog/d3-${HOG_NAME}.hog"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# Place file next to Descent3 executable on installation
|
install(
|
||||||
install(FILES "$<TARGET_FILE_DIR:Descent3>/d3-${HOG_NAME}.hog" DESTINATION ${CMAKE_INSTALL_DATADIR})
|
FILES "${D3_GENERATED_FILES_OUTPUT_DIRECTORY}/d3-${HOG_NAME}.hog"
|
||||||
|
DESTINATION ${CMAKE_INSTALL_DATADIR}
|
||||||
|
)
|
||||||
|
|
||||||
# FIXME: there may be only one d3-linux.hog, need deal with demo somehow.
|
# FIXME: there may be only one d3-linux.hog, need deal with demo somehow.
|
||||||
# add_custom_target(HogLinuxDemo
|
# add_custom_target(HogLinuxDemo
|
||||||
|
@ -1,7 +1,11 @@
|
|||||||
|
if(CMAKE_CROSSCOMPILING)
|
||||||
|
find_package(HogMaker)
|
||||||
|
else()
|
||||||
add_executable(
|
add_executable(
|
||||||
HogMaker
|
HogMaker
|
||||||
HogMaker/HogFormat.cpp
|
HogMaker/HogFormat.cpp
|
||||||
HogMaker/HogMaker.cpp
|
HogMaker/HogMaker.cpp
|
||||||
)
|
)
|
||||||
add_dependencies(HogMaker get_git_hash)
|
|
||||||
target_include_directories(HogMaker PRIVATE ${PROJECT_BINARY_DIR}/lib)
|
target_include_directories(HogMaker PRIVATE ${PROJECT_BINARY_DIR}/lib)
|
||||||
|
export(TARGETS HogMaker FILE "${CMAKE_BINARY_DIR}/HogMakerConfig.cmake")
|
||||||
|
endif()
|
||||||
|
@ -22,7 +22,6 @@
|
|||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include "d3_version.h"
|
|
||||||
#include "HogFormat.h"
|
#include "HogFormat.h"
|
||||||
|
|
||||||
// TODO: To our descendants from the future: remove it when code will support C++20
|
// TODO: To our descendants from the future: remove it when code will support C++20
|
||||||
@ -48,7 +47,7 @@ int main(int argc, char *argv[]) {
|
|||||||
std::vector<std::filesystem::path> input_files;
|
std::vector<std::filesystem::path> input_files;
|
||||||
|
|
||||||
if (argc < 3) {
|
if (argc < 3) {
|
||||||
std::cout << "HogMaker v" << D3_MAJORVER << "." << D3_MINORVER << "." << D3_BUILD << "-g" << D3_GIT_HASH << "\n"
|
std::cout << "HogMaker - tool for creating Descent3 HOG2 files.\n"
|
||||||
<< "Usage:\n"
|
<< "Usage:\n"
|
||||||
<< " " << argv[0] << " <hogfile.hog> <inputfile.txt> [search_path]\n"
|
<< " " << argv[0] << " <hogfile.hog> <inputfile.txt> [search_path]\n"
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
|
Loading…
Reference in New Issue
Block a user