From 183fcd125fa254762ee1cc2ea29aae87b1082c64 Mon Sep 17 00:00:00 2001 From: Yue Wang <yuleopen@gmail.com> Date: Tue, 26 Dec 2023 22:25:10 +0900 Subject: [PATCH] Make Python a configurable build option. --- CMakeLists.txt | 58 +++++++++++++++++++++++++++++++----------- include/tic80_config.h | 2 -- 2 files changed, 43 insertions(+), 17 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 87713802e..3d7215e8e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -408,21 +408,29 @@ target_include_directories(squirrel PRIVATE ${SQUIRREL_DIR}/sqstdlib) # pocketpy (Python) ################################ -add_subdirectory(${THIRDPARTY_DIR}/pocketpy) -target_compile_definitions(pocketpy PRIVATE PK_ENABLE_OS=0) -include_directories(${THIRDPARTY_DIR}/pocketpy/include) +set(BUILD_WITH_PYTHON_DEFAULT TRUE) -if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - target_compile_options(pocketpy PRIVATE -Wno-psabi) -endif() +option(BUILD_WITH_PYTHON "Python Enabled" ${BUILD_WITH_PYTHON_DEFAULT}) +message("BUILD_WITH_PYTHON: ${BUILD_WITH_PYTHON}") + +if(BUILD_WITH_PYTHON) + + add_subdirectory(${THIRDPARTY_DIR}/pocketpy) + target_compile_definitions(pocketpy PRIVATE PK_ENABLE_OS=0) + include_directories(${THIRDPARTY_DIR}/pocketpy/include) + + if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + target_compile_options(pocketpy PRIVATE -Wno-psabi) + endif() -# alias pocketpy to python for next steps -set_target_properties(pocketpy PROPERTIES OUTPUT_NAME python) -add_library(python ALIAS pocketpy) + # alias pocketpy to python for next steps + set_target_properties(pocketpy PROPERTIES OUTPUT_NAME python) + add_library(python ALIAS pocketpy) -if(EMSCRIPTEN) - # exceptions must be enabled for emscripten - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fexceptions") + if(EMSCRIPTEN) + # exceptions must be enabled for emscripten + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fexceptions") + endif() endif() ################################ @@ -583,13 +591,16 @@ macro(MACRO_CORE SCRIPT DEFINE BUILD_DEPRECATED) lpeg wasm squirrel - python scheme quickjs blipbuf zlib ) + if(BUILD_WITH_PYTHON) + target_link_libraries(tic80core${SCRIPT} python) + endif() + if(BUILD_WITH_WREN) target_link_libraries(tic80core${SCRIPT} wren) endif() @@ -629,7 +640,11 @@ if(BUILD_STUB) endif() MACRO_CORE(squirrel TIC_BUILD_WITH_SQUIRREL FALSE) - MACRO_CORE(python TIC_BUILD_WITH_PYTHON FALSE) + + if(BUILD_WITH_WREN) + MACRO_CORE(python TIC_BUILD_WITH_PYTHON FALSE) + endif() + MACRO_CORE(scheme TIC_BUILD_WITH_SCHEME FALSE) MACRO_CORE(wasm TIC_BUILD_WITH_WASM FALSE) @@ -643,6 +658,10 @@ if(BUILD_STUB) endif() +if(BUILD_WITH_PYTHON) + target_compile_definitions(tic80core PUBLIC TIC_BUILD_WITH_PYTHON=1) +endif() + if(BUILD_WITH_WREN) target_compile_definitions(tic80core PUBLIC TIC_BUILD_WITH_WREN=1) endif() @@ -920,6 +939,11 @@ if(BUILD_DEMO_CARTS) ${CMAKE_SOURCE_DIR}/config.lua ) + if(NOT BUILD_WITH_PYTHON) + list(REMOVE_ITEM DEMO_CARTS ${DEMO_CARTS_IN}/pythondemo.py) + list(REMOVE_ITEM DEMO_CARTS ${DEMO_CARTS_IN}/bunny/pythonmark.py) + endif() + if(NOT BUILD_WITH_WREN) list(REMOVE_ITEM DEMO_CARTS ${DEMO_CARTS_IN}/wrendemo.wren) list(REMOVE_ITEM DEMO_CARTS ${DEMO_CARTS_IN}/bunny/wrenmark.wren) @@ -1417,7 +1441,11 @@ if(BUILD_STUB) MACRO_STUB(js) MACRO_STUB(squirrel) - MACRO_STUB(python) + + if(BUILD_WITH_PYTHON) + MACRO_STUB(python) + endif() + MACRO_STUB(scheme) if(BUILD_WITH_JANET) diff --git a/include/tic80_config.h b/include/tic80_config.h index 0a73f804f..5d9478d6d 100644 --- a/include/tic80_config.h +++ b/include/tic80_config.h @@ -28,7 +28,6 @@ !defined(TIC_BUILD_WITH_JS) && \ !defined(TIC_BUILD_WITH_SCHEME) && \ !defined(TIC_BUILD_WITH_SQUIRREL) && \ - !defined(TIC_BUILD_WITH_PYTHON) && \ !defined(TIC_BUILD_WITH_WASM) # define TIC_BUILD_WITH_LUA 1 @@ -37,7 +36,6 @@ # define TIC_BUILD_WITH_JS 1 # define TIC_BUILD_WITH_SCHEME 1 # define TIC_BUILD_WITH_SQUIRREL 1 -# define TIC_BUILD_WITH_PYTHON 1 # define TIC_BUILD_WITH_WASM 1 #endif