wasm: add support for wasm64 build
This adds a new platform named wasm-emscripten-64 which sets the build and link argument -MEMORY64 You may see this warning, please ignore at your own discretion: em++: warning: -sMEMORY64 is still experimental. Many features may not work. [-Wexperimental] Fixes: QTBUG-104891 Change-Id: I8d3150d239ba72dbef5c2352e0171d6cfbe51b59 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
This commit is contained in:
parent
310aecc94a
commit
924eec1daa
@ -21,7 +21,7 @@ endfunction()
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/QtPublicWasmToolchainHelpers.cmake")
|
||||
function(qt_auto_detect_wasm)
|
||||
if("${QT_QMAKE_TARGET_MKSPEC}" STREQUAL "wasm-emscripten")
|
||||
if("${QT_QMAKE_TARGET_MKSPEC}" STREQUAL "wasm-emscripten" OR "${QT_QMAKE_TARGET_MKSPEC}" STREQUAL "wasm-emscripten-64")
|
||||
if (NOT DEFINED ENV{EMSDK})
|
||||
message(FATAL_ERROR
|
||||
"Can't find an Emscripten SDK! Make sure the EMSDK environment variable is "
|
||||
|
@ -316,7 +316,11 @@ elseif(IOS)
|
||||
elseif(APPLE)
|
||||
set(QT_DEFAULT_MKSPEC macx-clang)
|
||||
elseif(WASM)
|
||||
set(QT_DEFAULT_MKSPEC wasm-emscripten)
|
||||
if(WASM64)
|
||||
set(QT_DEFAULT_MKSPEC wasm-emscripten-64)
|
||||
else()
|
||||
set(QT_DEFAULT_MKSPEC wasm-emscripten)
|
||||
endif()
|
||||
elseif(QNX)
|
||||
# Certain POSIX defines are not set if we don't compile with -std=gnuXX
|
||||
set(QT_ENABLE_CXX_EXTENSIONS ON)
|
||||
|
@ -20,6 +20,7 @@ qt_set01(OPENBSD CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") # FIXME: How to identify
|
||||
qt_set01(FREEBSD CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") # FIXME: How to identify this?
|
||||
qt_set01(NETBSD CMAKE_SYSTEM_NAME STREQUAL "NetBSD") # FIXME: How to identify this?
|
||||
qt_set01(WASM CMAKE_SYSTEM_NAME STREQUAL "Emscripten" OR EMSCRIPTEN)
|
||||
qt_set01(WASM64 QT_QMAKE_TARGET_MKSPEC STREQUAL "wasm-emscripten-64")
|
||||
qt_set01(SOLARIS CMAKE_SYSTEM_NAME STREQUAL "SunOS")
|
||||
qt_set01(HURD CMAKE_SYSTEM_NAME STREQUAL "GNU")
|
||||
|
||||
|
@ -12,6 +12,11 @@ function (qt_internal_setup_wasm_target_properties wasmTarget)
|
||||
|
||||
target_link_libraries("${wasmTarget}" INTERFACE embind)
|
||||
|
||||
## wasm64
|
||||
if (WASM64)
|
||||
target_compile_options("${wasmTarget}" INTERFACE "SHELL:-s MEMORY64=1" )
|
||||
target_link_options("${wasmTarget}" INTERFACE "SHELL:-s MEMORY64=1" -mwasm64)
|
||||
endif()
|
||||
# Enable MODULARIZE and set EXPORT_NAME, which makes it possible to
|
||||
# create application instances using a global constructor function,
|
||||
# e.g. let app_instance = await createQtAppInstance().
|
||||
|
145
mkspecs/common/wasm/qplatformdefs.h
Normal file
145
mkspecs/common/wasm/qplatformdefs.h
Normal file
@ -0,0 +1,145 @@
|
||||
// Copyright (C) 2018 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
|
||||
|
||||
#ifndef Q_WASM_PLATFORMDEFS_H
|
||||
#define Q_WASM_PLATFORMDEFS_H
|
||||
|
||||
// Get Qt defines/settings
|
||||
|
||||
#include "qglobal.h"
|
||||
|
||||
// Set any POSIX/XOPEN defines at the top of this file to turn on specific APIs
|
||||
|
||||
// 1) need to reset default environment if _BSD_SOURCE is defined
|
||||
// 2) need to specify POSIX thread interfaces explicitly in glibc 2.0
|
||||
// 3) it seems older glibc need this to include the X/Open stuff
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
// We are hot - unistd.h should have turned on the specific APIs we requested
|
||||
|
||||
#include <features.h>
|
||||
#include <pthread.h>
|
||||
#include <dirent.h>
|
||||
#include <fcntl.h>
|
||||
#include <grp.h>
|
||||
#include <pwd.h>
|
||||
#include <signal.h>
|
||||
#include <dlfcn.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/ipc.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/wait.h>
|
||||
|
||||
#ifndef QT_NO_IPV6IFNAME
|
||||
#include <net/if.h>
|
||||
#endif
|
||||
|
||||
#ifndef _GNU_SOURCE
|
||||
# define _GNU_SOURCE
|
||||
#endif
|
||||
|
||||
#ifdef QT_LARGEFILE_SUPPORT
|
||||
#define QT_STATBUF struct stat64
|
||||
#define QT_STATBUF4TSTAT struct stat64
|
||||
#define QT_STAT ::stat64
|
||||
#define QT_FSTAT ::fstat64
|
||||
#define QT_LSTAT ::lstat64
|
||||
#define QT_OPEN ::open64
|
||||
#define QT_TRUNCATE ::truncate64
|
||||
#define QT_FTRUNCATE ::ftruncate64
|
||||
#define QT_LSEEK ::lseek64
|
||||
#else
|
||||
#define QT_STATBUF struct stat
|
||||
#define QT_STATBUF4TSTAT struct stat
|
||||
#define QT_STAT ::stat
|
||||
#define QT_FSTAT ::fstat
|
||||
#define QT_LSTAT ::lstat
|
||||
#define QT_OPEN ::open
|
||||
#define QT_TRUNCATE ::truncate
|
||||
#define QT_FTRUNCATE ::ftruncate
|
||||
#define QT_LSEEK ::lseek
|
||||
#endif
|
||||
|
||||
#ifdef QT_LARGEFILE_SUPPORT
|
||||
#define QT_FOPEN ::fopen64
|
||||
#define QT_FSEEK ::fseeko64
|
||||
#define QT_FTELL ::ftello64
|
||||
#define QT_FGETPOS ::fgetpos64
|
||||
#define QT_FSETPOS ::fsetpos64
|
||||
#define QT_MMAP ::mmap64
|
||||
#define QT_FPOS_T fpos64_t
|
||||
#define QT_OFF_T off64_t
|
||||
#else
|
||||
#define QT_FOPEN ::fopen
|
||||
#define QT_FSEEK ::fseek
|
||||
#define QT_FTELL ::ftell
|
||||
#define QT_FGETPOS ::fgetpos
|
||||
#define QT_FSETPOS ::fsetpos
|
||||
#define QT_MMAP ::mmap
|
||||
#define QT_FPOS_T fpos_t
|
||||
#define QT_OFF_T long
|
||||
#endif
|
||||
|
||||
#define QT_STAT_REG S_IFREG
|
||||
#define QT_STAT_DIR S_IFDIR
|
||||
#define QT_STAT_MASK S_IFMT
|
||||
#define QT_STAT_LNK S_IFLNK
|
||||
#define QT_SOCKET_CONNECT ::connect
|
||||
#define QT_SOCKET_BIND ::bind
|
||||
#define QT_FILENO fileno
|
||||
#define QT_CLOSE ::close
|
||||
#define QT_READ ::read
|
||||
#define QT_WRITE ::write
|
||||
#define QT_ACCESS ::access
|
||||
#define QT_GETCWD ::getcwd
|
||||
#define QT_CHDIR ::chdir
|
||||
#define QT_MKDIR ::mkdir
|
||||
#define QT_RMDIR ::rmdir
|
||||
#define QT_OPEN_LARGEFILE O_LARGEFILE
|
||||
#define QT_OPEN_RDONLY O_RDONLY
|
||||
#define QT_OPEN_WRONLY O_WRONLY
|
||||
#define QT_OPEN_RDWR O_RDWR
|
||||
#define QT_OPEN_CREAT O_CREAT
|
||||
#define QT_OPEN_TRUNC O_TRUNC
|
||||
#define QT_OPEN_APPEND O_APPEND
|
||||
#define QT_OPEN_EXCL O_EXCL
|
||||
|
||||
// Directory iteration
|
||||
#define QT_DIR DIR
|
||||
|
||||
#define QT_OPENDIR ::opendir
|
||||
#define QT_CLOSEDIR ::closedir
|
||||
|
||||
#if defined(QT_LARGEFILE_SUPPORT) \
|
||||
&& defined(QT_USE_XOPEN_LFS_EXTENSIONS) \
|
||||
&& !defined(QT_NO_READDIR64)
|
||||
#define QT_DIRENT struct dirent64
|
||||
#define QT_READDIR ::readdir64
|
||||
#define QT_READDIR_R ::readdir64_r
|
||||
#else
|
||||
#define QT_DIRENT struct dirent
|
||||
#define QT_READDIR ::readdir
|
||||
#define QT_READDIR_R ::readdir_r
|
||||
#endif
|
||||
|
||||
#define QT_SOCKET_CONNECT ::connect
|
||||
#define QT_SOCKET_BIND ::bind
|
||||
|
||||
|
||||
#define QT_SIGNAL_RETTYPE void
|
||||
#define QT_SIGNAL_ARGS int
|
||||
#define QT_SIGNAL_IGNORE SIG_IGN
|
||||
|
||||
#define QT_SOCKLEN_T socklen_t
|
||||
|
||||
#if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500)
|
||||
#define QT_SNPRINTF ::snprintf
|
||||
#define QT_VSNPRINTF ::vsnprintf
|
||||
#endif
|
||||
|
||||
#endif // Q_WASM_PLATFORMDEFS_H
|
86
mkspecs/common/wasm/wasm.conf
Normal file
86
mkspecs/common/wasm/wasm.conf
Normal file
@ -0,0 +1,86 @@
|
||||
# qmake configuration for building with emscripten
|
||||
MAKEFILE_GENERATOR = UNIX
|
||||
QMAKE_PLATFORM = wasm unix
|
||||
|
||||
include(../gcc-base.conf)
|
||||
include(../clang.conf)
|
||||
|
||||
load(device_config)
|
||||
load(emcc_ver)
|
||||
|
||||
# Support enabling asyncify by configuring with "-device-option QT_EMSCRIPTEN_ASYNCIFY=1"
|
||||
!isEmpty(QT_EMSCRIPTEN_ASYNCIFY): {
|
||||
!equals(QT_EMSCRIPTEN_ASYNCIFY, 1):!equals(QT_EMSCRIPTEN_ASYNCIFY, 0): \
|
||||
message(Error: The value for QT_EMSCRIPTEN_ASYNCIFY must be 0 or 1)
|
||||
equals(QT_EMSCRIPTEN_ASYNCIFY, 1): {
|
||||
QMAKE_CFLAGS += -DQT_HAVE_EMSCRIPTEN_ASYNCIFY
|
||||
QMAKE_CXXFLAGS += -DQT_HAVE_EMSCRIPTEN_ASYNCIFY
|
||||
QMAKE_LFLAGS += -s ASYNCIFY
|
||||
|
||||
# Emscripten recommends building with optimizations when using asyncify
|
||||
# in order to reduce wasm file size, and may also generate broken wasm
|
||||
# (with "wasm validation error: too many locals" type errors) if optimizations
|
||||
# are omitted. Enable optimizations also for debug builds.
|
||||
QMAKE_LFLAGS_DEBUG += -Os
|
||||
}
|
||||
}
|
||||
|
||||
# Declare async functions
|
||||
QMAKE_LFLAGS += -s \'ASYNCIFY_IMPORTS=qt_asyncify_suspend_js,qt_asyncify_resume_js\'
|
||||
|
||||
EMCC_COMMON_LFLAGS += \
|
||||
-s WASM=1 \
|
||||
-s MAX_WEBGL_VERSION=2 \
|
||||
-s ERROR_ON_UNDEFINED_SYMBOLS=1 \
|
||||
--bind \
|
||||
-s FETCH=1 \
|
||||
-s MODULARIZE=1 \
|
||||
-s EXPORT_NAME=createQtAppInstance
|
||||
-s WASM_BIGINT=1
|
||||
|
||||
# The -s arguments can also be used with release builds,
|
||||
# but are here in debug for clarity.
|
||||
EMCC_COMMON_LFLAGS_DEBUG = \
|
||||
$$EMCC_COMMON_LFLAGS \
|
||||
-s DEMANGLE_SUPPORT=1 \
|
||||
# -s LIBRARY_DEBUG=1 \ #print out library calls, verbose
|
||||
# -s SYSCALL_DEBUG=1 \ #print out sys calls, verbose
|
||||
# -s FS_LOG=1 \ #print out filesystem ops, verbose
|
||||
# -s SOCKET_DEBUG \ #print out socket,network data transfer
|
||||
# -s GL_DEBUG=1 \
|
||||
--profiling-funcs
|
||||
|
||||
QMAKE_LFLAGS_DEBUG += -g2
|
||||
QMAKE_LFLAGS_RELEASE += -O2
|
||||
|
||||
QMAKE_COMPILER += emscripten
|
||||
|
||||
QMAKE_CC = emcc
|
||||
QMAKE_CXX = em++
|
||||
|
||||
QMAKE_LINK = $$QMAKE_CXX
|
||||
QMAKE_LINK_SHLIB = $$QMAKE_CXX
|
||||
QMAKE_LINK_C = $$QMAKE_CC
|
||||
QMAKE_LINK_C_SHLIB = $$QMAKE_CC
|
||||
|
||||
QMAKE_LIBS_THREAD = $$QMAKE_CFLAGS_THREAD
|
||||
|
||||
QMAKE_LFLAGS += $$EMCC_COMMON_LFLAGS
|
||||
QMAKE_LFLAGS_DEBUG += $$EMCC_COMMON_LFLAGS_DEBUG
|
||||
|
||||
QMAKE_PREFIX_SHLIB = lib
|
||||
QMAKE_EXTENSION_SHLIB = so # llvm bitcode, linked to js in post_link
|
||||
QMAKE_PREFIX_STATICLIB = lib
|
||||
QMAKE_EXTENSION_STATICLIB = a # llvm bitcode
|
||||
|
||||
QMAKE_AR = emar cqs
|
||||
equals(QMAKE_HOST.os, Windows) {
|
||||
QMAKE_RESPONSEFILE_THRESHOLD = 1
|
||||
QMAKE_AR_CMD = \
|
||||
"$(file >$(OBJECTS_DIR)/$(TARGET).rsp, $(subst \\,/,$(OBJECTS)))$$escape_expand(\\n\\t)" \
|
||||
"$(AR) $(DESTDIR)$(TARGET) @$(OBJECTS_DIR)/$(TARGET).rsp"
|
||||
}
|
||||
|
||||
QMAKE_DISTCLEAN += *.html *.js *.wasm
|
||||
|
||||
load(qt_config)
|
7
mkspecs/wasm-emscripten-64/qmake.conf
Normal file
7
mkspecs/wasm-emscripten-64/qmake.conf
Normal file
@ -0,0 +1,7 @@
|
||||
# qmake configuration for building with emscripten
|
||||
|
||||
include(../common/wasm/wasm.conf)
|
||||
|
||||
QMAKE_CFLAGS += -s MEMORY64=1
|
||||
QMAKE_CXXFLAGS += -s MEMORY64=1
|
||||
QMAKE_LFLAGS += -s MEMORY64=1
|
9
mkspecs/wasm-emscripten-64/qplatformdefs.h
Normal file
9
mkspecs/wasm-emscripten-64/qplatformdefs.h
Normal file
@ -0,0 +1,9 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
|
||||
|
||||
#ifndef QPLATFORMDEFS_H
|
||||
#define QPLATFORMDEFS_H
|
||||
|
||||
#include "../common/wasm/qplatformdefs.h"
|
||||
|
||||
#endif // QPLATFORMDEFS_H
|
@ -1,86 +1,3 @@
|
||||
# qmake configuration for building with emscripten
|
||||
MAKEFILE_GENERATOR = UNIX
|
||||
QMAKE_PLATFORM = wasm unix
|
||||
|
||||
include(../common/gcc-base.conf)
|
||||
include(../common/clang.conf)
|
||||
|
||||
load(device_config)
|
||||
load(emcc_ver)
|
||||
|
||||
# Support enabling asyncify by configuring with "-device-option QT_EMSCRIPTEN_ASYNCIFY=1"
|
||||
!isEmpty(QT_EMSCRIPTEN_ASYNCIFY): {
|
||||
!equals(QT_EMSCRIPTEN_ASYNCIFY, 1):!equals(QT_EMSCRIPTEN_ASYNCIFY, 0): \
|
||||
message(Error: The value for QT_EMSCRIPTEN_ASYNCIFY must be 0 or 1)
|
||||
equals(QT_EMSCRIPTEN_ASYNCIFY, 1): {
|
||||
QMAKE_CFLAGS += -DQT_HAVE_EMSCRIPTEN_ASYNCIFY
|
||||
QMAKE_CXXFLAGS += -DQT_HAVE_EMSCRIPTEN_ASYNCIFY
|
||||
QMAKE_LFLAGS += -s ASYNCIFY
|
||||
|
||||
# Emscripten recommends building with optimizations when using asyncify
|
||||
# in order to reduce wasm file size, and may also generate broken wasm
|
||||
# (with "wasm validation error: too many locals" type errors) if optimizations
|
||||
# are omitted. Enable optimizations also for debug builds.
|
||||
QMAKE_LFLAGS_DEBUG += -Os
|
||||
}
|
||||
}
|
||||
|
||||
# Declare async functions
|
||||
QMAKE_LFLAGS += -s \'ASYNCIFY_IMPORTS=qt_asyncify_suspend_js,qt_asyncify_resume_js\'
|
||||
|
||||
EMCC_COMMON_LFLAGS += \
|
||||
-s WASM=1 \
|
||||
-s MAX_WEBGL_VERSION=2 \
|
||||
-s ERROR_ON_UNDEFINED_SYMBOLS=1 \
|
||||
--bind \
|
||||
-s FETCH=1 \
|
||||
-s MODULARIZE=1 \
|
||||
-s EXPORT_NAME=createQtAppInstance \
|
||||
-s WASM_BIGINT=1
|
||||
|
||||
# The -s arguments can also be used with release builds,
|
||||
# but are here in debug for clarity.
|
||||
EMCC_COMMON_LFLAGS_DEBUG = \
|
||||
$$EMCC_COMMON_LFLAGS \
|
||||
-s DEMANGLE_SUPPORT=1 \
|
||||
# -s LIBRARY_DEBUG=1 \ #print out library calls, verbose
|
||||
# -s SYSCALL_DEBUG=1 \ #print out sys calls, verbose
|
||||
# -s FS_LOG=1 \ #print out filesystem ops, verbose
|
||||
# -s SOCKET_DEBUG \ #print out socket,network data transfer
|
||||
# -s GL_DEBUG=1 \
|
||||
--profiling-funcs
|
||||
|
||||
QMAKE_LFLAGS_DEBUG += -g2
|
||||
QMAKE_LFLAGS_RELEASE += -O2
|
||||
|
||||
QMAKE_COMPILER += emscripten
|
||||
|
||||
QMAKE_CC = emcc
|
||||
QMAKE_CXX = em++
|
||||
|
||||
QMAKE_LINK = $$QMAKE_CXX
|
||||
QMAKE_LINK_SHLIB = $$QMAKE_CXX
|
||||
QMAKE_LINK_C = $$QMAKE_CC
|
||||
QMAKE_LINK_C_SHLIB = $$QMAKE_CC
|
||||
|
||||
QMAKE_LIBS_THREAD = $$QMAKE_CFLAGS_THREAD
|
||||
|
||||
QMAKE_LFLAGS += $$EMCC_COMMON_LFLAGS
|
||||
QMAKE_LFLAGS_DEBUG += $$EMCC_COMMON_LFLAGS_DEBUG
|
||||
|
||||
QMAKE_PREFIX_SHLIB = lib
|
||||
QMAKE_EXTENSION_SHLIB = so # llvm bitcode, linked to js in post_link
|
||||
QMAKE_PREFIX_STATICLIB = lib
|
||||
QMAKE_EXTENSION_STATICLIB = a # llvm bitcode
|
||||
|
||||
QMAKE_AR = emar cqs
|
||||
equals(QMAKE_HOST.os, Windows) {
|
||||
QMAKE_RESPONSEFILE_THRESHOLD = 1
|
||||
QMAKE_AR_CMD = \
|
||||
"$(file >$(OBJECTS_DIR)/$(TARGET).rsp, $(subst \\,/,$(OBJECTS)))$$escape_expand(\\n\\t)" \
|
||||
"$(AR) $(DESTDIR)$(TARGET) @$(OBJECTS_DIR)/$(TARGET).rsp"
|
||||
}
|
||||
|
||||
QMAKE_DISTCLEAN += *.html *.js *.wasm
|
||||
|
||||
load(qt_config)
|
||||
include(../common/wasm/wasm.conf)
|
||||
|
@ -1,145 +1,9 @@
|
||||
// Copyright (C) 2018 The Qt Company Ltd.
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
|
||||
|
||||
#ifndef QPLATFORMDEFS_H
|
||||
#define QPLATFORMDEFS_H
|
||||
|
||||
// Get Qt defines/settings
|
||||
|
||||
#include "qglobal.h"
|
||||
|
||||
// Set any POSIX/XOPEN defines at the top of this file to turn on specific APIs
|
||||
|
||||
// 1) need to reset default environment if _BSD_SOURCE is defined
|
||||
// 2) need to specify POSIX thread interfaces explicitly in glibc 2.0
|
||||
// 3) it seems older glibc need this to include the X/Open stuff
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
// We are hot - unistd.h should have turned on the specific APIs we requested
|
||||
|
||||
#include <features.h>
|
||||
#include <pthread.h>
|
||||
#include <dirent.h>
|
||||
#include <fcntl.h>
|
||||
#include <grp.h>
|
||||
#include <pwd.h>
|
||||
#include <signal.h>
|
||||
#include <dlfcn.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/ipc.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/wait.h>
|
||||
|
||||
#ifndef QT_NO_IPV6IFNAME
|
||||
#include <net/if.h>
|
||||
#endif
|
||||
|
||||
#ifndef _GNU_SOURCE
|
||||
# define _GNU_SOURCE
|
||||
#endif
|
||||
|
||||
#ifdef QT_LARGEFILE_SUPPORT
|
||||
#define QT_STATBUF struct stat64
|
||||
#define QT_STATBUF4TSTAT struct stat64
|
||||
#define QT_STAT ::stat64
|
||||
#define QT_FSTAT ::fstat64
|
||||
#define QT_LSTAT ::lstat64
|
||||
#define QT_OPEN ::open64
|
||||
#define QT_TRUNCATE ::truncate64
|
||||
#define QT_FTRUNCATE ::ftruncate64
|
||||
#define QT_LSEEK ::lseek64
|
||||
#else
|
||||
#define QT_STATBUF struct stat
|
||||
#define QT_STATBUF4TSTAT struct stat
|
||||
#define QT_STAT ::stat
|
||||
#define QT_FSTAT ::fstat
|
||||
#define QT_LSTAT ::lstat
|
||||
#define QT_OPEN ::open
|
||||
#define QT_TRUNCATE ::truncate
|
||||
#define QT_FTRUNCATE ::ftruncate
|
||||
#define QT_LSEEK ::lseek
|
||||
#endif
|
||||
|
||||
#ifdef QT_LARGEFILE_SUPPORT
|
||||
#define QT_FOPEN ::fopen64
|
||||
#define QT_FSEEK ::fseeko64
|
||||
#define QT_FTELL ::ftello64
|
||||
#define QT_FGETPOS ::fgetpos64
|
||||
#define QT_FSETPOS ::fsetpos64
|
||||
#define QT_MMAP ::mmap64
|
||||
#define QT_FPOS_T fpos64_t
|
||||
#define QT_OFF_T off64_t
|
||||
#else
|
||||
#define QT_FOPEN ::fopen
|
||||
#define QT_FSEEK ::fseek
|
||||
#define QT_FTELL ::ftell
|
||||
#define QT_FGETPOS ::fgetpos
|
||||
#define QT_FSETPOS ::fsetpos
|
||||
#define QT_MMAP ::mmap
|
||||
#define QT_FPOS_T fpos_t
|
||||
#define QT_OFF_T long
|
||||
#endif
|
||||
|
||||
#define QT_STAT_REG S_IFREG
|
||||
#define QT_STAT_DIR S_IFDIR
|
||||
#define QT_STAT_MASK S_IFMT
|
||||
#define QT_STAT_LNK S_IFLNK
|
||||
#define QT_SOCKET_CONNECT ::connect
|
||||
#define QT_SOCKET_BIND ::bind
|
||||
#define QT_FILENO fileno
|
||||
#define QT_CLOSE ::close
|
||||
#define QT_READ ::read
|
||||
#define QT_WRITE ::write
|
||||
#define QT_ACCESS ::access
|
||||
#define QT_GETCWD ::getcwd
|
||||
#define QT_CHDIR ::chdir
|
||||
#define QT_MKDIR ::mkdir
|
||||
#define QT_RMDIR ::rmdir
|
||||
#define QT_OPEN_LARGEFILE O_LARGEFILE
|
||||
#define QT_OPEN_RDONLY O_RDONLY
|
||||
#define QT_OPEN_WRONLY O_WRONLY
|
||||
#define QT_OPEN_RDWR O_RDWR
|
||||
#define QT_OPEN_CREAT O_CREAT
|
||||
#define QT_OPEN_TRUNC O_TRUNC
|
||||
#define QT_OPEN_APPEND O_APPEND
|
||||
#define QT_OPEN_EXCL O_EXCL
|
||||
|
||||
// Directory iteration
|
||||
#define QT_DIR DIR
|
||||
|
||||
#define QT_OPENDIR ::opendir
|
||||
#define QT_CLOSEDIR ::closedir
|
||||
|
||||
#if defined(QT_LARGEFILE_SUPPORT) \
|
||||
&& defined(QT_USE_XOPEN_LFS_EXTENSIONS) \
|
||||
&& !defined(QT_NO_READDIR64)
|
||||
#define QT_DIRENT struct dirent64
|
||||
#define QT_READDIR ::readdir64
|
||||
#define QT_READDIR_R ::readdir64_r
|
||||
#else
|
||||
#define QT_DIRENT struct dirent
|
||||
#define QT_READDIR ::readdir
|
||||
#define QT_READDIR_R ::readdir_r
|
||||
#endif
|
||||
|
||||
#define QT_SOCKET_CONNECT ::connect
|
||||
#define QT_SOCKET_BIND ::bind
|
||||
|
||||
|
||||
#define QT_SIGNAL_RETTYPE void
|
||||
#define QT_SIGNAL_ARGS int
|
||||
#define QT_SIGNAL_IGNORE SIG_IGN
|
||||
|
||||
#define QT_SOCKLEN_T socklen_t
|
||||
|
||||
#if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500)
|
||||
#define QT_SNPRINTF ::snprintf
|
||||
#define QT_VSNPRINTF ::vsnprintf
|
||||
#endif
|
||||
#include "../common/wasm/qplatformdefs.h"
|
||||
|
||||
#endif // QPLATFORMDEFS_H
|
||||
|
@ -15,6 +15,8 @@
|
||||
# define ARCH_PROCESSOR "avr32"
|
||||
#elif defined(Q_PROCESSOR_BLACKFIN)
|
||||
# define ARCH_PROCESSOR "bfin"
|
||||
#elif defined(Q_PROCESSOR_WASM_64)
|
||||
# define ARCH_PROCESSOR "wasm64"
|
||||
#elif defined(Q_PROCESSOR_WASM)
|
||||
# define ARCH_PROCESSOR "wasm"
|
||||
#elif defined(Q_PROCESSOR_HPPA)
|
||||
|
@ -341,6 +341,8 @@
|
||||
# define Q_PROCESSOR_WORDSIZE 8
|
||||
#ifdef QT_COMPILER_SUPPORTS_SSE2
|
||||
# define Q_PROCESSOR_X86 6 // enables SIMD support
|
||||
# define Q_PROCESSOR_X86_64 // wasm64
|
||||
# define Q_PROCESSOR_WASM_64
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user