Skip to content

Commit 66df8de

Browse files
committed
Switch to multi-lua branch
1 parent c2191ea commit 66df8de

6 files changed

Lines changed: 74 additions & 50 deletions

File tree

CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -821,9 +821,9 @@ if(LINUX)
821821
target_link_libraries(plugdata PRIVATE plugdata_core pd-src-multi externals-multi)
822822
target_link_libraries(plugdata_fx PRIVATE plugdata_core pd-src-multi externals-multi)
823823
elseif(UNIX AND NOT APPLE) # BSD
824-
target_link_libraries(plugdata_standalone PRIVATE plugdata_core pd-src externals lua fluidlite "-Wl,-export-dynamic")
825-
target_link_libraries(plugdata PRIVATE plugdata_core pd-src-multi externals-multi lua fluidlite)
826-
target_link_libraries(plugdata_fx PRIVATE plugdata_core pd-src-multi externals-multi lua fluidlite)
824+
target_link_libraries(plugdata_standalone PRIVATE plugdata_core pd-src externals pdlua fluidlite "-Wl,-export-dynamic")
825+
target_link_libraries(plugdata PRIVATE plugdata_core pd-src-multi externals-multi pdlua fluidlite)
826+
target_link_libraries(plugdata_fx PRIVATE plugdata_core pd-src-multi externals-multi pdlua fluidlite)
827827
elseif(APPLE)
828828
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 15.0)
829829
set(MACOS_COMPAT_LINKER_FLAGS "-Wl,-ld_classic")

Libraries/CMakeLists.txt

Lines changed: 58 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ cmake_minimum_required(VERSION 3.15)
66
project(libpd VERSION 1.0.0 LANGUAGES C CXX)
77

88
cmake_policy(SET CMP0091 NEW)
9+
cmake_policy(SET CMP0114 NEW)
10+
911
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
1012

1113
set(MESSAGE_QUIET ON)
@@ -261,33 +263,68 @@ include_directories(pd-cyclone/)
261263
include_directories(pd-cyclone/shared/)
262264
source_group(pd-cyclone FILES ${CYCLONE_SOURCES})
263265

266+
include(ExternalProject)
267+
find_program(MAKE_EXECUTABLE NAMES gmake make REQUIRED)
268+
269+
if(WIN32)
270+
set(LUAJIT_LIB_NAME libluajit-5.1.dll.a)
271+
set(LUAJIT_MAKE_ARGS SHELL=cmd)
272+
elseif(APPLE)
273+
set(LUAJIT_LIB_NAME libluajit.a)
274+
set(LUAJIT_MAKE_ARGS MACOSX_DEPLOYMENT_TARGET=10.11)
275+
else()
276+
set(LUAJIT_LIB_NAME libluajit.a)
277+
set(LUAJIT_MAKE_ARGS CFLAGS=-fPIC)
278+
endif()
279+
280+
ExternalProject_Add(luajit_build
281+
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/pd-lua/luas/luajit
282+
BUILD_IN_SOURCE TRUE
283+
CONFIGURE_COMMAND ""
284+
BUILD_COMMAND ${MAKE_EXECUTABLE} -C src ${LUAJIT_MAKE_ARGS}
285+
INSTALL_COMMAND ""
286+
BUILD_BYPRODUCTS ${CMAKE_CURRENT_SOURCE_DIR}/pd-lua/luas/luajit/src/${LUAJIT_LIB_NAME}
287+
)
288+
289+
add_library(luajit STATIC IMPORTED GLOBAL)
290+
264291
# pdlua sources
265292
set(PDLUA_PATH "${CMAKE_CURRENT_SOURCE_DIR}/pd-lua")
266-
set(PDLUA_SOURCES ${PDLUA_PATH}/pdlua.c)
293+
set(PDLUA_SOURCES )
267294

