cmake config

This commit is contained in:
Hunter 2025-02-21 18:07:28 -05:00
parent c63b3abfc9
commit 3cf50b0771
2 changed files with 52 additions and 0 deletions

10
CMakeLists.txt Normal file
View file

@ -0,0 +1,10 @@
cmake_minimum_required(VERSION 3.14..3.31 FATAL_ERROR)
project(Hotwire
VERSION 1
LANGUAGES C)
add_library(hotwire src/dlopen.c)
add_library(hotwire::Hotwire ALIAS hotwire)
target_include_directories(hotwire PUBLIC include)

42
include/dlopen.h Normal file
View file

@ -0,0 +1,42 @@
#pragma once
#include <stdio.h>
#if defined(__APPLE__)
#include <dlfcn.h>
#endif
#if defined(__linux__)
#include <dlfcn.h>
#endif
#if defined(_WIN32)
#include <windows.h>
#include <strsafe.h>
#endif
// Platform specific code functions
#if defined(_WIN32)
void hw_platform_win32_get_last_error(LPTSTR lpszFunction);
#endif
enum hotwire_status_code { Failed, Success, NoPlatform };
struct hotwire_dll_t {
#if defined(__linux__) || defined(__APPLE__)
void *dll_handle;
#endif
#if defined(_WIN32)
HINSTANCE dll_handle;
#endif
};
// Function arguments are based off the dlopen() api on POSIX based operating
// systems Loads dll from library
struct hotwire_dll_t hw_dlopen(const char *file, int flags);
// Loads symbol from DLL
void *hw_dlsym(struct hotwire_dll_t dll, const char *symbol);
enum hotwire_status_code hw_dlclose(struct hotwire_dll_t handle);