Skip to content

Commit

Permalink
added dlfcn lib to load shared libs
Browse files Browse the repository at this point in the history
  • Loading branch information
nesbox committed Apr 28, 2024
1 parent 8c769f8 commit 3cf5504
Show file tree
Hide file tree
Showing 16 changed files with 228 additions and 448 deletions.
4 changes: 4 additions & 0 deletions .gitmodules
Expand Up @@ -87,3 +87,7 @@
path = vendor/msf_gif
url = https://github.com/notnullnotvoid/msf_gif.git
shallow = true
[submodule "vendor/dlfcn"]
path = vendor/dlfcn
url = https://github.com/dlfcn-win32/dlfcn-win32.git
shallow = true
48 changes: 24 additions & 24 deletions cmake/core.cmake
Expand Up @@ -44,37 +44,37 @@ macro(MACRO_CORE SCRIPT DEFINE BUILD_DEPRECATED)
target_link_libraries(tic80core${SCRIPT} lua)
endif()

if(BUILD_WITH_JS)
target_link_libraries(tic80core${SCRIPT} js)
endif()
# if(BUILD_WITH_JS)
# target_link_libraries(tic80core${SCRIPT} js)
# endif()

if(BUILD_WITH_SCHEME)
target_link_libraries(tic80core${SCRIPT} scheme)
endif()
# if(BUILD_WITH_SCHEME)
# target_link_libraries(tic80core${SCRIPT} scheme)
# endif()

if(BUILD_WITH_SQUIRREL)
target_link_libraries(tic80core${SCRIPT} squirrel)
endif()
# if(BUILD_WITH_SQUIRREL)
# target_link_libraries(tic80core${SCRIPT} squirrel)
# endif()

if(BUILD_WITH_PYTHON)
target_link_libraries(tic80core${SCRIPT} python)
endif()
# if(BUILD_WITH_PYTHON)
# target_link_libraries(tic80core${SCRIPT} python)
# endif()

if(BUILD_WITH_WREN)
target_link_libraries(tic80core${SCRIPT} wren)
endif()
# if(BUILD_WITH_WREN)
# target_link_libraries(tic80core${SCRIPT} wren)
# endif()

if(BUILD_WITH_MRUBY)
target_link_libraries(tic80core${SCRIPT} ruby)
endif()
# if(BUILD_WITH_MRUBY)
# target_link_libraries(tic80core${SCRIPT} ruby)
# endif()

if(BUILD_WITH_JANET)
target_link_libraries(tic80core${SCRIPT} janet)
endif()
# if(BUILD_WITH_JANET)
# target_link_libraries(tic80core${SCRIPT} janet)
# endif()

if(BUILD_WITH_WASM)
target_link_libraries(tic80core${SCRIPT} wasm)
endif()
# if(BUILD_WITH_WASM)
# target_link_libraries(tic80core${SCRIPT} wasm)
# endif()

if(${BUILD_DEPRECATED})
target_compile_definitions(tic80core${SCRIPT} PRIVATE BUILD_DEPRECATED)
Expand Down
24 changes: 12 additions & 12 deletions cmake/demos.cmake
@@ -1,19 +1,19 @@
if(BUILD_DEMO_CARTS)
# if(BUILD_DEMO_CARTS)

foreach(CART_FILE ${DEMO_CARTS})
# foreach(CART_FILE ${DEMO_CARTS})

get_filename_component(CART_NAME ${CART_FILE} NAME_WE)
# get_filename_component(CART_NAME ${CART_FILE} NAME_WE)

set(OUTNAME ${CMAKE_SOURCE_DIR}/build/assets/${CART_NAME}.tic.dat)
set(OUTPRJ ${CMAKE_SOURCE_DIR}/build/${CART_NAME}.tic)
# set(OUTNAME ${CMAKE_SOURCE_DIR}/build/assets/${CART_NAME}.tic.dat)
# set(OUTPRJ ${CMAKE_SOURCE_DIR}/build/${CART_NAME}.tic)

list(APPEND DEMO_CARTS_OUT ${OUTNAME})
# list(APPEND DEMO_CARTS_OUT ${OUTNAME})

add_custom_command(OUTPUT ${OUTNAME}
COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/prj2cart ${CART_FILE} ${OUTPRJ} && ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/bin2txt ${OUTPRJ} ${OUTNAME} -z
DEPENDS bin2txt prj2cart ${CART_FILE}
)
# add_custom_command(OUTPUT ${OUTNAME}
# COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/prj2cart ${CART_FILE} ${OUTPRJ} && ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/bin2txt ${OUTPRJ} ${OUTNAME} -z
# DEPENDS bin2txt prj2cart ${CART_FILE}
# )

endforeach(CART_FILE)
# endforeach(CART_FILE)