268-
set(LUA_PATH "${PDLUA_PATH}/lua")
269-
set(LUA_INCLUDE_DIR ${LUA_PATH})
295+
set(LUA_INCLUDE_DIR "${PDLUA_PATH}/luas/lua" "${PDLUA_PATH}/luas/lua-compat-5.3")
296+
297+
add_library(pdlua STATIC ${PDLUA_PATH}/luas/lua.c ${PDLUA_PATH}/luas/luajit.c)
298+
add_library(pdlua-multi STATIC ${PDLUA_PATH}/luas/lua.c ${PDLUA_PATH}/luas/luajit.c)
299+
target_link_libraries(pdlua PUBLIC luajit)
300+
target_link_libraries(pdlua-multi PUBLIC luajit)
301+
302+
add_dependencies(luajit luajit_build)
303+
set_target_properties(luajit PROPERTIES
304+
IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/pd-lua/luas/luajit/src/${LUAJIT_LIB_NAME}
305+
INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/pd-lua/luas/luajit/src
306+
)
270307

271-
add_library(lua STATIC ${LUA_PATH}/onelua.c)
272-
add_library(lua-multi STATIC ${PDLUA_PATH}/onelua_multi.c)
308+
target_compile_definitions(pdlua PRIVATE PLUGDATA=1)
309+
target_compile_definitions(pdlua-multi PRIVATE PLUGDATA=1 PDINSTANCE=1)
273310

274311
if("${CMAKE_SYSTEM}" MATCHES "Linux")
275-
target_compile_definitions(lua PRIVATE MAKE_LIB=1 LUA_USE_LINUX=1)
276-
target_compile_definitions(lua-multi PRIVATE MAKE_LIB=1 LUA_USE_LINUX=1)
312+
target_compile_definitions(pdlua PRIVATE MAKE_LIB=1 LUA_USE_LINUX=1)
313+
target_compile_definitions(pdlua-multi PRIVATE MAKE_LIB=1 LUA_USE_LINUX=1)
277314
elseif(MSVC)
278-
target_compile_definitions(lua PRIVATE MAKE_LIB=1 LUA_USE_WINDOWS=1)
279-
target_compile_definitions(lua-multi PRIVATE MAKE_LIB=1 LUA_USE_WINDOWS=1)
315+
target_compile_definitions(pdlua PRIVATE MAKE_LIB=1 LUA_USE_WINDOWS=1)
316+
target_compile_definitions(pdlua-multi PRIVATE MAKE_LIB=1 LUA_USE_WINDOWS=1)
280317
elseif(APPLE)
281318
if("${CMAKE_SYSTEM_NAME}" MATCHES "iOS")
282-
target_compile_definitions(lua PRIVATE LUA_USE_IOS=1 PRIVATE MAKE_LIB=1)
283-
target_compile_definitions(lua-multi PRIVATE LUA_USE_IOS=1 PRIVATE MAKE_LIB=1)
319+
target_compile_definitions(pdlua PRIVATE LUA_USE_IOS=1 PRIVATE MAKE_LIB=1)
320+
target_compile_definitions(pdlua-multi PRIVATE LUA_USE_IOS=1 PRIVATE MAKE_LIB=1)
284321
else()
285-
target_compile_definitions(lua PRIVATE MAKE_LIB=1 LUA_USE_MACOSX=1)
286-
target_compile_definitions(lua-multi PRIVATE MAKE_LIB=1 LUA_USE_MACOSX=1)
322+
target_compile_definitions(pdlua PRIVATE MAKE_LIB=1 LUA_USE_MACOSX=1)
323+
target_compile_definitions(pdlua-multi PRIVATE MAKE_LIB=1 LUA_USE_MACOSX=1)
287324
endif()
288325
else()
289-
target_compile_definitions(lua PRIVATE MAKE_LIB=1)
290-
target_compile_definitions(lua-multi PRIVATE MAKE_LIB=1)
326+
target_compile_definitions(pdlua PRIVATE MAKE_LIB=1)
327+
target_compile_definitions(pdlua-multi PRIVATE MAKE_LIB=1)
291328
endif()
292329

