Welcome to mirror list, hosted at ThFree Co, Russian Federation.

configure.cmake « cmake - github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 06596c8c405a3e7f8b49bd6eedfa404d6d966458 (plain)
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#
# configure node for building
#
include(CheckFunctionExists)
include(CheckLibraryExists)
include(CheckSymbolExists)

if(NOT "v${CMAKE_BUILD_TYPE}" MATCHES vDebug)
  set(CMAKE_BUILD_TYPE "Release")
endif()

string(TOLOWER ${CMAKE_SYSTEM_NAME} node_platform)

if(${node_platform} MATCHES darwin)
  execute_process(COMMAND sw_vers -productVersion OUTPUT_VARIABLE OSX_VERSION)
  string(REGEX REPLACE "^([0-9]+\\.[0-9]+).*$" "\\1" OSX_VERSION "${OSX_VERSION}")

  if(OSX_VERSION GREATER 10.5)
    # 10.6 builds are 64-bit
    set(CMAKE_SYSTEM_PROCESSOR x86_64)
  endif()
endif()

# Get system architecture
if(${CMAKE_SYSTEM_PROCESSOR} MATCHES i686*)
  set(node_arch x86)
elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES i386*)
  set(node_arch x86)
else()
  set(node_arch ${CMAKE_SYSTEM_PROCESSOR})
endif()

if(${node_arch} MATCHES unknown)
  set(node_arch x86)
endif()

set(NODE_INCLUDE_PREFIX ${CMAKE_INSTALL_PREFIX})

# Copy tools directory for out-of-source build
string(COMPARE EQUAL $(PROJECT_BINARY_DIR) ${PROJECT_SOURCE_DIR} in_source_build)
if(NOT in_source_build)
  execute_process(COMMAND cmake -E copy_directory ${PROJECT_SOURCE_DIR}/tools ${PROJECT_BINARY_DIR}/tools)
  configure_file(${PROJECT_SOURCE_DIR}/deps/v8/tools/jsmin.py ${PROJECT_BINARY_DIR}/tools COPYONLY)
endif()

# Set some compiler/linker flags..
set(CMAKE_C_FLAGS_DEBUG "-O0 -Wall -g -Wextra -DDEBUG $ENV{CFLAGS}")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -Wall -g -Wextra -DDEBUG $ENV{CXXFLAGS}")

set(CMAKE_C_FLAGS_RELEASE "-g -O3 -DNDEBUG $ENV{CFLAGS}")
set(CMAKE_CXX_FLAGS_RELEASE "-g -O3 -DNDEBUG $ENV{CXXFLAGS}")

if(NOT ${node_platform} MATCHES windows)
  add_definitions(-D__POSIX__=1)
endif()

if(${node_platform} MATCHES sunos)
  add_definitions(-threads)
elseif(NOT ${node_platform} MATCHES cygwin*)
  add_definitions(-pthread)
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -rdynamic")
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -rdynamic")
  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pthread")
endif()

if(${node_platform} MATCHES darwin)
  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Carbon")
  # explicitly set this so that we don't check again when building libeio
  set(HAVE_FDATASYNC 0)
else()
  # OSX fdatasync() check wrong: http://public.kitware.com/Bug/view.php?id=10044
  check_function_exists(fdatasync HAVE_FDATASYNC)
endif()

if(HAVE_FDATASYNC)
  add_definitions(-DHAVE_FDATASYNC=1)
else()
  add_definitions(-DHAVE_FDATASYNC=0)
endif()

# check first without rt and then with rt
check_function_exists(clock_gettime HAVE_CLOCK_GETTIME)
check_library_exists(rt clock_gettime "" HAVE_CLOCK_GETTIME_RT)

if(HAVE_CLOCK_GETTIME OR HAVE_CLOCK_GETTIME_RT)
  check_symbol_exists(CLOCK_MONOTONIC "time.h" HAVE_MONOTONIC_CLOCK)
endif()

if(HAVE_MONOTONIC_CLOCK)
  add_definitions(-DHAVE_MONOTONIC_CLOCK=1)
else()
  add_definitions(-DHAVE_MONOTONIC_CLOCK=0)
endif()

if(DTRACE)
  if(NOT ${node_platform} MATCHES sunos)
    message(FATAL_ERROR "DTrace support only currently available on Solaris")
  endif()
  find_program(dtrace_bin dtrace)
  if(NOT dtrace_bin)
    message(FATAL_ERROR "DTrace binary not found")
  endif()
  add_definitions(-DHAVE_DTRACE=1)
endif()

add_definitions(
  -DPLATFORM="${node_platform}"
  -DARCH="${node_arch}"
  -DX_STACKSIZE=65536
  -D_LARGEFILE_SOURCE
  -D_FILE_OFFSET_BITS=64
  -DEV_MULTIPLICITY=0
  -D_FORTIFY_SOURCE=2
  )

# set the exec output path to be compatible with the current waf build system
if(${CMAKE_BUILD_TYPE} MATCHES Debug)
  set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/debug/)
else()
  set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/default/)
endif()

#
## ---------------------------------------------------------
#

file(GLOB js2c_files ${PROJECT_SOURCE_DIR}/lib/*.js)
set(js2c_files ${PROJECT_SOURCE_DIR}/src/node.js ${js2c_files})
file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/src)