mirror of
https://github.com/hmaxnl/based.git
synced 2025-01-18 01:14:21 +01:00
Initial source push!
This commit is contained in:
parent
3a775a94a6
commit
21f40e3083
82
.gitignore
vendored
Executable file
82
.gitignore
vendored
Executable file
|
@ -0,0 +1,82 @@
|
|||
# Prerequisites
|
||||
*.d
|
||||
|
||||
# Object files
|
||||
*.o
|
||||
*.ko
|
||||
*.obj
|
||||
*.elf
|
||||
|
||||
# Linker output
|
||||
*.ilk
|
||||
*.map
|
||||
*.exp
|
||||
|
||||
# Precompiled Headers
|
||||
*.gch
|
||||
*.pch
|
||||
|
||||
# Libraries
|
||||
*.lib
|
||||
*.a
|
||||
*.la
|
||||
*.lo
|
||||
|
||||
# Shared objects (inc. Windows DLLs)
|
||||
*.dll
|
||||
*.so
|
||||
*.so.*
|
||||
*.dylib
|
||||
|
||||
# Executables
|
||||
*.exe
|
||||
*.out
|
||||
*.app
|
||||
*.i*86
|
||||
*.x86_64
|
||||
*.hex
|
||||
|
||||
# Debug files
|
||||
*.dSYM/
|
||||
*.su
|
||||
*.idb
|
||||
*.pdb
|
||||
|
||||
# Kernel Module Compile Results
|
||||
*.mod*
|
||||
*.cmd
|
||||
.tmp_versions/
|
||||
modules.order
|
||||
Module.symvers
|
||||
Mkfile.old
|
||||
dkms.conf
|
||||
|
||||
# CMAKE
|
||||
CMakeLists.txt.user
|
||||
CMakeCache.txt
|
||||
CMakeFiles
|
||||
CMakeScripts
|
||||
cmake_install.cmake
|
||||
CTestTestfile.cmake
|
||||
|
||||
# Make
|
||||
Makefile
|
||||
|
||||
# Build
|
||||
Build/
|
||||
build/
|
||||
BUILD/
|
||||
bin/
|
||||
BIN/
|
||||
lib/
|
||||
LIB/
|
||||
out/
|
||||
|
||||
# IDE
|
||||
.vs/
|
||||
.vscode/
|
||||
.idea/
|
||||
.kdev/
|
||||
.kdev4/
|
||||
*.kdev
|
||||
*.kdev4
|
60
CMakeLists.txt
Executable file
60
CMakeLists.txt
Executable file
|
@ -0,0 +1,60 @@
|
|||
cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
project("Based" LANGUAGES C ASM)
|
||||
|
||||
# =============================================
|
||||
# Options
|
||||
# =============================================
|
||||
#unset(DOCUMENTATION CACHE)
|
||||
#unset(INTERNAL_DOC, CACHE)
|
||||
option(DOCUMENTATION "Enable to generate ducumentation." OFF)
|
||||
option(INTERNAL_DOC "Enable to generate internal & public documentaion. Disable to only generate public documentation" OFF)
|
||||
|
||||
# =============================================
|
||||
# Policies
|
||||
# =============================================
|
||||
cmake_policy(SET CMP0076 NEW)
|
||||
|
||||
# =============================================
|
||||
# Compiler
|
||||
# =============================================
|
||||
if(CMAKE_C_COMPILER_ID STREQUAL "GNU") # GNUCC
|
||||
# Add linker options.
|
||||
add_link_options(-nostdlib -nodefaultlibs -nostdinc -lgcc) # -z noexecstack
|
||||
add_compile_options(
|
||||
-Wall -Wextra -Wshadow -Wfloat-equal -Wpointer-arith -fPIC -fno-builtin
|
||||
"$<$<CONFIG:RELEASE>:-s;-O3;-DNDEBUG>"
|
||||
"$<$<CONFIG:DEBUG>:-O0;-g>"
|
||||
"$<$<CONFIG:RELWITHDEBINFO>:-O2;-g;-DNDEBUG>")
|
||||
|
||||
elseif(CMAKE_C_COMPILER_ID STREQUAL "MSVC") # MSVC
|
||||
#We use a stack of 1MiB, it is cleaner to implement the chkstk function to check if we need to init more pages.
|
||||
add_link_options(/NODEFAULTLIB /STACK:0x100000,0x100000)
|
||||
add_compile_options(
|
||||
/DWIN32 /D_WINDOWS /W3 /Zl /GS- /Gs9999999 /c
|
||||
"$<$<CONFIG:DEBUG>:/MDd;/Zi;/Ob0;/Od>"
|
||||
)
|
||||
endif()
|
||||
|
||||
# =============================================
|
||||
# Directories
|
||||
# =============================================
|
||||
set(PROJ_BUILD_DIR ${CMAKE_BINARY_DIR})
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJ_BUILD_DIR}/lib)
|
||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJ_BUILD_DIR}/bin)
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJ_BUILD_DIR}/bin)
|
||||
|
||||
set(PROJ_REL_BUILD_DIR ${CMAKE_BINARY_DIR}/release)
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${PROJ_REL_BUILD_DIR}/lib)
|
||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${PROJ_REL_BUILD_DIR}/bin)
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${PROJ_REL_BUILD_DIR}/bin)
|
||||
|
||||
set(PROJ_DEB_BUILD_DIR ${CMAKE_BINARY_DIR}/debug)
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${PROJ_DEB_BUILD_DIR}/lib)
|
||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${PROJ_DEB_BUILD_DIR}/bin)
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${PROJ_DEB_BUILD_DIR}/bin)
|
||||
|
||||
if (DOCUMENTATION)
|
||||
add_subdirectory(doc)
|
||||
endif(DOCUMENTATION)
|
||||
add_subdirectory(src)
|
45
doc/CMakeLists.txt
Executable file
45
doc/CMakeLists.txt
Executable file
|
@ -0,0 +1,45 @@
|
|||
#Cmake: Documentation
|
||||
|
||||
find_package(Doxygen REQUIRED doxygen)
|
||||
find_program(HAS_GRAPHVIZ NAMES dot)
|
||||
|
||||
if(HAS_GRAPHVIZ)
|
||||
message("Graphviz found!")
|
||||
set(DOXYGEN_HAVE_DOT YES) # Needs graphviz
|
||||
endif()
|
||||
set(DOXYGEN_CREATE_SUBDIRS YES)
|
||||
set(DOXYGEN_CREATE_SUBDIRS_LEVEL 8)
|
||||
set(DOXYGEN_HTML_COLORSTYLE DARK)
|
||||
set(DOXYGEN_FULL_PATH_NAMES NO)
|
||||
set(DOXYGEN_EXTRACT_ALL YES)
|
||||
set(DOXYGEN_EXTRACT_PRIVATE YES)
|
||||
set(DOXYGEN_EXTRACT_STATIC YES)
|
||||
set(DOXYGEN_CALL_GRAPH YES)
|
||||
set(DOXYGEN_CALLER_GRAPH YES)
|
||||
set(DOXYGEN_DISABLE_INDEX YES)
|
||||
set(DOXYGEN_OPTIMIZE_OUTPUT_FOR_C YES)
|
||||
set(DOXYGEN_ALPHABETICAL_INDEX NO)
|
||||
set(DOXYGEN_EXCLUDE build)
|
||||
set(DOXYGEN_FILE_PATTERNS *.c *.h)
|
||||
set(DOXYGEN_GENERATE_TREEVIEW YES)
|
||||
set(DOXYGEN_QUIET YES)
|
||||
set(DOXYGEN_RECURSIVE YES)
|
||||
set(DOXYGEN_REFERENCED_BY_RELATION YES)
|
||||
set(DOXYGEN_REFERENCES_RELATION YES)
|
||||
set(DOXYGEN_SORT_BY_SCOPE_NAME YES)
|
||||
set(DOXYGEN_SORT_MEMBER_DOCS NO)
|
||||
set(DOXYGEN_SOURCE_BROWSER YES)
|
||||
set(DOXYGEN_STRIP_CODE_COMMENTS NO)
|
||||
|
||||
if(INTERNAL_DOC)
|
||||
set(DOC_PATHS "${CMAKE_SOURCE_DIR}/src")
|
||||
set(DOXYGEN_PROJECT_NAME "${CMAKE_PROJECT_NAME} Internal")
|
||||
message("Internal doc enabled!")
|
||||
else()
|
||||
set(DOC_PATHS "${CMAKE_SOURCE_DIR}/src/rtbase/include")
|
||||
message("Public doc enabled!")
|
||||
endif(INTERNAL_DOC)
|
||||
|
||||
doxygen_add_docs(doxygen ${DOC_PATHS}
|
||||
ALL
|
||||
COMMENT "Generating HTML documentation")
|
5
src/CMakeLists.txt
Executable file
5
src/CMakeLists.txt
Executable file
|
@ -0,0 +1,5 @@
|
|||
# src directory
|
||||
|
||||
add_subdirectory(based)
|
||||
add_subdirectory(runtime)
|
||||
add_subdirectory(cli)
|
16
src/based/CMakeLists.txt
Executable file
16
src/based/CMakeLists.txt
Executable file
|
@ -0,0 +1,16 @@
|
|||
# Source based library
|
||||
|
||||
add_library(based SHARED "base.c")
|
||||
|
||||
target_compile_features(based PRIVATE c_std_99)
|
||||
|
||||
target_include_directories(based
|
||||
PUBLIC
|
||||
${CMAKE_SOURCE_DIR}/include
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include
|
||||
PRIVATE
|
||||
${CMAKE_SOURCE_DIR}/src)
|
||||
|
||||
|
||||
add_subdirectory(include)
|
||||
add_subdirectory(system)
|
8
src/based/base.c
Executable file
8
src/based/base.c
Executable file
|
@ -0,0 +1,8 @@
|
|||
#include "base.h"
|
||||
|
||||
// Test export function, else there will be no symbols exported on the build.
|
||||
EXPORT int test()
|
||||
{
|
||||
return 69;
|
||||
}
|
||||
|
6
src/based/include/CMakeLists.txt
Executable file
6
src/based/include/CMakeLists.txt
Executable file
|
@ -0,0 +1,6 @@
|
|||
# based => include
|
||||
|
||||
target_sources(based PUBLIC
|
||||
"base.h")
|
||||
|
||||
add_subdirectory(env)
|
39
src/based/include/base.h
Executable file
39
src/based/include/base.h
Executable file
|
@ -0,0 +1,39 @@
|
|||
/**
|
||||
* @file base_defs.h
|
||||
* @brief The library general header.
|
||||
* @version 0.1
|
||||
* @date 2023-01-11
|
||||
* @details Contains utilities like memory management, evironment and more.
|
||||
*/
|
||||
|
||||
#ifndef BASE_H
|
||||
#define BASE_H
|
||||
#include "env/envb.h"
|
||||
|
||||
// ========================================
|
||||
// Definitions
|
||||
// ========================================
|
||||
|
||||
/// Exit on success.
|
||||
#define EXIT_OK 0
|
||||
/// Exit on fail.
|
||||
#define EXIT_FAIL -1
|
||||
/// Exit on error.
|
||||
#define EXIT_ERROR 1
|
||||
|
||||
#if !defined(bool) || !defined(BOOL)
|
||||
#define bool uint8
|
||||
#define true 1
|
||||
#define false 0
|
||||
#endif
|
||||
|
||||
#ifndef NULL
|
||||
#define NULL ((void*)0)
|
||||
#endif // NULL
|
||||
#define INVALID_PTR ((void*)-1)
|
||||
#define NULL_BYTE_PTR ((BYTE*)0)
|
||||
#define INVALID_BYTE_PTR ((BYTE*)-1)
|
||||
#define NULL_BYTE '\0'
|
||||
|
||||
#define IGNORE_ARG(x) (void)x;
|
||||
#endif //BASE_H
|
3
src/based/include/env/CMakeLists.txt
vendored
Executable file
3
src/based/include/env/CMakeLists.txt
vendored
Executable file
|
@ -0,0 +1,3 @@
|
|||
# based => include => env
|
||||
|
||||
target_sources(based PRIVATE "envb.h")
|
94
src/based/include/env/envb.h
vendored
Executable file
94
src/based/include/env/envb.h
vendored
Executable file
|
@ -0,0 +1,94 @@
|
|||
/**
|
||||
* @file envb.h
|
||||
* @brief Environment base header.
|
||||
* @version 0.1
|
||||
* @date 2023-01-11
|
||||
*/
|
||||
|
||||
#ifndef ENVB_H
|
||||
#define ENVB_H
|
||||
|
||||
// ========================================
|
||||
// Linux
|
||||
// ========================================
|
||||
#ifdef __gnu_linux__
|
||||
#define OS_LINUX
|
||||
|
||||
#define EXPORT __attribute__((visibility("default")))
|
||||
#define CDECL_ATT __attribute__((cdecl))
|
||||
#define NO_RETURN_ATT __attribute__((noreturn))
|
||||
|
||||
#ifdef __x86_64__
|
||||
|
||||
#if defined(__i386__) || defined(_M_IX86)
|
||||
#define OS_ENV 32
|
||||
#else // defined(__i386__) || defined(_M_IX86)
|
||||
#define OS_ENV 64
|
||||
#endif // defined(__i386__) || defined(_M_IX86)
|
||||
|
||||
#endif // __x86_64__
|
||||
#endif // __gnu_linux__
|
||||
// ========================================
|
||||
// Windows
|
||||
// ========================================
|
||||
#ifdef _WIN32
|
||||
#define OS_WINDOWS 1
|
||||
#define EXPORT __declspec(dllexport)
|
||||
|
||||
#ifdef _WIN64 // _WIN64
|
||||
#define OS_ENV 64
|
||||
#else // x32
|
||||
#define OS_ENV 32
|
||||
#endif // _WIN64
|
||||
#endif // _WIN32
|
||||
|
||||
// ===================================================================
|
||||
//
|
||||
// Lib types
|
||||
//
|
||||
// ===================================================================
|
||||
|
||||
typedef unsigned char uint8;
|
||||
typedef short int16;
|
||||
typedef unsigned short uint16;
|
||||
typedef int int32;
|
||||
typedef unsigned int uint32;
|
||||
typedef long long int64;
|
||||
typedef unsigned long long uint64;
|
||||
|
||||
#if OS_ENV == 64
|
||||
typedef uint64 uintptr;
|
||||
#else
|
||||
typedef uint32 uintptr;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Typedef for process identifier.
|
||||
*/
|
||||
typedef int32 p_id;
|
||||
/**
|
||||
* @brief Typedef for wide char.
|
||||
*/
|
||||
typedef uint16 w_char;
|
||||
/**
|
||||
* @brief Typedef for byte.
|
||||
*/
|
||||
typedef uint8 BYTE;
|
||||
/**
|
||||
* @brief Typedef for bit field.
|
||||
*/
|
||||
typedef uint32 bit_field;
|
||||
/**
|
||||
* @brief Typedef for offset.
|
||||
*/
|
||||
typedef long int off_set;
|
||||
/**
|
||||
* @brief Typedef for usize.
|
||||
*/
|
||||
typedef long unsigned int usize;
|
||||
/**
|
||||
* @brief Typedef for ssize.
|
||||
*/
|
||||
typedef long signed int ssize;
|
||||
|
||||
#endif //ENVB_H
|
10
src/based/system/CMakeLists.txt
Executable file
10
src/based/system/CMakeLists.txt
Executable file
|
@ -0,0 +1,10 @@
|
|||
# based => system
|
||||
|
||||
target_sources(based PRIVATE "bootstrap.c")
|
||||
|
||||
if(UNIX)
|
||||
add_subdirectory(unix)
|
||||
endif(UNIX)
|
||||
if(WIN32)
|
||||
add_subdirectory(win32)
|
||||
endif(WIN32)
|
24
src/based/system/bootstrap.c
Executable file
24
src/based/system/bootstrap.c
Executable file
|
@ -0,0 +1,24 @@
|
|||
#include "base.h"
|
||||
//TODO(Implement): Handle the boostrapping of the application.
|
||||
|
||||
enum bootstrap_sys
|
||||
{
|
||||
sys_unix = 0,
|
||||
sys_win32 = 1
|
||||
};
|
||||
|
||||
/// @brief Executes the bootstrapping process.
|
||||
int base_bootstrap(enum bootstrap_sys system)
|
||||
{
|
||||
switch (system)
|
||||
{
|
||||
case sys_unix:
|
||||
break;
|
||||
case sys_win32:
|
||||
break;
|
||||
default:
|
||||
return -1;
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
2
src/based/system/unix/CMakeLists.txt
Executable file
2
src/based/system/unix/CMakeLists.txt
Executable file
|
@ -0,0 +1,2 @@
|
|||
# based => system => unix
|
||||
|
3
src/based/system/win32/CMakeLists.txt
Executable file
3
src/based/system/win32/CMakeLists.txt
Executable file
|
@ -0,0 +1,3 @@
|
|||
# based => system => win32
|
||||
|
||||
target_sources(based PRIVATE "win32sym.c")
|
21
src/based/system/win32/win32sym.c
Executable file
21
src/based/system/win32/win32sym.c
Executable file
|
@ -0,0 +1,21 @@
|
|||
#include "base.h"
|
||||
#include "windows.h"
|
||||
|
||||
BOOL WINAPI _DllMainCRTStartup(HINSTANCE const instance, DWORD const reason, LPVOID const reserved) // => DllMain
|
||||
{
|
||||
(void)instance;
|
||||
(void)reason;
|
||||
(void)reserved;
|
||||
//return DllMain(instance, reason, reserved);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL WINAPI _RTC_InitBase()
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL WINAPI _RTC_Shutdown()
|
||||
{
|
||||
return TRUE;
|
||||
}
|
5
src/cli/CMakeLists.txt
Executable file
5
src/cli/CMakeLists.txt
Executable file
|
@ -0,0 +1,5 @@
|
|||
# cli project
|
||||
|
||||
add_executable(basedcli "main.c")
|
||||
|
||||
target_link_libraries(basedcli runtime)
|
6
src/cli/main.c
Executable file
6
src/cli/main.c
Executable file
|
@ -0,0 +1,6 @@
|
|||
#include "base.h"
|
||||
|
||||
int main(int argc, char* argv[], char* envp[])
|
||||
{
|
||||
return 0;
|
||||
}
|
15
src/runtime/CMakeLists.txt
Executable file
15
src/runtime/CMakeLists.txt
Executable file
|
@ -0,0 +1,15 @@
|
|||
# runtime library
|
||||
|
||||
add_library(runtime STATIC
|
||||
"rtinternal.h"
|
||||
"runtime.c")
|
||||
|
||||
target_link_libraries(runtime PUBLIC based)
|
||||
|
||||
target_include_directories(runtime
|
||||
PUBLIC
|
||||
${CMAKE_SOURCE_DIR}/include
|
||||
PRIVATE
|
||||
${CMAKE_SOURCE_DIR}/src)
|
||||
|
||||
add_subdirectory(system)
|
3
src/runtime/rtinternal.h
Executable file
3
src/runtime/rtinternal.h
Executable file
|
@ -0,0 +1,3 @@
|
|||
#include "base.h"
|
||||
|
||||
extern int main(int argc, BYTE** argv, BYTE** envp);
|
9
src/runtime/runtime.c
Executable file
9
src/runtime/runtime.c
Executable file
|
@ -0,0 +1,9 @@
|
|||
#include "rtinternal.h"
|
||||
|
||||
int rt_bootstrap(void)
|
||||
{
|
||||
// Bootstraping => based.
|
||||
// Invoke main.
|
||||
// Return exit code to caller.
|
||||
return 420;
|
||||
}
|
8
src/runtime/system/CMakeLists.txt
Executable file
8
src/runtime/system/CMakeLists.txt
Executable file
|
@ -0,0 +1,8 @@
|
|||
# runtime => system
|
||||
|
||||
if(UNIX)
|
||||
add_subdirectory(unix)
|
||||
endif()
|
||||
if(WIN32)
|
||||
add_subdirectory(win32)
|
||||
endif()
|
3
src/runtime/system/unix/CMakeLists.txt
Executable file
3
src/runtime/system/unix/CMakeLists.txt
Executable file
|
@ -0,0 +1,3 @@
|
|||
# runtime => system => unix
|
||||
|
||||
target_sources(runtime PRIVATE "unixrt.c" "crt.S")
|
17
src/runtime/system/unix/crt.S
Executable file
17
src/runtime/system/unix/crt.S
Executable file
|
@ -0,0 +1,17 @@
|
|||
//#include "../syscalls.h"
|
||||
|
||||
.globl _start
|
||||
.globl rt_unix_start
|
||||
|
||||
.text
|
||||
|
||||
// Start point unix.
|
||||
_start:
|
||||
xor %rbp, %rbp // Clear stack frame pointer
|
||||
|
||||
mov (%rsp), %rdi // Movq argc to rdi
|
||||
lea 0x8(%rsp), %rsi // Get the argv address
|
||||
lea 16(%rsp,%rdi,8), %rdx // Get the envp address
|
||||
|
||||
call rt_unix_start // Start c function
|
||||
hlt // Halt if the lib or app does not call the exit function.
|
6
src/runtime/system/unix/unixrt.c
Executable file
6
src/runtime/system/unix/unixrt.c
Executable file
|
@ -0,0 +1,6 @@
|
|||
#include "base.h"
|
||||
|
||||
void rt_unix_start(int argc, BYTE** argv, BYTE** envp)
|
||||
{
|
||||
//TODO: Callback => main & syscall to exit group
|
||||
}
|
3
src/runtime/system/win32/CMakeLists.txt
Executable file
3
src/runtime/system/win32/CMakeLists.txt
Executable file
|
@ -0,0 +1,3 @@
|
|||
# runtime => system => win32
|
||||
|
||||
target_sources(runtime PRIVATE "winrt.c")
|
59
src/runtime/system/win32/winrt.c
Executable file
59
src/runtime/system/win32/winrt.c
Executable file
|
@ -0,0 +1,59 @@
|
|||
#include "base.h"
|
||||
#include "windows.h"
|
||||
|
||||
// Windows(Win32) of course needs to be different...
|
||||
|
||||
// Use the wide entry
|
||||
#pragma comment(linker,"/ENTRY:wmainCRTStartup")
|
||||
|
||||
// Main
|
||||
//extern int WINAPI mainCRTStartup();
|
||||
int WINAPI mainCRTStartup() // => main
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
//extern int __CRTDECL wmain(int argc, wchar_t** argv, wchar_t** envp);
|
||||
int WINAPI wmainCRTStartup() // => wmain
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
// WinMain
|
||||
//extern int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd);
|
||||
int WINAPI WinMainCRTStartup() // => WinMain
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
//extern int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nShowCmd);
|
||||
int wWinMainCRTStartup() // => wWinMain
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
// RTC stuff
|
||||
BOOL WINAPI _RTC_InitBase()
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL WINAPI _RTC_Shutdown()
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// Library
|
||||
/* #ifdef MRTDLL
|
||||
extern BOOL __clrcall DllMain(HINSTANCE hInstance, DWORD fdwReason, LPVOID lpvReserved);
|
||||
#else
|
||||
extern BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD fdwReason, LPVOID lpvReserved);
|
||||
#endif // MRTDLL */
|
||||
|
||||
BOOL WINAPI _DllMainCRTStartup(HINSTANCE const instance, DWORD const reason, LPVOID const reserved) // => DllMain
|
||||
{
|
||||
(void)instance;
|
||||
(void)reason;
|
||||
(void)reserved;
|
||||
//TODO: Handle dllmain
|
||||
return TRUE;
|
||||
}
|
Loading…
Reference in New Issue
Block a user