Make compilation process compatible to linux on gcc

This commit is contained in:
Jan 2021-03-03 06:21:25 -08:00
parent 1cd06668e0
commit b4d8e9c17b
23 changed files with 210 additions and 23 deletions

View File

@ -55,6 +55,15 @@ TargetDirectoryBin = "%{wks.location}/bin/%{cfg.buildcfg}_%{cfg.platform}"
TargetDirectoryLib = "%{wks.location}/lib/%{cfg.buildcfg}_%{cfg.platform}"
TargetDirectoryTest = "%{wks.location}/lib/%{cfg.buildcfg}_%{cfg.platform}/tests"
-- Platform functions
function ExecutableByOs(name)
if os.host() == "windows" then
return name .. ".exe"
else
return name
end
end
-- ==================
-- Workspace
-- ==================

View File

@ -0,0 +1,145 @@
/*
* Copyright 2016 Józef Kucia for CodeWeavers
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
const unsigned int DXGI_FORMAT_DEFINED = 1;
typedef enum DXGI_FORMAT
{
DXGI_FORMAT_UNKNOWN = 0x00,
DXGI_FORMAT_R32G32B32A32_TYPELESS = 0x01,
DXGI_FORMAT_R32G32B32A32_FLOAT = 0x02,
DXGI_FORMAT_R32G32B32A32_UINT = 0x03,
DXGI_FORMAT_R32G32B32A32_SINT = 0x04,
DXGI_FORMAT_R32G32B32_TYPELESS = 0x05,
DXGI_FORMAT_R32G32B32_FLOAT = 0x06,
DXGI_FORMAT_R32G32B32_UINT = 0x07,
DXGI_FORMAT_R32G32B32_SINT = 0x08,
DXGI_FORMAT_R16G16B16A16_TYPELESS = 0x09,
DXGI_FORMAT_R16G16B16A16_FLOAT = 0x0a,
DXGI_FORMAT_R16G16B16A16_UNORM = 0x0b,
DXGI_FORMAT_R16G16B16A16_UINT = 0x0c,
DXGI_FORMAT_R16G16B16A16_SNORM = 0x0d,
DXGI_FORMAT_R16G16B16A16_SINT = 0x0e,
DXGI_FORMAT_R32G32_TYPELESS = 0x0f,
DXGI_FORMAT_R32G32_FLOAT = 0x10,
DXGI_FORMAT_R32G32_UINT = 0x11,
DXGI_FORMAT_R32G32_SINT = 0x12,
DXGI_FORMAT_R32G8X24_TYPELESS = 0x13,
DXGI_FORMAT_D32_FLOAT_S8X24_UINT = 0x14,
DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS = 0x15,
DXGI_FORMAT_X32_TYPELESS_G8X24_UINT = 0x16,
DXGI_FORMAT_R10G10B10A2_TYPELESS = 0x17,
DXGI_FORMAT_R10G10B10A2_UNORM = 0x18,
DXGI_FORMAT_R10G10B10A2_UINT = 0x19,
DXGI_FORMAT_R11G11B10_FLOAT = 0x1a,
DXGI_FORMAT_R8G8B8A8_TYPELESS = 0x1b,
DXGI_FORMAT_R8G8B8A8_UNORM = 0x1c,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 0x1d,
DXGI_FORMAT_R8G8B8A8_UINT = 0x1e,
DXGI_FORMAT_R8G8B8A8_SNORM = 0x1f,
DXGI_FORMAT_R8G8B8A8_SINT = 0x20,
DXGI_FORMAT_R16G16_TYPELESS = 0x21,
DXGI_FORMAT_R16G16_FLOAT = 0x22,
DXGI_FORMAT_R16G16_UNORM = 0x23,
DXGI_FORMAT_R16G16_UINT = 0x24,
DXGI_FORMAT_R16G16_SNORM = 0x25,
DXGI_FORMAT_R16G16_SINT = 0x26,
DXGI_FORMAT_R32_TYPELESS = 0x27,
DXGI_FORMAT_D32_FLOAT = 0x28,
DXGI_FORMAT_R32_FLOAT = 0x29,
DXGI_FORMAT_R32_UINT = 0x2a,
DXGI_FORMAT_R32_SINT = 0x2b,
DXGI_FORMAT_R24G8_TYPELESS = 0x2c,
DXGI_FORMAT_D24_UNORM_S8_UINT = 0x2d,
DXGI_FORMAT_R24_UNORM_X8_TYPELESS = 0x2e,
DXGI_FORMAT_X24_TYPELESS_G8_UINT = 0x2f,
DXGI_FORMAT_R8G8_TYPELESS = 0x30,
DXGI_FORMAT_R8G8_UNORM = 0x31,
DXGI_FORMAT_R8G8_UINT = 0x32,
DXGI_FORMAT_R8G8_SNORM = 0x33,
DXGI_FORMAT_R8G8_SINT = 0x34,
DXGI_FORMAT_R16_TYPELESS = 0x35,
DXGI_FORMAT_R16_FLOAT = 0x36,
DXGI_FORMAT_D16_UNORM = 0x37,
DXGI_FORMAT_R16_UNORM = 0x38,
DXGI_FORMAT_R16_UINT = 0x39,
DXGI_FORMAT_R16_SNORM = 0x3a,
DXGI_FORMAT_R16_SINT = 0x3b,
DXGI_FORMAT_R8_TYPELESS = 0x3c,
DXGI_FORMAT_R8_UNORM = 0x3d,
DXGI_FORMAT_R8_UINT = 0x3e,
DXGI_FORMAT_R8_SNORM = 0x3f,
DXGI_FORMAT_R8_SINT = 0x40,
DXGI_FORMAT_A8_UNORM = 0x41,
DXGI_FORMAT_R1_UNORM = 0x42,
DXGI_FORMAT_R9G9B9E5_SHAREDEXP = 0x43,
DXGI_FORMAT_R8G8_B8G8_UNORM = 0x44,
DXGI_FORMAT_G8R8_G8B8_UNORM = 0x45,
DXGI_FORMAT_BC1_TYPELESS = 0x46,
DXGI_FORMAT_BC1_UNORM = 0x47,
DXGI_FORMAT_BC1_UNORM_SRGB = 0x48,
DXGI_FORMAT_BC2_TYPELESS = 0x49,
DXGI_FORMAT_BC2_UNORM = 0x4a,
DXGI_FORMAT_BC2_UNORM_SRGB = 0x4b,
DXGI_FORMAT_BC3_TYPELESS = 0x4c,
DXGI_FORMAT_BC3_UNORM = 0x4d,
DXGI_FORMAT_BC3_UNORM_SRGB = 0x4e,
DXGI_FORMAT_BC4_TYPELESS = 0x4f,
DXGI_FORMAT_BC4_UNORM = 0x50,
DXGI_FORMAT_BC4_SNORM = 0x51,
DXGI_FORMAT_BC5_TYPELESS = 0x52,
DXGI_FORMAT_BC5_UNORM = 0x53,
DXGI_FORMAT_BC5_SNORM = 0x54,
DXGI_FORMAT_B5G6R5_UNORM = 0x55,
DXGI_FORMAT_B5G5R5A1_UNORM = 0x56,
DXGI_FORMAT_B8G8R8A8_UNORM = 0x57,
DXGI_FORMAT_B8G8R8X8_UNORM = 0x58,
DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM = 0x59,
DXGI_FORMAT_B8G8R8A8_TYPELESS = 0x5a,
DXGI_FORMAT_B8G8R8A8_UNORM_SRGB = 0x5b,
DXGI_FORMAT_B8G8R8X8_TYPELESS = 0x5c,
DXGI_FORMAT_B8G8R8X8_UNORM_SRGB = 0x5d,
DXGI_FORMAT_BC6H_TYPELESS = 0x5e,
DXGI_FORMAT_BC6H_UF16 = 0x5f,
DXGI_FORMAT_BC6H_SF16 = 0x60,
DXGI_FORMAT_BC7_TYPELESS = 0x61,
DXGI_FORMAT_BC7_UNORM = 0x62,
DXGI_FORMAT_BC7_UNORM_SRGB = 0x63,
DXGI_FORMAT_AYUV = 0x64,
DXGI_FORMAT_Y410 = 0x65,
DXGI_FORMAT_Y416 = 0x66,
DXGI_FORMAT_NV12 = 0x67,
DXGI_FORMAT_P010 = 0x68,
DXGI_FORMAT_P016 = 0x69,
DXGI_FORMAT_420_OPAQUE = 0x6a,
DXGI_FORMAT_YUY2 = 0x6b,
DXGI_FORMAT_Y210 = 0x6c,
DXGI_FORMAT_Y216 = 0x6d,
DXGI_FORMAT_NV11 = 0x6e,
DXGI_FORMAT_AI44 = 0x6f,
DXGI_FORMAT_IA44 = 0x70,
DXGI_FORMAT_P8 = 0x71,
DXGI_FORMAT_A8P8 = 0x72,
DXGI_FORMAT_B4G4R4A4_UNORM = 0x73,
DXGI_FORMAT_P208 = 0x82,
DXGI_FORMAT_V208 = 0x83,
DXGI_FORMAT_V408 = 0x84,
DXGI_FORMAT_FORCE_UINT = 0xffffffff,
} DXGI_FORMAT;

View File

@ -1,7 +1,7 @@
#pragma once
#include <cstdint>
#include <dxgiformat.h>
#include "DxgiFormat.h"
enum class ImageFormatId
{

View File

@ -1,7 +1,7 @@
Utils = {}
function Utils:include()
if References:include("Utils") then
if References:include(self:name()) then
includedirs {
path.join(ProjectFolder(), "Utils")
}
@ -9,8 +9,8 @@ function Utils:include()
end
function Utils:link()
if References:link("Utils") then
links "Utils"
if References:link(self:name()) then
links(self:name())
end
end
@ -18,12 +18,16 @@ function Utils:use()
end
function Utils:name()
return "Utils"
end
function Utils:project()
References:reset()
local folder = ProjectFolder();
project "Utils"
targetdir(TargetDirectoryLib)
project(self:name())
targetdir(TargetDirectoryLib)
location "%{wks.location}/src/%{prj.name}"
kind "StaticLib"
language "C++"

View File

@ -1,5 +1,7 @@
#pragma once
#include <utility>
#define STR(x) #x
#if defined(_MSVC_LANG)

View File

@ -1,5 +1,8 @@
#include "MemoryManager.h"
#include <cstdlib>
#include <cstring>
MemoryManager::AllocationInfo::AllocationInfo(IDestructible* data, void* dataPtr)
{
m_data = data;
@ -34,7 +37,7 @@ void* MemoryManager::Alloc(const size_t size)
char* MemoryManager::Dup(const char* str)
{
char* result = _strdup(str);
char* result = strdup(str);
m_allocations.push_back(result);
return result;
@ -51,4 +54,4 @@ void MemoryManager::Delete(void* data)
return;
}
}
}
}

View File

@ -188,19 +188,19 @@ function ZoneCode:project()
filter "files:**.gen"
buildmessage "Generating ZoneCode for game %{file.basename}"
buildcommands {
'"' .. TargetDirectoryBin .. '/ZoneCodeGenerator.exe"'
'"' .. TargetDirectoryBin .. '/' .. ExecutableByOs('ZoneCodeGenerator') .. '"'
.. ' -h "' .. path.join(path.getabsolute(ProjectFolder()), 'ZoneCode/Game/%{file.basename}/%{file.basename}.h') .. '"'
.. ' -c "' .. path.join(path.getabsolute(ProjectFolder()), 'ZoneCode/Game/%{file.basename}/%{file.basename}_Commands.txt') .. '"'
.. ' -o "%{wks.location}/src/ZoneCode/Game/%{file.basename}/XAssets"'
.. ' -g * ZoneLoad'
.. ' -g * ZoneWrite'
.. ' -g * AssetStructTests'
.. ' -g "*" ZoneLoad'
.. ' -g "*" ZoneWrite'
.. ' -g "*" AssetStructTests'
}
buildinputs {
path.join(ProjectFolder(), "ZoneCode/Game/%{file.basename}/%{file.basename}.h"),
path.join(ProjectFolder(), "ZoneCode/Game/%{file.basename}/%{file.basename}_Commands.txt"),
path.join(ProjectFolder(), "ZoneCommon/Game/%{file.basename}/%{file.basename}_Assets.h"),
TargetDirectoryBin .. "/ZoneCodeGenerator.exe"
TargetDirectoryBin .. "/" .. ExecutableByOs('ZoneCodeGenerator')
}
filter {}

View File

@ -46,6 +46,6 @@ function ZoneCodeGenerator:project()
self:include()
ZoneCodeGeneratorLib:include()
Utils:link()
ZoneCodeGeneratorLib:link()
Utils:link()
end

View File

@ -40,4 +40,6 @@ function ZoneCodeGeneratorLib:project()
}
self:include()
Utils:link()
end

View File

@ -1,5 +1,7 @@
#include "BaseTypeDefinition.h"
#include <type_traits>
BaseTypeDefinition::BaseTypeDefinition(std::string name, const unsigned size)
: DataDefinition("", std::move(name)),
m_size(size)
@ -57,4 +59,4 @@ const BaseTypeDefinition* const BaseTypeDefinition::ALL_BASE_TYPES[]
UNSIGNED_LONG_LONG,
VOID
};
const size_t BaseTypeDefinition::ALL_BASE_TYPES_COUNT = _countof(ALL_BASE_TYPES);
const size_t BaseTypeDefinition::ALL_BASE_TYPES_COUNT = std::extent<decltype(ALL_BASE_TYPES)>::value;

View File

@ -3,6 +3,7 @@
#include <list>
#include <sstream>
#include <vector>
#include <type_traits>
#include "CommandsMatcherFactory.h"
#include "Domain/Evaluation/OperandDynamic.h"
@ -19,7 +20,7 @@ std::unique_ptr<CommandsCommonMatchers::matcher_t> CommandsCommonMatchers::Typen
"int",
"long"
};
static_assert(_countof(BUILT_IN_TYPE_NAMES) == static_cast<int>(CommandsParserValueType::BUILT_IN_LAST) - static_cast<int>(CommandsParserValueType::BUILT_IN_FIRST) + 1);
static_assert(std::extent<decltype(BUILT_IN_TYPE_NAMES)>::value == static_cast<int>(CommandsParserValueType::BUILT_IN_LAST) - static_cast<int>(CommandsParserValueType::BUILT_IN_FIRST) + 1);
const CommandsMatcherFactory create(labelSupplier);

View File

@ -1,5 +1,7 @@
#include "SequenceReorder.h"
#include <list>
#include "Parsing/Commands/Matcher/CommandsMatcherFactory.h"
#include "Parsing/Commands/Matcher/CommandsCommonMatchers.h"

View File

@ -1,6 +1,7 @@
#include "HeaderCommonMatchers.h"
#include <sstream>
#include <type_traits>
#include "HeaderMatcherFactory.h"
@ -52,7 +53,7 @@ std::unique_ptr<HeaderCommonMatchers::matcher_t> HeaderCommonMatchers::Typename(
"int",
"long"
};
static_assert(_countof(BUILT_IN_TYPE_NAMES) == static_cast<int>(HeaderParserValueType::BUILT_IN_LAST) - static_cast<int>(HeaderParserValueType::BUILT_IN_FIRST) + 1);
static_assert(std::extent<decltype(BUILT_IN_TYPE_NAMES)>::value == static_cast<int>(HeaderParserValueType::BUILT_IN_LAST) - static_cast<int>(HeaderParserValueType::BUILT_IN_FIRST) + 1);
const HeaderMatcherFactory create(labelSupplier);

View File

@ -1,6 +1,7 @@
#pragma once
#include <string>
#include <functional>
#include "Utils/ClassUtils.h"

View File

@ -26,7 +26,7 @@ std::string ParsingException::FullMessage() const
return m_full_message;
}
char const* ParsingException::what() const
char const* ParsingException::what() const noexcept
{
return m_full_message.c_str();
}

View File

@ -18,5 +18,5 @@ public:
_NODISCARD TokenPos Position() const;
_NODISCARD const std::string& Message() const;
_NODISCARD std::string FullMessage() const;
_NODISCARD char const* what() const override;
_NODISCARD char const* what() const noexcept override;
};

View File

@ -1,6 +1,7 @@
#pragma once
#include <string>
#include <functional>
class TokenPos
{

View File

@ -1,5 +1,6 @@
#pragma once
#include "Utils/ClassUtils.h"
#include <string>
#include <vector>

View File

@ -1,6 +1,7 @@
#include "ZoneCodeGeneratorArguments.h"
#include <iostream>
#include <type_traits>
#include "Utils/Arguments/CommandLineOption.h"
#include "Utils/Arguments/UsageInformation.h"
@ -103,7 +104,7 @@ ZoneCodeGeneratorArguments::GenerationTask::GenerationTask(std::string assetName
}
ZoneCodeGeneratorArguments::ZoneCodeGeneratorArguments()
: m_argument_parser(COMMAND_LINE_OPTIONS, _countof(COMMAND_LINE_OPTIONS)),
: m_argument_parser(COMMAND_LINE_OPTIONS, std::extent<decltype(COMMAND_LINE_OPTIONS)>::value),
m_task_flags(0)
{
m_verbose = false;

View File

@ -1,6 +1,6 @@
#pragma once
#include <d3d11.h>
//#include <d3d11.h>
#include "Image/Texture.h"
#include "IW4_Assets.h"

View File

@ -3,6 +3,18 @@
#ifndef __IW4_ASSETS_H
#define __IW4_ASSETS_H
#ifndef __align
#ifdef __zonecodegenerator
#define __align alignas
#else
#if defined(_MSVC_LANG)
#define __align(x) __declspec(align(x))
#else
#define __align(x) alignas(x)
#endif
#endif
#endif
#ifndef __zonecodegenerator
namespace IW4
{

View File

@ -1,6 +1,6 @@
#pragma once
#include <d3d11.h>
//#include <d3d11.h>
#include "Image/Texture.h"
#include "T6_Assets.h"

View File

@ -4,7 +4,7 @@
#include <map>
#include "XAssetInfo.h"
#include "zone/Zone.h"
#include "Zone/Zone.h"
class Zone;