293330
source_group(pdlua FILES ${PDLUA_SOURCES})
@@ -538,23 +575,23 @@ if("${CMAKE_SYSTEM}" MATCHES "Linux")
538575
add_library(pd INTERFACE)
539576
add_library(pd-multi INTERFACE)
540577
find_library(MATH_LIB m)
541-
target_link_libraries(externals PUBLIC ${externals_libs} ${GEM_LIBS} lua)
542-
target_link_libraries(externals-multi PUBLIC ${externals_libs} ${GEM_LIBS_MULTI} lua-multi)
578+
target_link_libraries(externals PUBLIC ${externals_libs} ${GEM_LIBS} pdlua)
579+
target_link_libraries(externals-multi PUBLIC ${externals_libs} ${GEM_LIBS_MULTI} pdlua-multi)
543580
elseif(MSVC)
544581
add_library(pd SHARED $<TARGET_OBJECTS:externals> $<TARGET_OBJECTS:pd-src>)
545582
add_library(pd-multi STATIC $<TARGET_OBJECTS:externals-multi> $<TARGET_OBJECTS:pd-src-multi>)
546583

547-
target_link_libraries(pd PUBLIC pthreadVC3 ws2_32 ${externals_libs} ${GEM_LIBS} lua)
548-
target_link_libraries(pd-multi PUBLIC pthreadVC3 ws2_32 ${externals_libs} ${GEM_LIBS_MULTI} lua-multi)
584+
target_link_libraries(pd PUBLIC pthreadVC3 ws2_32 ${externals_libs} ${GEM_LIBS} pdlua)
585+
target_link_libraries(pd-multi PUBLIC pthreadVC3 ws2_32 ${externals_libs} ${GEM_LIBS_MULTI} pdlua-multi)
549586

550587
add_custom_command(TARGET pd POST_BUILD
551588
COMMAND ${CMAKE_COMMAND} -E copy_if_different
552589
"$<TARGET_FILE:pd>"
553590
${CMAKE_SOURCE_DIR}/Plugins/Standalone/pd.dll
554591
)
555592
elseif(APPLE)
556-
target_link_libraries(externals PUBLIC ${externals_libs} ${GEM_LIBS} lua)
557-
target_link_libraries(externals-multi PUBLIC ${externals_libs} ${GEM_LIBS_MULTI} lua-multi)
593+
target_link_libraries(externals PUBLIC ${externals_libs} ${GEM_LIBS} pdlua)
594+
target_link_libraries(externals-multi PUBLIC ${externals_libs} ${GEM_LIBS_MULTI} pdlua-multi)
558595
endif()
559596

560597
if(MSVC)

Source/Objects/LuaObject.h

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,14 @@
66
#pragma once
77

88
extern "C" {
9-
#include <pd-lua/lua/lua.h>
9+
#include <pd-lua/luas/lua/lua.h>
1010

1111
#define NANOSVG_IMPLEMENTATION
1212
#include <pd-lua/svg/nanosvg.h>
1313

1414
#define PLUGDATA 1
1515
#include <pd-lua/pdlua.h>
1616
#undef PLUGDATA
17-
18-
void pdlua_gfx_mouse_down(t_pdlua* o, int x, int y);
19-
void pdlua_gfx_mouse_up(t_pdlua* o, int x, int y);
20-
void pdlua_gfx_mouse_move(t_pdlua* o, int x, int y);
21-
void pdlua_gfx_mouse_drag(t_pdlua* o, int x, int y);
22-
void pdlua_gfx_mouse_enter(t_pdlua *x, int xpos, int ypos);
23-
void pdlua_gfx_mouse_exit(t_pdlua *x, int xpos, int ypos);
24-
void pdlua_gfx_repaint(t_pdlua* o, int firsttime);
2517
}
2618

