@@ -356,6 +356,10 @@ if(ENABLE_SNAPSHOT)
356
356
iotjs_add_compile_flags(-DENABLE_SNAPSHOT)
357
357
endif ()
358
358
359
+ if (EXPOSE_GC)
360
+ iotjs_add_compile_flags(-DEXPOSE_GC)
361
+ endif ()
362
+
359
363
# Run js2c
360
364
set (JS2C_RUN_MODE "release" )
361
365
if ("${CMAKE_BUILD_TYPE} " STREQUAL "Debug" )
@@ -456,6 +460,7 @@ message(STATUS "CMAKE_C_FLAGS ${CMAKE_C_FLAGS}")
456
460
message (STATUS "CMAKE_TOOLCHAIN_FILE ${CMAKE_TOOLCHAIN_FILE} " )
457
461
message (STATUS "ENABLE_LTO ${ENABLE_LTO} " )
458
462
message (STATUS "ENABLE_SNAPSHOT ${ENABLE_SNAPSHOT} " )
463
+ message (STATUS "EXPOSE_GC ${EXPOSE_GC} " )
459
464
message (STATUS "EXTERNAL_INCLUDE_DIR ${EXTERNAL_INCLUDE_DIR} " )
460
465
message (STATUS "EXTERNAL_LIBC_INTERFACE ${EXTERNAL_LIBC_INTERFACE} " )
461
466
message (STATUS "EXTERNAL_LIBS ${EXTERNAL_LIBS} " )
@@ -472,19 +477,64 @@ message(STATUS "TARGET_OS ${TARGET_OS}")
472
477
message (STATUS "TARGET_SYSTEMROOT ${TARGET_SYSTEMROOT} " )
473
478
474
479
iotjs_add_compile_flags(${IOTJS_MODULE_DEFINES} )
480
+
475
481
if (FEATURE_DEBUGGER)
476
482
iotjs_add_compile_flags("-DJERRY_DEBUGGER" )
477
483
endif ()
478
484
479
- # Configure the libiotjs.a
480
- set (TARGET_STATIC_IOTJS libiotjs)
481
- add_library (${TARGET_STATIC_IOTJS} STATIC ${LIB_IOTJS_SRC} )
482
- set_target_properties (${TARGET_STATIC_IOTJS} PROPERTIES
485
+ file (GLOB IOTJS_HEADERS "${ROOT_DIR} /src/*.h" )
486
+ file (GLOB JERRY_HEADERS "${ROOT_DIR} /deps/jerry/jerry-core/include/*.h" )
487
+ file (GLOB LIBUV_HEADERS "${ROOT_DIR} /deps/libtuv/include/*.h" )
488
+
489
+ set (IOTJS_PUBLIC_HEADERS
490
+ "include/iotjs.h"
491
+ "include/node_api.h"
492
+ "include/node_api_types.h"
493
+ ${IOTJS_HEADERS}
494
+ ${JERRY_HEADERS}
495
+ ${LIBUV_HEADERS}
496
+ )
497
+
498
+ # Configure the libiotjs
499
+ set (TARGET_LIB_IOTJS libiotjs)
500
+ if (CREATE_SHARED_LIB)
501
+ add_library (${TARGET_LIB_IOTJS} SHARED ${LIB_IOTJS_SRC} )
502
+ else ()
503
+ add_library (${TARGET_LIB_IOTJS} STATIC ${LIB_IOTJS_SRC} )
504
+
505
+ # FIXME: module specific condition should not be in the main cmake
506
+ if (${ENABLE_MODULE_NAPI} )
507
+ # Force symbols to be entered in the output file as undefined symbols.
508
+ file (READ "${IOTJS_SOURCE_DIR} /napi/node_symbols.txt" NODE_SYMBOLS)
509
+ string (REGEX REPLACE "[\r |\n ]" ";" NODE_SYMBOLS "${NODE_SYMBOLS} " )
510
+ set (NODE_SYMBOLS_LINK_FLAGS "-Wl" )
511
+ # Some tests require the GC to be exposed
512
+ iotjs_add_compile_flags(-DEXPOSE_GC)
513
+ foreach (NODE_SYMBOL ${NODE_SYMBOLS} )
514
+ set (NODE_SYMBOLS_LINK_FLAGS
515
+ "${NODE_SYMBOLS_LINK_FLAGS} ,-u,${NODE_SYMBOL} " )
516
+ endforeach ()
517
+ iotjs_add_link_flags(${NODE_SYMBOLS_LINK_FLAGS} )
518
+ endif ()
519
+ endif (CREATE_SHARED_LIB)
520
+
521
+ add_dependencies (${TARGET_LIB_IOTJS}
522
+ ${JERRY_LIBS}
523
+ ${TUV_LIBS}
524
+ libhttp-parser
525
+ ${MBEDTLS_LIBS}
526
+ )
527
+
528
+ set_target_properties (${TARGET_LIB_IOTJS} PROPERTIES
483
529
OUTPUT_NAME iotjs
484
530
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR} /lib"
531
+ LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR} /lib"
532
+ PUBLIC_HEADER "${IOTJS_PUBLIC_HEADERS} "
485
533
)
486
- target_include_directories (${TARGET_STATIC_IOTJS} PRIVATE ${IOTJS_INCLUDE_DIRS} )
487
- target_link_libraries (${TARGET_STATIC_IOTJS}
534
+ target_include_directories (${TARGET_LIB_IOTJS}
535
+ PRIVATE ${IOTJS_INCLUDE_DIRS} )
536
+ target_link_libraries (${TARGET_LIB_IOTJS}
537
+ ${CMAKE_DL_LIBS}
488
538
${JERRY_LIBS}
489
539
${TUV_LIBS}
490
540
libhttp-parser
@@ -500,47 +550,30 @@ if("${BIN_INSTALL_DIR}" STREQUAL "")
500
550
set (BIN_INSTALL_DIR "bin" )
501
551
endif ()
502
552
503
- install (TARGETS ${TARGET_STATIC_IOTJS} DESTINATION ${LIB_INSTALL_DIR} )
504
-
505
- # Install headers
506
- if ("${INCLUDE_INSTALL_DIR} " STREQUAL "" )
507
- set (INCLUDE_INSTALL_DIR "include/iotjs" )
508
- endif ()
509
- file (GLOB IOTJS_HEADERS include /*.h)
510
- install (FILES ${IOTJS_HEADERS} DESTINATION ${INCLUDE_INSTALL_DIR} )
511
-
512
- # Configure the libiotjs.so
513
- if (NOT BUILD_LIB_ONLY AND CREATE_SHARED_LIB)
514
- set (TARGET_SHARED_IOTJS shared_iotjs)
515
- add_library (${TARGET_SHARED_IOTJS} SHARED)
516
- set_target_properties (${TARGET_SHARED_IOTJS} PROPERTIES
517
- LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR} /lib"
518
- LIBRARY_OUTPUT_NAME iotjs
519
- LINKER_LANGUAGE C
520
- )
521
- target_link_libraries (${TARGET_SHARED_IOTJS}
522
- -Wl,--whole-archive
523
- ${TARGET_STATIC_IOTJS}
524
- ${JERRY_LIBS}
525
- ${TUV_LIBS}
526
- libhttp-parser
527
- ${MBEDTLS_LIBS}
528
- -Wl,--no -whole-archive
529
- ${EXTERNAL_LIBS} )
530
- install (TARGETS ${TARGET_SHARED_IOTJS} DESTINATION ${LIB_INSTALL_DIR} )
531
- endif ()
532
-
533
553
# Configure the iotjs executable
534
554
if (NOT BUILD_LIB_ONLY)
535
555
set (TARGET_IOTJS iotjs)
556
+ message (STATUS "CMAKE_BINARY_DIR ${CMAKE_BINARY_DIR} " )
557
+ message (STATUS "BINARY_INSTALL_DIR ${INSTALL_PREFIX} /bin" )
558
+ message (STATUS "LIBRARY_INSTALL_DIR ${INSTALL_PREFIX} /lib" )
559
+
536
560
add_executable (${TARGET_IOTJS} ${ROOT_DIR} /src/platform/linux/iotjs_linux.c)
537
561
set_target_properties (${TARGET_IOTJS} PROPERTIES
538
562
LINK_FLAGS "${IOTJS_LINKER_FLAGS} "
539
563
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR} /bin"
540
564
)
541
565
target_include_directories (${TARGET_IOTJS} PRIVATE ${IOTJS_INCLUDE_DIRS} )
542
- target_link_libraries (${TARGET_IOTJS} ${TARGET_STATIC_IOTJS} )
543
- install (TARGETS ${TARGET_IOTJS} DESTINATION ${BIN_INSTALL_DIR} )
544
-
545
- add_subdirectory (test )
566
+ target_link_libraries (${TARGET_IOTJS} ${TARGET_LIB_IOTJS} )
567
+ install (TARGETS ${TARGET_IOTJS}
568
+ RUNTIME DESTINATION "${INSTALL_PREFIX} /bin"
569
+ LIBRARY DESTINATION "${INSTALL_PREFIX} /lib"
570
+ PUBLIC_HEADER DESTINATION "${INSTALL_PREFIX} /include/iotjs" )
571
+ if (CREATE_SHARED_LIB)
572
+ install (TARGETS ${TARGET_LIB_IOTJS}
573
+ RUNTIME DESTINATION "${INSTALL_PREFIX} /bin"
574
+ LIBRARY DESTINATION "${INSTALL_PREFIX} /lib"
575
+ PUBLIC_HEADER DESTINATION "${INSTALL_PREFIX} /include/iotjs" )
576
+ endif ()
577
+ else ()
578
+ install (TARGETS ${TARGET_LIB_IOTJS} DESTINATION ${LIB_INSTALL_DIR} )
546
579
endif ()
0 commit comments