diff --git a/CMakeLists.txt b/CMakeLists.txt index 564ab21..ff59e77 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,10 +9,10 @@ if(APPLE) file(GLOB_RECURSE METAL_FILES CONFIGURE_DEPENDS "src/*.m") endif() add_library(Gryphn ${SOURCE_FILES} ${METAL_FILES}) -target_include_directories(Gryphn PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/) +target_include_directories(Gryphn PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src/) target_include_directories(Gryphn PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include/) -target_include_directories(Gryphn PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/utils) -target_include_directories(Gryphn PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/utils/utils) +target_include_directories(Gryphn PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src/utils) +target_include_directories(Gryphn PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src/utils/utils) add_compile_definitions(GN_REVEAL_IMPL) make_directory(${CMAKE_BINARY_DIR}/gryphn/rendering_apis/) diff --git a/src/platform/platform_linux/gryphn_platform_linux.c b/src/platform/platform_linux/gryphn_platform_linux.c new file mode 100644 index 0000000..1254898 --- /dev/null +++ b/src/platform/platform_linux/gryphn_platform_linux.c @@ -0,0 +1,32 @@ +#ifdef GN_PLATFORM_LINUX +#include "gryphn_platform_linux.h" +#include "core/gryphn_rendering_api.h" +#include "core/instance/init/gryphn_dynamic_library.h" +#include "dlfcn.h" + +gnRenderingAPI renderingAPIs[2] = { + GN_RENDERINGAPI_VULKAN, + GN_RENDERINGAPI_SOFTWARE +}; + +gnRenderingAPI* gnGetSupportedRenderingAPIs(int* count) { + *count = 2; + return renderingAPIs; +} + +struct gnDynamicLibrary_t* gnLoadDynamicLibrary(const gnString path) { + struct gnDynamicLibrary_t* dll = malloc(sizeof(struct gnDynamicLibrary_t)); + dll->dllPtr = dlopen(gnToCString(gnCombineStrings(path, ".so")), RTLD_LAZY), + dll->isValid = gnTrue; + if (dll->dllPtr == NULL) dll->isValid = gnFalse; + return dll; +} +void* gnLoadFunctionPtr(struct gnDynamicLibrary_t* dll, const char* name) { + if (dll->isValid == gnFalse) return NULL; + return dlsym(dll->dllPtr, name); +} +void gnUnloadDynamicLibrary(struct gnDynamicLibrary_t* dll) { + if (dll->isValid) dlclose(dll->dllPtr); +} + +#endif