@@ -131,7 +131,7 @@ elseif(PSP_PYTHON_BUILD)
131
131
if (NOT DEFINED PSP_PYTHON_VERSION )
132
132
set (PSP_PYTHON_VERSION 3.10 )
133
133
endif ()
134
- if ($ENV{PYODIDE} )
134
+ if (PSP_WASM_BUILD )
135
135
set (PSP_PYODIDE 1 )
136
136
else ()
137
137
set (PSP_PYODIDE 0 )
@@ -223,14 +223,6 @@ if(NOT DEFINED PSP_WASM_EXCEPTIONS AND NOT PSP_PYTHON_BUILD)
223
223
set (PSP_WASM_EXCEPTIONS ON )
224
224
endif ()
225
225
226
- if (PSP_PYODIDE )
227
- set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} \
228
- -s RELOCATABLE=1 \
229
- -s SIDE_MODULE=2 \
230
- " )
231
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC" )
232
- endif ()
233
-
234
226
# if(NOT WIN32)
235
227
# set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
236
228
# set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG")
@@ -418,6 +410,14 @@ set(CMAKE_CXX_FLAGS " \
418
410
-O3 \
419
411
" )
420
412
413
+ if (PSP_PYODIDE )
414
+ set (RELOCATABLE_FLAGS "-sRELOCATABLE=1 -sSIDE_MODULE=2 -sWASM_BIGINT=1" )
415
+
416
+ string (APPEND CMAKE_EXE_LINKER_FLAGS "${RELOCATABLE_FLAGS} " )
417
+ string (APPEND CMAKE_C_FLAGS "${RELOCATABLE_FLAGS} " )
418
+ string (APPEND CMAKE_CXX_FLAGS "${RELOCATABLE_FLAGS} " )
419
+ endif ()
420
+
421
421
422
422
# Build header-only dependencies from external source
423
423
psp_build_dep ("date" "${PSP_CMAKE_MODULE_PATH} /date.txt.in" )
@@ -559,7 +559,7 @@ set(SOURCE_FILES
559
559
${PSP_CPP_SRC} /src/cpp/vocab.cpp
560
560
${PSP_CPP_SRC} /src/cpp/arrow_csv.cpp
561
561
${PSP_CPP_SRC} /src/cpp/server.cpp
562
- ${PSP_CPP_SRC} /src/cpp/proto_api .cpp
562
+ ${PSP_CPP_SRC} /src/cpp/binding_api .cpp
563
563
)
564
564
565
565
set (PYTHON_SOURCE_FILES ${SOURCE_FILES} )
@@ -574,27 +574,36 @@ else()
574
574
endif ()
575
575
576
576
# Common flags for WASM/JS build and Pyodide
577
- set (PSP_WASM_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} \
578
- --no-entry \
579
- --closure=1 \
580
- -s NO_FILESYSTEM=1 \
581
- -s ALLOW_MEMORY_GROWTH=1 \
582
- -s MODULARIZE=1 \
583
- -s WASM_BIGINT=1 \
584
- -s INCOMING_MODULE_JS_API=locateFile,psp_heap_size,psp_stack_trace,HEAPU8,HEAPU32,instantiateWasm \
585
- -s TEXTDECODER=2 \
586
- -s STANDALONE_WASM=1 \
587
- -s DYNAMIC_EXECUTION=0 \
588
- -s BINARYEN_EXTRA_PASSES=--one-caller-inline-max-function-size=19306 \
589
- -s EXPORT_NAME=\" load_perspective\" \
590
- -s MAXIMUM_MEMORY=4gb \
591
- -s ERROR_ON_UNDEFINED_SYMBOLS=0 \
592
- -s NODEJS_CATCH_EXIT=0 \
593
- -s NODEJS_CATCH_REJECTION=0 \
594
- -s USE_ES6_IMPORT_META=1 \
595
- -s EXPORT_ES6=1 \
596
- -s EXPORTED_FUNCTIONS=_js_poll,_js_new_server,_js_free,_js_alloc,_js_handle_request,_js_new_session,_js_close_session \
597
- " )
577
+ if (PSP_PYODIDE )
578
+ set (PSP_WASM_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} \
579
+ --no-entry \
580
+ -s EXPORTED_FUNCTIONS=_psp_poll,_psp_new_server,_psp_free,_psp_alloc,_psp_handle_request,_psp_new_session,_psp_close_session,_psp_delete_server \
581
+ -s SIDE_MODULE=2 \
582
+ " )
583
+ else ()
584
+ set (PSP_WASM_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} \
585
+ --no-entry \
586
+ --closure=1 \
587
+ -s NO_FILESYSTEM=1 \
588
+ -s ALLOW_MEMORY_GROWTH=1 \
589
+ -s MODULARIZE=1 \
590
+ -s WASM_BIGINT=1 \
591
+ -s INCOMING_MODULE_JS_API=locateFile,psp_heap_size,psp_stack_trace,HEAPU8,HEAPU32,instantiateWasm \
592
+ -s TEXTDECODER=2 \
593
+ -s STANDALONE_WASM=1 \
594
+ -s DYNAMIC_EXECUTION=0 \
595
+ -s BINARYEN_EXTRA_PASSES=--one-caller-inline-max-function-size=19306 \
596
+ -s EXPORT_NAME=\" load_perspective\" \
597
+ -s MAXIMUM_MEMORY=4gb \
598
+ -s ERROR_ON_UNDEFINED_SYMBOLS=0 \
599
+ -s NODEJS_CATCH_EXIT=0 \
600
+ -s NODEJS_CATCH_REJECTION=0 \
601
+ -s USE_ES6_IMPORT_META=1 \
602
+ -s EXPORT_ES6=1 \
603
+ -s EXPORTED_FUNCTIONS=_psp_poll,_psp_new_server,_psp_free,_psp_alloc,_psp_handle_request,_psp_new_session,_psp_close_session,_psp_delete_server \
604
+ " )
605
+ endif ()
606
+
598
607
if (PSP_WASM_EXCEPTIONS )
599
608
set (PSP_WASM_LINKER_FLAGS "${PSP_WASM_LINKER_FLAGS} -s EXCEPTION_STACK_TRACES=1 " )
600
609
endif ()
@@ -609,15 +618,15 @@ else()
609
618
set (PSP_SANITIZE_FLAGS )
610
619
endif ()
611
620
612
- if (PSP_WASM_BUILD )
621
+ if (PSP_WASM_BUILD AND NOT PSP_PYTHON_BUILD )
613
622
set (CMAKE_EXE_LINKER_FLAGS "${PSP_WASM_LINKER_FLAGS} --pre-js \" ${PSP_CPP_SRC} /env.js\" " )
614
623
615
624
add_library (psp ${WASM_SOURCE_FILES} )
616
625
target_compile_definitions (psp PRIVATE PSP_ENABLE_WASM=1 )
617
626
set_target_properties (psp PROPERTIES COMPILE_FLAGS "" )
618
627
target_link_libraries (psp PRIVATE arrow re2 protos )
619
628
620
- add_executable (perspective_esm src/cpp/emscripten_api .cpp )
629
+ add_executable (perspective_esm src/cpp/binding_api .cpp )
621
630
target_link_libraries (perspective_esm psp protos )
622
631
target_compile_definitions (perspective_esm PRIVATE PSP_ENABLE_WASM=1 )
623
632
target_link_options (perspective_esm PUBLIC -sENVIRONMENT= "web" ${PSP_SANITIZE_FLAGS} )
@@ -644,25 +653,25 @@ elseif(PSP_CPP_BUILD OR PSP_PYTHON_BUILD)
644
653
set (CMAKE_SHARED_LIBRARY_PREFIX lib )
645
654
endif ()
646
655
647
- if (PSP_PYODIDE )
648
- add_library (psppy SHARED )
649
- set (PSP_PYTHON_DEFS PSP_ENABLE_WASM=1 )
650
- target_compile_definitions (psppy PRIVATE ${PSP_PYTHON_DEFS} )
651
- include_directories (${PSP_PYTHON_SRC} /include )
652
- target_compile_definitions (psppy PRIVATE PSP_ENABLE_PYTHON=1 )
653
- target_compile_options (psppy PRIVATE -fvisibility=hidden )
654
- target_link_libraries (psppy arrow re2 )
655
- add_custom_command (TARGET psppy POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $< TARGET_FILE:psppy> ${PSP_PYTHON_SRC} /table/ )
656
- elseif (PSP_PYTHON_BUILD )
656
+ if (PSP_PYTHON_BUILD )
657
657
# #######################
658
658
# Python extra targets #
659
659
# #######################
660
- add_library (psp STATIC ${PYTHON_SOURCE_FILES} )
660
+ if (PSP_WASM_BUILD )
661
+ set (CMAKE_EXECUTABLE_SUFFIX ".wasm" )
662
+ set (CMAKE_EXE_LINKER_FLAGS "${PSP_WASM_LINKER_FLAGS} --pre-js \" ${PSP_CPP_SRC} /env.js\" " )
663
+ add_library (psp ${PYTHON_SOURCE_FILES} )
664
+ add_executable (psppy ${PSP_CPP_SRC} /src/cpp/binding_api.cpp )
665
+ target_compile_definitions (psppy PRIVATE PSP_ENABLE_PYTHON=1 PSP_ENABLE_WASM=1 )
666
+ target_link_libraries (psppy PRIVATE psp protos )
667
+ else ()
668
+ add_library (psp SHARED ${PYTHON_SOURCE_FILES} )
669
+ target_compile_definitions (psp PRIVATE PSP_ENABLE_PYTHON=1 PSP_PARALLEL_FOR=1 )
670
+ endif ()
661
671
# add_library(psppy SHARED ${PYTHON_BINDING_SOURCE_FILES})
662
672
663
673
include_directories (${PSP_PYTHON_SRC} /include )
664
674
665
- target_compile_definitions (psp PRIVATE PSP_ENABLE_PYTHON=1 PSP_PARALLEL_FOR=1 )
666
675
# target_compile_definitions(psppy PRIVATE PSP_ENABLE_PYTHON=1 PSP_PARALLEL_FOR=1)
667
676
668
677
if (WIN32 )
@@ -678,7 +687,9 @@ elseif(PSP_CPP_BUILD OR PSP_PYTHON_BUILD)
678
687
679
688
target_compile_options (psp PRIVATE -fvisibility=hidden )
680
689
# target_compile_options(psppy PRIVATE -fvisibility=hidden)
690
+ elseif (MANYLINUX )
681
691
else ()
692
+ target_compile_options (psp PRIVATE -fvisibility=hidden )
682
693
# target_compile_options(psppy PRIVATE -Wdeprecated-declarations)
683
694
endif ()
684
695
0 commit comments