|
| 1 | +# |
| 2 | +# configure node for building |
| 3 | +# |
| 4 | +include(CheckFunctionExists) |
| 5 | + |
| 6 | + |
| 7 | +if(NOT "v${CMAKE_BUILD_TYPE}" MATCHES vDebug) |
| 8 | + set(CMAKE_BUILD_TYPE "Release") |
| 9 | +endif() |
| 10 | + |
| 11 | +string(TOLOWER ${CMAKE_SYSTEM_NAME} node_platform) |
| 12 | + |
| 13 | +# Get system architecture |
| 14 | +if(${CMAKE_SYSTEM_PROCESSOR} MATCHES i686*) |
| 15 | + set(node_arch x86) |
| 16 | +elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES i386*) |
| 17 | + set(node_arch x86) |
| 18 | +else() |
| 19 | + set(node_arch ${CMAKE_SYSTEM_PROCESSOR}) |
| 20 | +endif() |
| 21 | + |
| 22 | +if(${node_arch} MATCHES unknown) |
| 23 | + set(node_arch x86) |
| 24 | +endif() |
| 25 | + |
| 26 | + |
| 27 | +# Copy tools directory for out-of-source build |
| 28 | +string(COMPARE EQUAL $(PROJECT_BINARY_DIR) ${PROJECT_SOURCE_DIR} in_source_build) |
| 29 | +if(NOT ${in_source_build}) |
| 30 | + execute_process(COMMAND cmake -E copy_directory ${PROJECT_SOURCE_DIR}/tools ${PROJECT_BINARY_DIR}/tools) |
| 31 | +endif() |
| 32 | + |
| 33 | +# Set some compiler/linker flags.. |
| 34 | +set(CMAKE_C_FLAGS_DEBUG "-O0 -Wall -g -Wextra -DDEBUG $ENV{CFLAGS}") |
| 35 | +set(CMAKE_CXX_FLAGS_DEBUG "-O0 -Wall -g -Wextra -DDEBUG $ENV{CXXFLAGS}") |
| 36 | + |
| 37 | +set(CMAKE_C_FLAGS_RELEASE "-g -O3 -DNDEBUG $ENV{CFLAGS}") |
| 38 | +set(CMAKE_CXX_FLAGS_RELEASE "-g -O3 -DNDEBUG $ENV{CXXFLAGS}") |
| 39 | + |
| 40 | +if(${node_platform} MATCHES sunos) |
| 41 | + # shouldn't this be added to CMAE_C_FLAGS or something? |
| 42 | + add_definitions(-threads) |
| 43 | +elseif(NOT ${node_platform} MATCHES cygwin*) |
| 44 | + # shouldn't this be added to CMAE_C_FLAGS or something? |
| 45 | + add_definitions(-pthread) |
| 46 | + set(CMAKE_C_FLAGS -rdynamic) |
| 47 | + set(CMAKE_EXE_LINKER_FLAGS -pthread) |
| 48 | +endif() |
| 49 | + |
| 50 | +if(${node_platform} MATCHES darwin) |
| 51 | + set(CMAKE_EXE_LINKER_FLAGS "-framework Carbon") |
| 52 | +endif() |
| 53 | + |
| 54 | +check_function_exists(fdatasync HAVE_FDATASYNC) |
| 55 | +if(HAVE_FDATASYNC) |
| 56 | + add_definitions(-DHAVE_FDATASYNC=1) |
| 57 | +else() |
| 58 | + add_definitions(-DHAVE_FDATASYNC=0) |
| 59 | +endif() |
| 60 | + |
| 61 | +add_definitions( |
| 62 | + -DPLATFORM=${node_platform} |
| 63 | + -DX_STACKSIZE=65536 |
| 64 | + -D_LARGEFILE_SOURCE |
| 65 | + -D_FILE_OFFSET_BITS=64 |
| 66 | + -DEV_MULTIPLICITY=0 |
| 67 | + ) |
| 68 | + |
| 69 | +# set the exec output path to be compatible with the current waf build system |
| 70 | +if(${CMAKE_BUILD_TYPE} MATCHES Debug) |
| 71 | + set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/debug/) |
| 72 | +else() |
| 73 | + set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/default/) |
| 74 | +endif() |
| 75 | + |
| 76 | +# |
| 77 | +## --------------------------------------------------------- |
| 78 | +# |
| 79 | + |
| 80 | +file(GLOB js2c_files ${PROJECT_SOURCE_DIR}/lib/*.js) |
| 81 | +set(js2c_files ${PROJECT_SOURCE_DIR}/src/node.js ${js2c_files}) |
| 82 | +file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/src) |
| 83 | + |
| 84 | +set(PREFIX ${CMAKE_INSTALL_PREFIX}) |
| 85 | +if(${CMAKE_BUILD_TYPE} MATCHES Debug) |
| 86 | + set(CCFLAGS "${CMAKE_C_FLAGS_DEBUG} ${CMAKE_C_FLAGS}") |
| 87 | +else() |
| 88 | + set(CCFLAGS "${CMAKE_C_FLAGS_RELEASE} ${CMAKE_C_FLAGS}") |
| 89 | +endif() |
| 90 | +get_directory_property(compile_defs COMPILE_DEFINITIONS) |
| 91 | +foreach(def ${compile_defs}) |
| 92 | + set(CPPFLAGS "${CPPFLAGS} -D${def}") |
| 93 | +endforeach() |
0 commit comments