add test engine
This commit is contained in:
commit
10423e024f
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
.vs/
|
||||||
|
.vscode/
|
||||||
|
.xmake/
|
||||||
|
build/
|
||||||
|
vsxmake*/
|
||||||
|
.idea/
|
||||||
4
engine/include/api.h
Normal file
4
engine/include/api.h
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "zlib.h"
|
||||||
|
ENGINE_API const char* engine();
|
||||||
|
inline Module engine_module{engine(), true};
|
||||||
4
engine/modules/asset/include/asset.h
Normal file
4
engine/modules/asset/include/asset.h
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "zlib.h"
|
||||||
|
const char* asset();
|
||||||
|
inline Module asset_module{ asset(), false};
|
||||||
5
engine/modules/asset/src/asset.cpp
Normal file
5
engine/modules/asset/src/asset.cpp
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#include "asset.h"
|
||||||
|
|
||||||
|
const char* asset() {
|
||||||
|
return "asset";
|
||||||
|
}
|
||||||
8
engine/modules/asset/xmake.lua
Normal file
8
engine/modules/asset/xmake.lua
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
target("asset")
|
||||||
|
set_kind("static")
|
||||||
|
set_group("engine/comp")
|
||||||
|
add_files("src/*.cpp")
|
||||||
|
add_headerfiles("include/*.h")
|
||||||
|
add_includedirs("include", {public = true})
|
||||||
|
add_deps("core", "zlib", {public = true})
|
||||||
|
add_rules("engine.api")
|
||||||
4
engine/modules/core/include/core.h
Normal file
4
engine/modules/core/include/core.h
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "zlib.h"
|
||||||
|
const char* core();
|
||||||
|
inline Module core_module{ core(), false};
|
||||||
5
engine/modules/core/src/core.cpp
Normal file
5
engine/modules/core/src/core.cpp
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#include "core.h"
|
||||||
|
const char* core()
|
||||||
|
{
|
||||||
|
return "core";
|
||||||
|
}
|
||||||
8
engine/modules/core/xmake.lua
Normal file
8
engine/modules/core/xmake.lua
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
target("core")
|
||||||
|
set_kind("static")
|
||||||
|
set_group("engine/comp")
|
||||||
|
add_files("src/*.cpp")
|
||||||
|
add_headerfiles("include/*.h")
|
||||||
|
add_includedirs("include", {public = true})
|
||||||
|
add_deps("zlib", {public = true})
|
||||||
|
add_rules("engine.api")
|
||||||
88
engine/modules/zlib/include/source_location.h
Normal file
88
engine/modules/zlib/include/source_location.h
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
#ifndef NOSTD_SOURCE_LOCATION_HPP
|
||||||
|
#define NOSTD_SOURCE_LOCATION_HPP
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
namespace zlog {
|
||||||
|
struct source_location {
|
||||||
|
public:
|
||||||
|
#if not defined(__apple_build_version__) and defined(__clang__) and (__clang_major__ >= 9)
|
||||||
|
static constexpr source_location current(const char* fileName = __builtin_FILE(),
|
||||||
|
const char* functionName = __builtin_FUNCTION(),
|
||||||
|
const uint_least32_t lineNumber = __builtin_LINE(),
|
||||||
|
const uint_least32_t columnOffset = __builtin_COLUMN()) noexcept
|
||||||
|
#elif defined(__GNUC__) and (__GNUC__ > 4 or (__GNUC__ == 4 and __GNUC_MINOR__ >= 8))
|
||||||
|
static constexpr source_location current(const char* fileName = __builtin_FILE(),
|
||||||
|
const char* functionName = __builtin_FUNCTION(),
|
||||||
|
const uint_least32_t lineNumber = __builtin_LINE(),
|
||||||
|
const uint_least32_t columnOffset = 0) noexcept
|
||||||
|
#else
|
||||||
|
static constexpr source_location current(const char* fileName = "unsupported",
|
||||||
|
const char* functionName = "unsupported",
|
||||||
|
const uint_least32_t lineNumber = 0,
|
||||||
|
const uint_least32_t columnOffset = 0) noexcept
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
return source_location(fileName, functionName, lineNumber, columnOffset);
|
||||||
|
}
|
||||||
|
|
||||||
|
source_location(const source_location&) = default;
|
||||||
|
source_location(source_location&&) = default;
|
||||||
|
|
||||||
|
constexpr const char* file_name() const noexcept
|
||||||
|
{
|
||||||
|
return fileName;
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr const char* function_name() const noexcept
|
||||||
|
{
|
||||||
|
return functionName;
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr uint_least32_t line() const noexcept
|
||||||
|
{
|
||||||
|
return lineNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr std::uint_least32_t column() const noexcept
|
||||||
|
{
|
||||||
|
return columnOffset;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
constexpr source_location(const char* fileName, const char* functionName, const uint_least32_t lineNumber,
|
||||||
|
const uint_least32_t columnOffset) noexcept
|
||||||
|
: fileName(fileName)
|
||||||
|
, functionName(functionName)
|
||||||
|
, lineNumber(lineNumber)
|
||||||
|
, columnOffset(columnOffset)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* fileName;
|
||||||
|
const char* functionName;
|
||||||
|
const std::uint_least32_t lineNumber;
|
||||||
|
const std::uint_least32_t columnOffset;
|
||||||
|
};
|
||||||
|
|
||||||
|
[[nodiscard]] constexpr auto get_log_source_location(
|
||||||
|
const source_location& location) {
|
||||||
|
return spdlog::source_loc{location.file_name(),
|
||||||
|
static_cast<std::int32_t>(location.line()),
|
||||||
|
location.function_name()};
|
||||||
|
}
|
||||||
|
|
||||||
|
struct format_with_location {
|
||||||
|
std::string_view value;
|
||||||
|
spdlog::source_loc loc;
|
||||||
|
|
||||||
|
template <typename String>
|
||||||
|
format_with_location(const String& s, const source_location& location =
|
||||||
|
source_location::current())
|
||||||
|
: value{ s }, loc{ get_log_source_location(location) } {}
|
||||||
|
};
|
||||||
|
} // namespace nostd
|
||||||
|
|
||||||
|
#endif
|
||||||
34
engine/modules/zlib/include/zlib.h
Normal file
34
engine/modules/zlib/include/zlib.h
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <iostream>
|
||||||
|
#include <vector>
|
||||||
|
#include "zlog.h"
|
||||||
|
struct Detail {
|
||||||
|
int count = 0;
|
||||||
|
int new_count = 0;
|
||||||
|
int del_count = 0;
|
||||||
|
};
|
||||||
|
struct Module;
|
||||||
|
inline Detail detail{};
|
||||||
|
inline std::vector<Module*>* pModuleList{};
|
||||||
|
struct Module {
|
||||||
|
std::string name;
|
||||||
|
bool kind;
|
||||||
|
void* mHandle{nullptr};
|
||||||
|
bool Load(std::string path = "");
|
||||||
|
void* GetSymbol(const char* name);
|
||||||
|
Module(std::string name, bool kind):kind(kind), name(name){
|
||||||
|
detail.count++;
|
||||||
|
if (!pModuleList) {
|
||||||
|
pModuleList = new std::vector<Module*>;
|
||||||
|
}
|
||||||
|
pModuleList->push_back(this);
|
||||||
|
std::string kind_str = kind ? std::string("shared") : std::string("static");
|
||||||
|
std::cout << detail.count << ":" << uintptr_t(&zlog::zlog) << "::" << name << ":" << kind_str << std::endl;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const char* zlib();
|
||||||
|
#ifdef ZLIB_API_VAL
|
||||||
|
ZLIB_API inline Module zlib_module{ zlib(), false };
|
||||||
|
#else
|
||||||
|
ZLIB_API extern Module zlib_module;
|
||||||
|
#endif
|
||||||
47
engine/modules/zlib/include/zlog.h
Normal file
47
engine/modules/zlib/include/zlog.h
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "spdlog/spdlog.h"
|
||||||
|
#include "source_location.h"
|
||||||
|
#include <cstdint>
|
||||||
|
#include <stdexcept>
|
||||||
|
namespace zlog {
|
||||||
|
using level_enum = spdlog::level::level_enum;
|
||||||
|
class zloger {
|
||||||
|
private:
|
||||||
|
std::shared_ptr<spdlog::logger> m_logger;
|
||||||
|
public:
|
||||||
|
zloger();
|
||||||
|
~zloger();
|
||||||
|
template <typename... Args>
|
||||||
|
void log(level_enum level, format_with_location& fmt, Args &&...args) {
|
||||||
|
m_logger->log(fmt.loc, level, fmt::runtime(fmt.value), std::forward<Args>(args)...);
|
||||||
|
}
|
||||||
|
void flush() {
|
||||||
|
m_logger->flush();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
ZLIB_API inline zloger zlog;
|
||||||
|
template <typename... Args>
|
||||||
|
void info(format_with_location fmt, Args &&...args) {
|
||||||
|
zlog.log(level_enum::info, fmt, std::forward<Args>(args)...);
|
||||||
|
};
|
||||||
|
template <typename... Args>
|
||||||
|
void debug(format_with_location fmt, Args &&...args) {
|
||||||
|
zlog.log(level_enum::debug, fmt, std::forward<Args>(args)...);
|
||||||
|
};
|
||||||
|
template <typename... Args>
|
||||||
|
void warn(format_with_location fmt, Args &&...args) {
|
||||||
|
zlog.log(level_enum::warn, fmt, std::forward<Args>(args)...);
|
||||||
|
};
|
||||||
|
template <typename... Args>
|
||||||
|
void error(format_with_location fmt, Args &&...args) {
|
||||||
|
zlog.log(level_enum::err, fmt, std::forward<Args>(args)...);
|
||||||
|
};
|
||||||
|
template <typename... Args>
|
||||||
|
void fatal(format_with_location fmt, Args &&...args) {
|
||||||
|
zlog.log(level_enum::critical, fmt, std::forward<Args>(args)...);
|
||||||
|
const std::string format_str = fmt::format(std::forward<Args>(args)...);
|
||||||
|
throw std::runtime_error(format_str);
|
||||||
|
};
|
||||||
|
void flush();
|
||||||
|
};
|
||||||
28
engine/modules/zlib/src/zlib.cpp
Normal file
28
engine/modules/zlib/src/zlib.cpp
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#include "zlib.h"
|
||||||
|
const char* zlib()
|
||||||
|
{
|
||||||
|
return "zlib";
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Module::Load(std::string path)
|
||||||
|
{
|
||||||
|
if (!path.empty())
|
||||||
|
{
|
||||||
|
mHandle = GetModuleHandle(path.c_str());
|
||||||
|
if (mHandle == NULL)
|
||||||
|
{
|
||||||
|
mHandle = LoadLibrary(path.c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mHandle = GetModuleHandle(nullptr);
|
||||||
|
}
|
||||||
|
return mHandle;
|
||||||
|
}
|
||||||
|
|
||||||
|
void* Module::GetSymbol(const char* name)
|
||||||
|
{
|
||||||
|
void* addr = (void*)GetProcAddress((HMODULE)mHandle, name);
|
||||||
|
return addr;
|
||||||
|
}
|
||||||
38
engine/modules/zlib/src/zlog.cpp
Normal file
38
engine/modules/zlib/src/zlog.cpp
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
#include "zlog.h"
|
||||||
|
#include <spdlog/async.h>
|
||||||
|
#include <spdlog/sinks/basic_file_sink.h>
|
||||||
|
#include <spdlog/sinks/stdout_color_sinks.h>
|
||||||
|
#include <spdlog/spdlog.h>
|
||||||
|
namespace zlog {
|
||||||
|
zloger::zloger()
|
||||||
|
{
|
||||||
|
auto console_sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
|
||||||
|
console_sink->set_level(spdlog::level::trace);
|
||||||
|
console_sink->set_pattern("[%Y-%m-%d %H:%M:%S][%s:%#] %-8l %^%v%$");
|
||||||
|
|
||||||
|
auto file_sink = std::make_shared<spdlog::sinks::basic_file_sink_mt>("logs/zengine.log", true);
|
||||||
|
file_sink->set_level(spdlog::level::trace);
|
||||||
|
//file_sink->set_pattern("[%Y-%m-%d %H:%M:%S][%s:%#] %-8l %^%v%$");
|
||||||
|
|
||||||
|
const spdlog::sinks_init_list sink_list = { console_sink, file_sink };
|
||||||
|
|
||||||
|
spdlog::init_thread_pool(8192, 1);
|
||||||
|
|
||||||
|
m_logger = std::make_shared<spdlog::async_logger>("zlogger",
|
||||||
|
sink_list.begin(),
|
||||||
|
sink_list.end(),
|
||||||
|
spdlog::thread_pool(),
|
||||||
|
spdlog::async_overflow_policy::block);
|
||||||
|
m_logger->set_level(spdlog::level::trace);
|
||||||
|
m_logger->set_pattern("[%Y-%m-%d %H:%M:%S][%s:%#] %-8l %^%v%$");
|
||||||
|
spdlog::register_logger(m_logger);
|
||||||
|
}
|
||||||
|
zloger::~zloger()
|
||||||
|
{
|
||||||
|
m_logger->flush();
|
||||||
|
spdlog::drop_all();
|
||||||
|
}
|
||||||
|
void flush(){
|
||||||
|
zlog.flush();
|
||||||
|
}
|
||||||
|
}
|
||||||
8
engine/modules/zlib/xmake.lua
Normal file
8
engine/modules/zlib/xmake.lua
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
target("zlib")
|
||||||
|
set_kind("static")
|
||||||
|
set_group("engine/comp")
|
||||||
|
add_files("src/*.cpp")
|
||||||
|
add_headerfiles("include/*.h")
|
||||||
|
add_includedirs("include", {public = true})
|
||||||
|
add_packages("spdlog", {public = true})
|
||||||
|
add_rules("engine.api")
|
||||||
6
engine/src/api.cpp
Normal file
6
engine/src/api.cpp
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#include "api.h"
|
||||||
|
|
||||||
|
const char* engine()
|
||||||
|
{
|
||||||
|
return "engine";
|
||||||
|
}
|
||||||
28
engine/src/temp
Normal file
28
engine/src/temp
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
WORK=C:\Users\ouczbs\AppData\Local\Temp\go-build2430488546
|
||||||
|
cd D:\zvulkan
|
||||||
|
git status --porcelain
|
||||||
|
cd D:\zvulkan
|
||||||
|
git -c log.showsignature=false show -s --format=%H:%ct
|
||||||
|
# cd D:\zvulkan; git -c log.showsignature=false show -s --format=%H:%ct
|
||||||
|
fatal: your current branch 'master' does not have any commits yet
|
||||||
|
github.com/veandco/go-sdl2/sdl
|
||||||
|
mkdir -p $WORK\b047\
|
||||||
|
cd C:\Users\ouczbs\go\pkg\mod\github.com\veandco\go-sdl2@v0.4.35\sdl
|
||||||
|
TERM='dumb' CGO_LDFLAGS='"-LC:\\Users\\ouczbs\\go\\cgo" "-lSDL2"' "C:\\Program Files\\Go\\pkg\\tool\\windows_amd64\\cgo.exe" -objdir "$WORK\\b047\\" -importpath github.com/veandco/go-sdl2/sdl -- -I "$WORK\\b047\\" "-IC:\\Users\\
|
||||||
|
ouczbs\\go\\cgo" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\audio.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\blendmode.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\
|
||||||
|
\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\clipboard.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\cpuinfo.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\endi
|
||||||
|
an.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\error.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\events.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\
|
||||||
|
veandco\\go-sdl2@v0.4.35\\sdl\\filesystem.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\gamecontroller.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\gesture.g
|
||||||
|
o" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\guid.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\haptic.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veand
|
||||||
|
co\\go-sdl2@v0.4.35\\sdl\\hidapi.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\hints.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\joystick.go" "C:\\Users\\ou
|
||||||
|
czbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\keyboard.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\keycode.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@
|
||||||
|
v0.4.35\\sdl\\loadso.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\log.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\mouse.go" "C:\\Users\\ouczbs\\go\\pkg\\mo
|
||||||
|
d\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\mutex.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\pixels.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\power.g
|
||||||
|
o" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\rect.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\render.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veand
|
||||||
|
co\\go-sdl2@v0.4.35\\sdl\\rwops.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\scancode.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\sdl.go" "C:\\Users\\ouczb
|
||||||
|
s\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\sdl_cgo.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\sensor.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.
|
||||||
|
35\\sdl\\shape.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\surface.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\sysrender.go" "C:\\Users\\ouczbs\\go\\pkg\\
|
||||||
|
mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\system.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\system_windows.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\s
|
||||||
|
dl\\syswm.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\syswm_windows.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\thread.go" "C:\\Users\\ouczbs\\go\\pkg\\mo
|
||||||
|
d\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\timer.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\touch.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\version.
|
||||||
|
go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\video.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\vulkan.go"
|
||||||
14
engine/xmake.lua
Normal file
14
engine/xmake.lua
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
target("engine")
|
||||||
|
set_kind("shared")
|
||||||
|
set_group("engine")
|
||||||
|
add_files("src/*.cpp")
|
||||||
|
add_headerfiles("include/*.h")
|
||||||
|
add_includedirs("include", {public = true})
|
||||||
|
add_includedirs("modules/asset/include", {public = true})
|
||||||
|
add_includedirs("modules/core/include", {public = true})
|
||||||
|
add_includedirs("modules/zlib/include", {public = true})
|
||||||
|
add_deps("asset", "zlib", "core")
|
||||||
|
add_rules("engine.api")
|
||||||
|
|
||||||
|
includes("xmake/xmake.lua")
|
||||||
|
includes("modules/*/xmake.lua")
|
||||||
9
engine/xmake/api_define.lua
Normal file
9
engine/xmake/api_define.lua
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
function main(target, name)
|
||||||
|
local api = string.upper(name) .. "_API"
|
||||||
|
if target:kind() == "static" then
|
||||||
|
target:add("defines", api .. "=", api .. "_VAL", {public = false})
|
||||||
|
else
|
||||||
|
target:add("defines", api.."=__declspec(dllimport)", {interface=true})
|
||||||
|
target:add("defines", api.."=__declspec(dllexport)", {public=false})
|
||||||
|
end
|
||||||
|
end
|
||||||
16
engine/xmake/xmake.lua
Normal file
16
engine/xmake/xmake.lua
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
rule("engine.api")
|
||||||
|
on_load(function (target)
|
||||||
|
print(target:name())
|
||||||
|
import("api_define")
|
||||||
|
api_define(target, target:name())
|
||||||
|
local deps = target:get("deps")
|
||||||
|
if not deps then return end
|
||||||
|
import("core.project.project")
|
||||||
|
local is_static = target:kind() == "static"
|
||||||
|
for _,name in ipairs(deps) do
|
||||||
|
local deptarget = project.target(name)
|
||||||
|
if deptarget:kind() == "static" then
|
||||||
|
api_define(target, name)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
||||||
4
game/vulkan/include/vulkan.h
Normal file
4
game/vulkan/include/vulkan.h
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "zlib.h"
|
||||||
|
VULKAN_API const char* vulkan();
|
||||||
|
inline Module vulkan_module{vulkan(), true};
|
||||||
6
game/vulkan/src/vulkan.cpp
Normal file
6
game/vulkan/src/vulkan.cpp
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#include "vulkan.h"
|
||||||
|
|
||||||
|
const char* vulkan()
|
||||||
|
{
|
||||||
|
return "vulkan";
|
||||||
|
}
|
||||||
8
game/vulkan/xmake.lua
Normal file
8
game/vulkan/xmake.lua
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
target("vulkan")
|
||||||
|
set_kind("shared")
|
||||||
|
set_group("engine")
|
||||||
|
add_rules("engine.api")
|
||||||
|
add_files("src/*.cpp")
|
||||||
|
add_headerfiles("include/*.h")
|
||||||
|
add_includedirs("include", {public = true})
|
||||||
|
add_deps("engine", {public = true})
|
||||||
4
game/zworld/include/zworld.h
Normal file
4
game/zworld/include/zworld.h
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "zlib.h"
|
||||||
|
ZWORLD_API const char* zworld();
|
||||||
|
inline Module zworld_module{zworld(), true};
|
||||||
5
game/zworld/src/zworld.cpp
Normal file
5
game/zworld/src/zworld.cpp
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#include "zworld.h"
|
||||||
|
const char* zworld()
|
||||||
|
{
|
||||||
|
return "zworld";
|
||||||
|
}
|
||||||
8
game/zworld/xmake.lua
Normal file
8
game/zworld/xmake.lua
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
target("zworld")
|
||||||
|
set_kind("shared")
|
||||||
|
set_group("game")
|
||||||
|
add_rules("engine.api")
|
||||||
|
add_files("src/*.cpp")
|
||||||
|
add_headerfiles("include/*.h")
|
||||||
|
add_includedirs("include", {public = true})
|
||||||
|
add_deps("vulkan", "engine", {public = true})
|
||||||
11
game/zworld_editor/src/main.cpp
Normal file
11
game/zworld_editor/src/main.cpp
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include "zlib.h"
|
||||||
|
#include "core.h"
|
||||||
|
#include "asset.h"
|
||||||
|
#include "api.h"
|
||||||
|
#include "vulkan.h"
|
||||||
|
#include "zworld.h"
|
||||||
|
int main(int argc, char** argv) {
|
||||||
|
zlog::info("hello world");
|
||||||
|
zlog::flush();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
7
game/zworld_editor/xmake.lua
Normal file
7
game/zworld_editor/xmake.lua
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
target("zworld-editor")
|
||||||
|
set_kind("binary")
|
||||||
|
set_group("game")
|
||||||
|
add_files("src/*.cpp")
|
||||||
|
add_headerfiles("include/*.h")
|
||||||
|
add_includedirs("include", {public = true})
|
||||||
|
add_deps("zworld", {public = true})
|
||||||
11
xmake.lua
Normal file
11
xmake.lua
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
add_rules("mode.debug", "mode.release")
|
||||||
|
set_arch("x64")
|
||||||
|
set_languages("cxx20")
|
||||||
|
set_project("zengine")
|
||||||
|
set_toolchains("clang")
|
||||||
|
set_runtimes("MD","c++_shared")
|
||||||
|
add_requires("spdlog")
|
||||||
|
includes("engine/xmake.lua")
|
||||||
|
includes("game/*/xmake.lua")
|
||||||
|
--xmake project -k vsxmake2022 -m "debug;release"
|
||||||
Loading…
Reference in New Issue
Block a user