|
| 1 | +cmake_minimum_required(VERSION 3.2) |
| 2 | +project(QUICKJS) |
| 3 | +set(C_STANDARD 17) |
| 4 | +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) |
| 5 | + |
| 6 | +set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) |
| 7 | +set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) |
| 8 | + |
| 9 | +include_directories(${PROJECT_SOURCE_DIR}) |
| 10 | +include_directories(${PROJECT_SOURCE_DIR}/include) |
| 11 | +add_subdirectory(src) |
| 12 | + |
| 13 | +set(COMPILE_FLAGS -Wall -MMD -Wno-array-bounds -Wno-format-truncation) |
| 14 | +if (CMAKE_BUILD_TYPE STREQUAL "Debug") |
| 15 | + set(COMPILE_FLAGS ${COMPILE_FLAGS} -g) |
| 16 | +elseif(CMAKE_BUILD_TYPE STREQUAL "Release") |
| 17 | + set(COMPILE_FLAGS ${COMPILE_FLAGS} -O2) |
| 18 | +endif() |
| 19 | + |
| 20 | +if (UNIX) |
| 21 | + set(LINK_LIBRARIES m pthread dl) |
| 22 | +elseif(WIN32) |
| 23 | + set(LINK_LIBRARIES m pthread) |
| 24 | +endif() |
| 25 | + |
| 26 | +add_compile_options(${COMPILE_FLAGS}) |
| 27 | +add_compile_definitions( |
| 28 | + _GNU_SOURCE |
| 29 | + CONFIG_BIGNUM |
| 30 | + CONFIG_VERSION=${QUICKJS_VERSION} |
| 31 | +) |
| 32 | + |
| 33 | +set(QJSC_CONFIG -DCONFIG_PREFIX="/usr/local" -DCONFIG_LTO) |
| 34 | +set(QJSC_EXE "${EXECUTABLE_OUTPUT_PATH}/qjsc") |
| 35 | +if(UNIX OR WIN32) |
| 36 | + set(QJS_CONFIG ${QJSC_CONFIG} -DCONFIG_CC="gcc") |
| 37 | +else() |
| 38 | + set(QJS_CONFIG ${QJSC_CONFIG} -DCONFIG_CC="clang") |
| 39 | +endif() |
| 40 | + |
| 41 | +if(WIN32) |
| 42 | + set(QJSC_EXE "${QJSC_EXE}.exe") |
| 43 | +endif() |
| 44 | + |
| 45 | +add_executable(qjsc qjsc.c quickjs-libc.c) |
| 46 | +target_link_libraries(qjsc quickjs ${LINK_LIBRARIES}) |
| 47 | +target_compile_definitions(qjsc PUBLIC ${QJSC_CONFIG}) |
| 48 | + |
| 49 | +add_custom_command( |
| 50 | + TARGET qjsc POST_BUILD |
| 51 | + COMMAND ${QJSC_EXE} -c -o ${PROJECT_SOURCE_DIR}/repl.c -m ${PROJECT_SOURCE_DIR}/repl.js |
| 52 | + COMMAND ${QJSC_EXE} -fbignum -c -o ${PROJECT_SOURCE_DIR}/qjscalc.c ${PROJECT_SOURCE_DIR}/qjscalc.js |
| 53 | +) |
| 54 | + |
| 55 | +add_executable(qjs qjs.c quickjs-libc.c repl.c qjscalc.c) |
| 56 | +target_link_libraries(qjs quickjs ${LINK_LIBRARIES}) |
| 57 | + |
| 58 | +add_executable(run-test262 run-test262.c quickjs-libc.c) |
| 59 | +target_link_libraries(run-test262 quickjs ${LINK_LIBRARIES}) |
0 commit comments