-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
90 lines (65 loc) · 2.49 KB
/
CMakeLists.txt
File metadata and controls
90 lines (65 loc) · 2.49 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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
cmake_minimum_required(VERSION 3.10)
set(EXECUTABLE_NAME sslc)
project(${EXECUTABLE_NAME})
# Set 32-bit flag for all targets because it segfaults on 64-bit
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(SOURCES
compile.c
parse.c
parselib.c
extra.c
gencode.c
lex.c
parseext.c
mcpp_main.c
mcpp_directive.c
mcpp_eval.c
mcpp_expand.c
mcpp_support.c
mcpp_system.c
optimize.c
compat.c
)
add_executable(${EXECUTABLE_NAME} ${SOURCES})
if(${CMAKE_SYSTEM_NAME} MATCHES "Emscripten")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O2")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2")
set(CMAKE_EXECUTABLE_SUFFIX ".mjs")
# No need to use asyncify
# target_link_options(${EXECUTABLE_NAME} PRIVATE "-sASYNCIFY")
# target_link_options(${EXECUTABLE_NAME} PRIVATE "-sASYNCIFY_STACK_SIZE=20480")
target_link_options(${EXECUTABLE_NAME} PRIVATE "-sALLOW_MEMORY_GROWTH")
target_link_options(${EXECUTABLE_NAME} PRIVATE "-MEMORY_GROWTH_LINEAR_STEP=16mb")
target_link_options(${EXECUTABLE_NAME} PRIVATE "-sNO_DISABLE_EXCEPTION_CATCHING")
target_link_options( ${EXECUTABLE_NAME} PRIVATE "-lnodefs.js" )
target_link_options(${EXECUTABLE_NAME} PRIVATE "-sNODERAWFS")
# Disabled because of emscipten bug
# target_link_options( ${EXECUTABLE_NAME} PRIVATE "-sCASE_INSENSITIVE_FS" )
target_link_options(${EXECUTABLE_NAME} PRIVATE "-sMODULARIZE=1")
target_link_options(${EXECUTABLE_NAME} PRIVATE "-sEXPORT_ES6=1")
target_link_options(${EXECUTABLE_NAME} PRIVATE "-sENVIRONMENT=node")
target_link_options(${EXECUTABLE_NAME} PRIVATE "-sEXPORTED_RUNTIME_METHODS=callMain")
target_link_options(${EXECUTABLE_NAME} PRIVATE "-sEXPORT_ALL")
target_link_options(${EXECUTABLE_NAME} PRIVATE "-sEXIT_RUNTIME")
target_link_options(${EXECUTABLE_NAME} PRIVATE "$<$<CONFIG:DEBUG>:-g>")
target_link_options(${EXECUTABLE_NAME} PRIVATE "-sSTACK_SIZE=2048000")
set(PACKAGE_JSON_CONTENT [[
{
"name": "sslc-emscripten-noderawfs",
"version": "1.0.0",
"description": "",
"main": "sslc.mjs",
"type": "module",
"scripts": {
},
"bin": "compiler.mjs",
"author": "",
"license": "UNLICENSED"
}
]])
file(WRITE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/package.json "${PACKAGE_JSON_CONTENT}")
file(COPY "compiler.mjs" DESTINATION "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
endif()