diff options
| author | Li Jin <dragon-fly@qq.com> | 2025-11-04 09:58:12 +0800 |
|---|---|---|
| committer | Li Jin <dragon-fly@qq.com> | 2025-11-04 09:58:12 +0800 |
| commit | b6423d2d81ca0867570bf8ff021c30205cb7fd57 (patch) | |
| tree | 7ec78a12927812e55cc9946653e84345b965086b | |
| parent | aca747dffa1c185c6fc66af4834284e32225751f (diff) | |
| download | yuescript-b6423d2d81ca0867570bf8ff021c30205cb7fd57.tar.gz yuescript-b6423d2d81ca0867570bf8ff021c30205cb7fd57.tar.bz2 yuescript-b6423d2d81ca0867570bf8ff021c30205cb7fd57.zip | |
Fixed build files for Termux.
| -rw-r--r-- | CMakeLists.txt | 34 | ||||
| -rw-r--r-- | makefile | 31 |
2 files changed, 61 insertions, 4 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 613019e..2d155b1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt | |||
| @@ -44,7 +44,7 @@ if (LUA_LIBRARIES MATCHES "LUA_LIBRARIES-NOTFOUND") | |||
| 44 | endif() | 44 | endif() |
| 45 | else () | 45 | else () |
| 46 | message(STATUS "Lua: using information from luarocks") | 46 | message(STATUS "Lua: using information from luarocks") |
| 47 | endif() | 47 | endif() |
| 48 | 48 | ||
| 49 | message(STATUS "Lua: " ${LUA}) | 49 | message(STATUS "Lua: " ${LUA}) |
| 50 | message(STATUS "Lua include: " ${LUA_INCLUDE_DIR}) | 50 | message(STATUS "Lua include: " ${LUA_INCLUDE_DIR}) |
| @@ -54,6 +54,24 @@ enable_language(CXX) | |||
| 54 | include_directories(src src/3rdParty ${LUA_INCLUDE_DIR}) | 54 | include_directories(src src/3rdParty ${LUA_INCLUDE_DIR}) |
| 55 | add_definitions(-std=c++17 -O3 -fPIC) | 55 | add_definitions(-std=c++17 -O3 -fPIC) |
| 56 | 56 | ||
| 57 | # Detect Android Termux environment | ||
| 58 | # Termux typically has ANDROID_ROOT environment variable set and PREFIX points to Termux directory | ||
| 59 | set(IS_TERMUX FALSE) | ||
| 60 | if (DEFINED ENV{ANDROID_ROOT}) | ||
| 61 | # Check if PREFIX environment variable points to Termux directory | ||
| 62 | if (DEFINED ENV{PREFIX}) | ||
| 63 | if ("$ENV{PREFIX}" MATCHES "com.termux") | ||
| 64 | set(IS_TERMUX TRUE) | ||
| 65 | message(STATUS "Detected Android Termux environment (via PREFIX: $ENV{PREFIX})") | ||
| 66 | endif() | ||
| 67 | endif() | ||
| 68 | # Alternative check: verify if Termux installation path exists | ||
| 69 | if (NOT IS_TERMUX AND EXISTS "/data/data/com.termux/files/usr") | ||
| 70 | set(IS_TERMUX TRUE) | ||
| 71 | message(STATUS "Detected Android Termux environment (via filesystem check)") | ||
| 72 | endif() | ||
| 73 | endif() | ||
| 74 | |||
| 57 | if (APPLE) | 75 | if (APPLE) |
| 58 | add_compile_options(-Wno-deprecated-declarations) | 76 | add_compile_options(-Wno-deprecated-declarations) |
| 59 | endif () | 77 | endif () |
| @@ -70,6 +88,11 @@ set_target_properties(libyue PROPERTIES PREFIX "") | |||
| 70 | set_target_properties(libyue PROPERTIES OUTPUT_NAME "yue") | 88 | set_target_properties(libyue PROPERTIES OUTPUT_NAME "yue") |
| 71 | target_link_libraries(libyue ${LUA_LIBRARIES}) | 89 | target_link_libraries(libyue ${LUA_LIBRARIES}) |
| 72 | 90 | ||
| 91 | # Add YUE_NO_WATCHER macro for Termux environment | ||
| 92 | if (IS_TERMUX) | ||
| 93 | target_compile_definitions(libyue PRIVATE YUE_NO_WATCHER) | ||
| 94 | endif() | ||
| 95 | |||
| 73 | add_executable(yue | 96 | add_executable(yue |
| 74 | src/yuescript/ast.cpp | 97 | src/yuescript/ast.cpp |
| 75 | src/yuescript/parser.cpp | 98 | src/yuescript/parser.cpp |
| @@ -154,6 +177,11 @@ else () | |||
| 154 | target_compile_options(yue PRIVATE -Wall -Wno-long-long -fPIC) | 177 | target_compile_options(yue PRIVATE -Wall -Wno-long-long -fPIC) |
| 155 | endif() | 178 | endif() |
| 156 | 179 | ||
| 180 | # Add YUE_NO_WATCHER macro for Termux environment | ||
| 181 | if (IS_TERMUX) | ||
| 182 | target_compile_definitions(yue PRIVATE YUE_NO_WATCHER) | ||
| 183 | endif() | ||
| 184 | |||
| 157 | if (${CMAKE_BUILD_TYPE} MATCHES "Debug") | 185 | if (${CMAKE_BUILD_TYPE} MATCHES "Debug") |
| 158 | target_compile_definitions(yue PRIVATE DEBUG) | 186 | target_compile_definitions(yue PRIVATE DEBUG) |
| 159 | elseif (${CMAKE_BUILD_TYPE} MATCHES "Release") | 187 | elseif (${CMAKE_BUILD_TYPE} MATCHES "Release") |
| @@ -169,9 +197,9 @@ elseif (NOT (${CMAKE_SYSTEM_NAME} MATCHES "Haiku") AND NOT WIN32) | |||
| 169 | else () | 197 | else () |
| 170 | target_link_libraries(yue PRIVATE ${LUA_LIBRARIES}) | 198 | target_link_libraries(yue PRIVATE ${LUA_LIBRARIES}) |
| 171 | endif() | 199 | endif() |
| 172 | 200 | ||
| 173 | if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") | 201 | if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") |
| 174 | target_link_options(yue PRIVATE -lstdc++fs -ldl) | 202 | target_link_options(yue PRIVATE -ldl) |
| 175 | endif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") | 203 | endif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") |
| 176 | 204 | ||
| 177 | install(CODE "") | 205 | install(CODE "") |
| @@ -54,13 +54,42 @@ endif | |||
| 54 | INCLUDES += -I $(SRC_PATH)/3rdParty/lua | 54 | INCLUDES += -I $(SRC_PATH)/3rdParty/lua |
| 55 | LINK_FLAGS += -L $(SRC_PATH)/3rdParty/lua -llua -ldl | 55 | LINK_FLAGS += -L $(SRC_PATH)/3rdParty/lua -llua -ldl |
| 56 | endif | 56 | endif |
| 57 | |||
| 58 | # Detect Android Termux environment | ||
| 59 | # Termux typically has ANDROID_ROOT environment variable set and PREFIX points to Termux directory | ||
| 60 | IS_TERMUX := false | ||
| 61 | ANDROID_ROOT_VAR := $(shell echo $$ANDROID_ROOT) | ||
| 62 | PREFIX_VAR := $(shell echo $$PREFIX) | ||
| 63 | ifneq ($(ANDROID_ROOT_VAR),) | ||
| 64 | # Check if PREFIX environment variable points to Termux directory | ||
| 65 | ifneq ($(PREFIX_VAR),) | ||
| 66 | ifneq ($(findstring com.termux,$(PREFIX_VAR)),) | ||
| 67 | IS_TERMUX := true | ||
| 68 | endif | ||
| 69 | endif | ||
| 70 | # Alternative check: verify if Termux installation path exists | ||
| 71 | ifeq ($(IS_TERMUX),false) | ||
| 72 | ifneq ($(shell test -d /data/data/com.termux/files/usr && echo yes),) | ||
| 73 | IS_TERMUX := true | ||
| 74 | endif | ||
| 75 | endif | ||
| 76 | endif | ||
| 77 | |||
| 78 | # Auto-set NO_WATCHER for Termux environment if not explicitly set | ||
| 79 | ifeq ($(IS_TERMUX),true) | ||
| 80 | ifeq ($(NO_WATCHER),) | ||
| 81 | NO_WATCHER := true | ||
| 82 | $(info Detected Android Termux environment, automatically setting NO_WATCHER=true) | ||
| 83 | endif | ||
| 84 | endif | ||
| 85 | |||
| 57 | ifeq ($(NO_WATCHER),true) | 86 | ifeq ($(NO_WATCHER),true) |
| 58 | COMPILE_FLAGS += -DYUE_NO_WATCHER | 87 | COMPILE_FLAGS += -DYUE_NO_WATCHER |
| 59 | endif | 88 | endif |
| 60 | 89 | ||
| 61 | # Add platform related linker flag | 90 | # Add platform related linker flag |
| 62 | ifneq ($(UNAME_S),Darwin) | 91 | ifneq ($(UNAME_S),Darwin) |
| 63 | LINK_FLAGS += -lstdc++fs -Wl,-E | 92 | LINK_FLAGS += -Wl,-E |
| 64 | PLAT = linux | 93 | PLAT = linux |
| 65 | else | 94 | else |
| 66 | LINK_FLAGS += -framework CoreFoundation -framework CoreServices | 95 | LINK_FLAGS += -framework CoreFoundation -framework CoreServices |