2719
struct LuaPropertiesPanel
@@ -352,7 +344,7 @@ class LuaObject final : public ObjectBase
352344
{
353345
pd->enqueueFunctionAsync<t_pdlua>(ptr, [x = e.x, y = e.y](t_pdlua* pdlua) {
354346
sys_lock();
355-
pdlua_gfx_mouse_down(pdlua, x, y);
347+
pdlua->gfx.pdlua_gfx_mouse_down(pdlua, x, y);
356348
sys_unlock();
357349
});
358350
}
@@ -361,7 +353,7 @@ class LuaObject final : public ObjectBase
361353
{
362354
pd->enqueueFunctionAsync<t_pdlua>(ptr, [x = e.x, y = e.y](t_pdlua* pdlua) {
363355
sys_lock();
364-
pdlua_gfx_mouse_drag(pdlua, x, y);
356+
pdlua->gfx.pdlua_gfx_mouse_drag(pdlua, x, y);
365357
sys_unlock();
366358
});
367359
}
@@ -370,7 +362,7 @@ class LuaObject final : public ObjectBase
370362
{
371363
pd->enqueueFunctionAsync<t_pdlua>(ptr, [x = e.x, y = e.y](t_pdlua* pdlua) {
372364
sys_lock();
373-
pdlua_gfx_mouse_move(pdlua, x, y);
365+
pdlua->gfx.pdlua_gfx_mouse_move(pdlua, x, y);
374366
sys_unlock();
375367
});
376368
}
@@ -379,7 +371,7 @@ class LuaObject final : public ObjectBase
379371
{
380372
pd->enqueueFunctionAsync<t_pdlua>(ptr, [x = e.x, y = e.y](t_pdlua* pdlua) {
381373
sys_lock();
382-
pdlua_gfx_mouse_up(pdlua, x, y);
374+
pdlua->gfx.pdlua_gfx_mouse_up(pdlua, x, y);
383375
sys_unlock();
384376
});
385377
}
@@ -388,7 +380,7 @@ class LuaObject final : public ObjectBase
388380
{
389381
pd->enqueueFunctionAsync<t_pdlua>(ptr, [x = e.x, y = e.y](t_pdlua* pdlua) {
390382
sys_lock();
391-
pdlua_gfx_mouse_enter(pdlua, x, y);
383+
pdlua->gfx.pdlua_gfx_mouse_enter(pdlua, x, y);
392384
sys_unlock();
393385
});
394386
}
@@ -397,7 +389,7 @@ class LuaObject final : public ObjectBase
397389
{
398390
pd->enqueueFunctionAsync<t_pdlua>(ptr, [x = e.x, y = e.y](t_pdlua* pdlua) {
399391
sys_lock();
400-
pdlua_gfx_mouse_exit(pdlua, x, y);
392+
pdlua->gfx.pdlua_gfx_mouse_exit(pdlua, x, y);
401393
sys_unlock();
402394
});
403395
}
@@ -406,7 +398,7 @@ class LuaObject final : public ObjectBase
406398
{
407399
pd->enqueueFunctionAsync<t_pdlua>(ptr, [](t_pdlua* pdlua) {
408400
sys_lock();
409-
pdlua_gfx_repaint(pdlua, 0);
401+
pdlua->gfx.pdlua_gfx_repaint(pdlua, 0);
410402
sys_unlock();
411403
});
412404
}

Source/Sidebar/CommandInput.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@
77
#pragma once
88
#include <utility>
99
extern "C" {
10-
#include <pd-lua/lua/lua.h>
11-
#include <pd-lua/lua/lauxlib.h>
12-
#include <pd-lua/lua/lualib.h>
10+
#include <pd-lua/luas/luajit/src/lua.h>
11+
#include <pd-lua/luas/luajit/src/lauxlib.h>
12+
#include <pd-lua/luas/luajit/src/lualib.h>
13+
#include <pd-lua/luas/lua-compat-5.3/c-api/compat-5.3.h>
1314
}
1415

1516
#include "Components/BouncingViewport.h"

Source/Sidebar/Console.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,6 @@
66

77
#pragma once
88
#include <utility>
9-
extern "C" {
10-
#include <pd-lua/lua/lua.h>
11-
#include <pd-lua/lua/lauxlib.h>
12-
#include <pd-lua/lua/lualib.h>
13-
}
14-
159
#include "Utility/CachedStringWidth.h"
1610
#include "Components/BouncingViewport.h"
1711
#include "Object.h"

0 commit comments

Comments
 (0)