This repository was archived by the owner on Mar 6, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
49 lines (36 loc) · 1.7 KB
/
CMakeLists.txt
File metadata and controls
49 lines (36 loc) · 1.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
cmake_minimum_required(VERSION 3.9)
# Enable N-API C++ and JS Exception Handling
set(CMAKE_C_FLAGS "-fexceptions")
set(CMAKE_CXX_FLAGS "-std=c++11 -stdlib=libc++ -fexceptions")
set(CMAKE_XCODE_ATTRIBUTE_GCC_ENABLE_CPP_EXCEPTIONS "YES")
SET(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.7")
add_compile_definitions(NAPI_CPP_EXCEPTIONS)
# Support macOS
IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(cflags+ "-fvisibility=hidden")
set(CMAKE_XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN "YES")
ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
#TODO: Support MSVS Settings: 'VCCLCompilerTool': { 'ExceptionHandling': 1 }
project (teraflop)
include_directories(${CMAKE_JS_INC})
file(GLOB SOURCE_FILES "src/*.cpp" "src/*.h")
# Include N-API wrappers
execute_process(COMMAND node -p "require('node-addon-api').include"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE NODE_ADDON_API_DIR
)
string(REPLACE "\n" "" NODE_ADDON_API_DIR ${NODE_ADDON_API_DIR})
string(REPLACE "\"" "" NODE_ADDON_API_DIR ${NODE_ADDON_API_DIR})
add_definitions(-DNAPI_VERSION=3)
# Disable deprecated N-API APIs
add_compile_definitions(NODE_ADDON_API_DISABLE_DEPRECATED)
# Include gfx-rs WebGPU FFI
get_filename_component(WGPU_FFI_DIR "third_party/wgpu/ffi" REALPATH)
# Target Library
add_library(${PROJECT_NAME} SHARED ${SOURCE_FILES} ${CMAKE_JS_SRC})
set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "" SUFFIX ".node")
target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_JS_INC})
target_include_directories(${PROJECT_NAME} PRIVATE ${NODE_ADDON_API_DIR})
target_include_directories(${PROJECT_NAME} PRIVATE ${WGPU_FFI_DIR})
target_link_libraries(${PROJECT_NAME} ${CMAKE_JS_LIB})