endif()
# endif()
16 changes: 12 additions & 4 deletions cmake/studio.cmake
Expand Up @@ -18,7 +18,6 @@ set(TIC80STUDIO_SRC
${TIC80LIB_DIR}/studio/editors/music.c
${TIC80LIB_DIR}/studio/studio.c
${TIC80LIB_DIR}/studio/config.c
${TIC80LIB_DIR}/studio/demos.c
${TIC80LIB_DIR}/studio/fs.c
${TIC80LIB_DIR}/studio/net.c
${TIC80LIB_DIR}/ext/md5.c
Expand All @@ -33,22 +32,31 @@ endif()

set(TIC80_OUTPUT tic80)


add_library(tic80studio STATIC
${TIC80STUDIO_SRC}
${DEMO_CARTS_OUT}
${CMAKE_SOURCE_DIR}/build/assets/cart.png.dat)

if(WIN32)
target_include_directories(tic80studio PRIVATE ${THIRDPARTY_DIR}/dirent/include)
add_library(dlfcn STATIC ${THIRDPARTY_DIR}/dlfcn/src/dlfcn.c)

target_link_libraries(tic80studio PRIVATE dlfcn)

target_include_directories(tic80studio
PRIVATE
${THIRDPARTY_DIR}/dirent/include
${THIRDPARTY_DIR}/dlfcn/src
)
endif()

target_include_directories(tic80studio PUBLIC ${CMAKE_CURRENT_BINARY_DIR})

target_link_libraries(tic80studio tic80core zip wave_writer argparse giflib png)
target_link_libraries(tic80studio PUBLIC tic80core PRIVATE zip wave_writer argparse giflib png)

if(USE_NAETT)
target_compile_definitions(tic80studio PRIVATE USE_NAETT)
target_link_libraries(tic80studio naett)
target_link_libraries(tic80studio PRIVATE naett)
endif()

if(BUILD_PRO)
Expand Down
13 changes: 9 additions & 4 deletions src/api.h
Expand Up @@ -26,10 +26,10 @@
#include "tic.h"
#include "time.h"

// convenience macros to loop languages
#define FOR_EACH_LANG(ln) for (tic_script_config** conf = Languages ; *conf != NULL; conf++ ) { tic_script_config* ln = *conf;
#define FOR_EACH_LANG_END }
#define MAX_SUPPORTED_LANGS (16)

// convenience macros to loop languages
#define FOR_EACH_LANG(ln) for(tic_script_config **conf = Languages, *ln = *conf; *conf != NULL; ln = *++conf)

typedef struct { u8 index; tic_flip flip; tic_rotate rotate; } RemapResult;
typedef void(*RemapFunc)(void*, s32 x, s32 y, RemapResult* result);
Expand Down Expand Up @@ -112,10 +112,15 @@ typedef struct

s32 api_keywordsCount;
const char** api_keywords;

const void* demoRom;
const s32 demoRomSize;
const void* markRom;
const s32 markRomSize;

} tic_script_config;

extern tic_script_config* Languages[];
extern tic_script_config** Languages;

typedef enum
{
Expand Down
15 changes: 15 additions & 0 deletions src/api/js.c
Expand Up @@ -1254,6 +1254,16 @@ static void evalJs(tic_mem* tic, const char* code)
core->data->error(core->data->data, "TODO: JS eval not yet implemented\n.");
}

static const u8 JsDemoRom[] =
{
#include "../build/assets/jsdemo.tic.dat"
};

static const u8 jsmark[] =
{
#include "../build/assets/jsmark.tic.dat"
};

const tic_script_config JsSyntaxConfig =
{
.id = 12,
Expand Down Expand Up @@ -1287,4 +1297,9 @@ const tic_script_config JsSyntaxConfig =

.keywords = JsKeywords,
.keywordsCount = COUNT_OF(JsKeywords),

.demoRom = JsDemoRom,
.demoRomSize = sizeof JsDemoRom,
.markRom = jsmark,
.markRomSize = sizeof jsmark,
};
15 changes: 15 additions & 0 deletions src/api/lua.c
Expand Up @@ -1830,6 +1830,16 @@ static void evalLua(tic_mem* tic, const char* code) {
}
}

static const u8 LuaDemoRom[] =
{
#include "../build/assets/luademo.tic.dat"
};

static const u8 LuaMarkRom[] =
{
#include "../build/assets/luamark.tic.dat"
};

tic_script_config LuaSyntaxConfig =
{
.id = 10,
Expand Down Expand Up @@ -1865,4 +1875,9 @@ tic_script_config LuaSyntaxConfig =

.keywords = LuaKeywords,
.keywordsCount = COUNT_OF(LuaKeywords),

.demoRom = LuaDemoRom,
.demoRomSize = sizeof LuaDemoRom,
.markRom = LuaMarkRom,
.markRomSize = sizeof LuaMarkRom,
};
1 change: 0 additions & 1 deletion src/core/core.c
Expand Up @@ -266,7 +266,6 @@ const tic_script_config* tic_core_script_config(tic_mem* memory)
if(it->id == memory->cart.lang || compareMetatag(memory->cart.code.data, "script", it->name, it->singleComment))
return it;
}
FOR_EACH_LANG_END

return Languages[0];
}
Expand Down

0 comments on commit 3cf5504

Please sign in to comment.