Skip to content

Commit 38ef7c0

Browse files
authored
Support for iOS, tvOS and watchOS (#1214)
1 parent 3d6606a commit 38ef7c0

File tree

2 files changed

+44
-26
lines changed

2 files changed

+44
-26
lines changed

CMakeLists.txt

Lines changed: 41 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,17 @@ else()
2121
set(MINGW FALSE)
2222
endif()
2323

24+
if(CMAKE_SYSTEM_NAME STREQUAL "tvOS")
25+
set(TVOS TRUE)
26+
else()
27+
set(TVOS FALSE)
28+
endif()
29+
if(CMAKE_SYSTEM_NAME STREQUAL "watchOS")
30+
set(WATCHOS TRUE)
31+
else()
32+
set(WATCHOS FALSE)
33+
endif()
34+
2435
if(NOT CMAKE_BUILD_TYPE)
2536
message(STATUS "No build type selected, default to Release")
2637
set(CMAKE_BUILD_TYPE "Release")
@@ -38,7 +49,7 @@ macro(xcheck_add_c_compiler_flag FLAG)
3849
endmacro()
3950

4051
xcheck_add_c_compiler_flag(-Wall)
41-
if(NOT MSVC AND NOT IOS)
52+
if(NOT MSVC AND NOT IOS AND NOT TVOS AND NOT WATCHOS)
4253
xcheck_add_c_compiler_flag(-Werror)
4354
xcheck_add_c_compiler_flag(-Wextra)
4455
endif()
@@ -241,6 +252,12 @@ if(WIN32)
241252
# NB: Windows 7 is EOL and we are only supporting in so far as it doesn't interfere with progress.
242253
list(APPEND qjs_defines WIN32_LEAN_AND_MEAN _WIN32_WINNT=0x0601)
243254
endif()
255+
if(TVOS)
256+
list(APPEND qjs_defines _TVOS)
257+
endif()
258+
if(WATCHOS)
259+
list(APPEND qjs_defines _WATCHOS)
260+
endif()
244261
list(APPEND qjs_libs ${CMAKE_DL_LIBS})
245262
find_package(Threads)
246263
if(NOT CMAKE_SYSTEM_NAME STREQUAL "WASI")
@@ -416,29 +433,29 @@ endif()
416433
# Install target
417434
#
418435

419-
if(NOT IOS)
420-
file(STRINGS quickjs.h quickjs_h REGEX QJS_VERSION)
421-
string(REGEX MATCH "QJS_VERSION_MAJOR ([0-9]*)" _ "${quickjs_h}")
422-
set(QJS_VERSION_MAJOR ${CMAKE_MATCH_1})
423-
string(REGEX MATCH "QJS_VERSION_MINOR ([0-9]*)" _ "${quickjs_h}")
424-
set(QJS_VERSION_MINOR ${CMAKE_MATCH_1})
425-
string(REGEX MATCH "QJS_VERSION_PATCH ([0-9]*)" _ "${quickjs_h}")
426-
set(QJS_VERSION_PATCH ${CMAKE_MATCH_1})
427-
set_target_properties(qjs PROPERTIES
428-
VERSION ${QJS_VERSION_MAJOR}.${QJS_VERSION_MINOR}.${QJS_VERSION_PATCH}
429-
SOVERSION ${QJS_VERSION_MAJOR}
430-
)
431-
install(FILES quickjs.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
432-
if(QJS_BUILD_LIBC)
433-
install(FILES quickjs-libc.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
434-
endif()
436+
file(STRINGS quickjs.h quickjs_h REGEX QJS_VERSION)
437+
string(REGEX MATCH "QJS_VERSION_MAJOR ([0-9]*)" _ "${quickjs_h}")
438+
set(QJS_VERSION_MAJOR ${CMAKE_MATCH_1})
439+
string(REGEX MATCH "QJS_VERSION_MINOR ([0-9]*)" _ "${quickjs_h}")
440+
set(QJS_VERSION_MINOR ${CMAKE_MATCH_1})
441+
string(REGEX MATCH "QJS_VERSION_PATCH ([0-9]*)" _ "${quickjs_h}")
442+
set(QJS_VERSION_PATCH ${CMAKE_MATCH_1})
443+
set_target_properties(qjs PROPERTIES
444+
VERSION ${QJS_VERSION_MAJOR}.${QJS_VERSION_MINOR}.${QJS_VERSION_PATCH}
445+
SOVERSION ${QJS_VERSION_MAJOR}
446+
)
447+
install(FILES quickjs.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
448+
if(QJS_BUILD_LIBC)
449+
install(FILES quickjs-libc.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
450+
endif()
451+
if(NOT IOS AND NOT TVOS AND NOT WATCHOS)
435452
install(TARGETS qjs_exe RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
436453
install(TARGETS qjsc RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
437-
install(TARGETS qjs EXPORT qjsConfig
438-
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
439-
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
440-
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
441-
install(EXPORT qjsConfig DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/quickjs)
442-
install(FILES LICENSE DESTINATION ${CMAKE_INSTALL_DOCDIR})
443-
install(DIRECTORY examples DESTINATION ${CMAKE_INSTALL_DOCDIR})
444454
endif()
455+
install(TARGETS qjs EXPORT qjsConfig
456+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
457+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
458+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
459+
install(EXPORT qjsConfig DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/quickjs)
460+
install(FILES LICENSE DESTINATION ${CMAKE_INSTALL_DOCDIR})
461+
install(DIRECTORY examples DESTINATION ${CMAKE_INSTALL_DOCDIR})

quickjs-libc.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@
6969
#if defined(__APPLE__)
7070
typedef sig_t sighandler_t;
7171
#include <crt_externs.h>
72+
#include <TargetConditionals.h>
7273
#define environ (*_NSGetEnviron())
7374
#endif
7475

@@ -3114,7 +3115,7 @@ static JSValue js_os_realpath(JSContext *ctx, JSValueConst this_val,
31143115
}
31153116
#endif
31163117

3117-
#if !defined(_WIN32) && !defined(__wasi__)
3118+
#if !defined(_WIN32) && !defined(__wasi__) && !(defined(__APPLE__) && (TARGET_OS_TV || TARGET_OS_WATCH))
31183119
static JSValue js_os_symlink(JSContext *ctx, JSValueConst this_val,
31193120
int argc, JSValueConst *argv)
31203121
{
@@ -4173,7 +4174,7 @@ static const JSCFunctionListEntry js_os_funcs[] = {
41734174
#if !defined(__wasi__)
41744175
JS_CFUNC_DEF("realpath", 1, js_os_realpath ),
41754176
#endif
4176-
#if !defined(_WIN32) && !defined(__wasi__)
4177+
#if !defined(_WIN32) && !defined(__wasi__) && !(defined(__APPLE__) && (TARGET_OS_TV || TARGET_OS_WATCH))
41774178
JS_CFUNC_MAGIC_DEF("lstat", 1, js_os_stat, 1 ),
41784179
JS_CFUNC_DEF("symlink", 2, js_os_symlink ),
41794180
JS_CFUNC_DEF("readlink", 1, js_os_readlink ),

0 commit comments

Comments
 (0)