1# This file is generated; do not edit. 2 3import os 4 5Import("env") 6 7env = env.Clone(COMPONENT_NAME='libevent', 8 TARGET_NAME='libevent') 9 10configurations = { 11 'Debug' : { 12 'Append' : dict( 13 CCFLAGS = [ 14 '-pthread', 15 '-fno-exceptions', 16 '-fno-asynchronous-unwind-tables', 17 '-fvisibility=hidden', 18 '-D_FILE_OFFSET_BITS=64', 19 '-O0', 20 '-g' 21 ], 22 CPPDEFINES = [ 23 'CHROMIUM_BUILD', 24 'HAVE_CONFIG_H', 25 '_DEBUG' 26 ], 27 CPPPATH = [ 28 env.Dir('$SRC_DIR/third_party/libevent/.'), 29 env.Dir('$SRC_DIR/third_party/libevent/linux') 30 ], 31 CXXFLAGS = [ 32 '-fno-rtti', 33 '-fno-threadsafe-statics', 34 '-fvisibility-inlines-hidden' 35 ], 36 LINKFLAGS = [ 37 '-pthread', 38 '-rdynamic' 39 ], 40 ), 41 'FilterOut' : dict( 42 ), 43 'Replace' : dict( 44 FLOCK_LDMODULE = ['flock', '$TOP_BUILDDIR/linker.lock', '$LDMODULE'], 45 FLOCK_LINK = ['flock', '$TOP_BUILDDIR/linker.lock', '$LINK'], 46 FLOCK_SHLINK = ['flock', '$TOP_BUILDDIR/linker.lock', '$SHLINK'], 47 IMPLICIT_COMMAND_DEPENDENCIES = '0', 48 LDMODULECOM = [['$FLOCK_LDMODULE', 49 '-o', 50 '$TARGET', 51 '$_LIBDIRFLAGS', 52 '$LDMODULEFLAGS', 53 '$SOURCES', 54 '-Wl,--start-group', 55 '$_LIBFLAGS', 56 '-Wl,--end-group']], 57 LIBPATH = ['$LIB_DIR'], 58 LINKCOM = [['$FLOCK_LINK', 59 '-o', 60 '$TARGET', 61 '$_LIBDIRFLAGS', 62 '$LINKFLAGS', 63 '$SOURCES', 64 '-Wl,--start-group', 65 '$_LIBFLAGS', 66 '-Wl,--end-group']], 67 SHLINKCOM = [['$FLOCK_SHLINK', 68 '-o', 69 '$TARGET', 70 '$_LIBDIRFLAGS', 71 '$SHLINKFLAGS', 72 '$SOURCES', 73 '-Wl,--start-group', 74 '$_LIBFLAGS', 75 '-Wl,--end-group']], 76 ), 77 'ImportExternal' : [ 78 'AS', 79 'CC', 80 'CXX', 81 'LINK', 82 ], 83 'PropagateExternal' : [ 84 'AS', 85 'CC', 86 'CCACHE_DIR', 87 'CXX', 88 'DISTCC_DIR', 89 'DISTCC_HOSTS', 90 'HOME', 91 'INCLUDE_SERVER_ARGS', 92 'INCLUDE_SERVER_PORT', 93 'LINK', 94 'CHROME_BUILD_TYPE', 95 'CHROMIUM_BUILD', 96 'OFFICIAL_BUILD', 97 ], 98 }, 99 'Release' : { 100 'Append' : dict( 101 CCFLAGS = [ 102 '-pthread', 103 '-fno-exceptions', 104 '-fno-asynchronous-unwind-tables', 105 '-fvisibility=hidden', 106 '-D_FILE_OFFSET_BITS=64', 107 '-O2', 108 '-fno-ident', 109 '-fdata-sections', 110 '-ffunction-sections' 111 ], 112 CPPDEFINES = [ 113 'CHROMIUM_BUILD', 114 'HAVE_CONFIG_H', 115 'NDEBUG', 116 'NVALGRIND' 117 ], 118 CPPPATH = [ 119 env.Dir('$SRC_DIR/third_party/libevent/.'), 120 env.Dir('$SRC_DIR/third_party/libevent/linux') 121 ], 122 CXXFLAGS = [ 123 '-fno-rtti', 124 '-fno-threadsafe-statics', 125 '-fvisibility-inlines-hidden' 126 ], 127 LINKFLAGS = [ 128 '-pthread', 129 '-Wl,--gc-sections' 130 ], 131 ), 132 'FilterOut' : dict( 133 ), 134 'Replace' : dict( 135 FLOCK_LDMODULE = ['flock', '$TOP_BUILDDIR/linker.lock', '$LDMODULE'], 136 FLOCK_LINK = ['flock', '$TOP_BUILDDIR/linker.lock', '$LINK'], 137 FLOCK_SHLINK = ['flock', '$TOP_BUILDDIR/linker.lock', '$SHLINK'], 138 IMPLICIT_COMMAND_DEPENDENCIES = '0', 139 LDMODULECOM = [['$FLOCK_LDMODULE', 140 '-o', 141 '$TARGET', 142 '$_LIBDIRFLAGS', 143 '$LDMODULEFLAGS', 144 '$SOURCES', 145 '-Wl,--start-group', 146 '$_LIBFLAGS', 147 '-Wl,--end-group']], 148 LIBPATH = ['$LIB_DIR'], 149 LINKCOM = [['$FLOCK_LINK', 150 '-o', 151 '$TARGET', 152 '$_LIBDIRFLAGS', 153 '$LINKFLAGS', 154 '$SOURCES', 155 '-Wl,--start-group', 156 '$_LIBFLAGS', 157 '-Wl,--end-group']], 158 SHLINKCOM = [['$FLOCK_SHLINK', 159 '-o', 160 '$TARGET', 161 '$_LIBDIRFLAGS', 162 '$SHLINKFLAGS', 163 '$SOURCES', 164 '-Wl,--start-group', 165 '$_LIBFLAGS', 166 '-Wl,--end-group']], 167 ), 168 'ImportExternal' : [ 169 'AS', 170 'CC', 171 'CXX', 172 'LINK', 173 ], 174 'PropagateExternal' : [ 175 'AS', 176 'CC', 177 'CCACHE_DIR', 178 'CXX', 179 'DISTCC_DIR', 180 'DISTCC_HOSTS', 181 'HOME', 182 'INCLUDE_SERVER_ARGS', 183 'INCLUDE_SERVER_PORT', 184 'LINK', 185 'CHROME_BUILD_TYPE', 186 'CHROMIUM_BUILD', 187 'OFFICIAL_BUILD', 188 ], 189 }, 190} 191 192config = configurations[env['CONFIG_NAME']] 193env.Append(**config['Append']) 194env.FilterOut(**config['FilterOut']) 195env.Replace(**config['Replace']) 196 197# Scons forces -fPIC for SHCCFLAGS on some platforms. 198# Disable that so we can control it from cflags in gyp. 199# Note that Scons itself is inconsistent with its -fPIC 200# setting. SHCCFLAGS forces -fPIC, and SHCFLAGS does not. 201# This will make SHCCFLAGS consistent with SHCFLAGS. 202env['SHCCFLAGS'] = ['$CCFLAGS'] 203 204for _var in config['ImportExternal']: 205 if _var in ARGUMENTS: 206 env[_var] = ARGUMENTS[_var] 207 elif _var in os.environ: 208 env[_var] = os.environ[_var] 209for _var in config['PropagateExternal']: 210 if _var in ARGUMENTS: 211 env[_var] = ARGUMENTS[_var] 212 elif _var in os.environ: 213 env['ENV'][_var] = os.environ[_var] 214 215env['ENV']['LD_LIBRARY_PATH'] = env.subst('$LIB_DIR') 216 217if ARGUMENTS.get('COVERAGE') not in (None, '0'): 218 env.AppendUnique( 219 CCFLAGS = [ 220 '-fprofile-arcs', 221 '-ftest-coverage' 222 ], 223 LINKFLAGS = [ 224 '-fprofile-arcs' 225 ], 226 ) 227 228if ARGUMENTS.get('PROFILE') not in (None, '0'): 229 env.AppendUnique( 230 CCFLAGS = [ 231 '-pg', 232 '-g' 233 ], 234 LINKFLAGS = [ 235 '-pg' 236 ], 237 ) 238 239if ARGUMENTS.get('SYMBOLS') not in (None, '0'): 240 env.AppendUnique( 241 CCFLAGS = [ 242 '-g' 243 ], 244 ) 245 246input_files = [ 247 'buffer.c', 248 'evbuffer.c', 249 'evdns.c', 250 'event.c', 251 'event_tagging.c', 252 'evrpc.c', 253 'evutil.c', 254 'http.c', 255 'log.c', 256 'poll.c', 257 'select.c', 258 'signal.c', 259 'strlcpy.c', 260 'epoll.c', 261 'epoll_sub.c', 262] 263 264target_files = [] 265prerequisites = [] 266 267_result = [] 268for infile in input_files: 269 if env.compilable(infile): 270 if (type(infile) == type('') 271 and (infile.startswith('$SRC_DIR/third_party/libevent/') 272 or not os.path.isabs(env.subst(infile)))): 273 # Force files below the build directory by replacing all '..' 274 # elements in the path with '__': 275 base, ext = os.path.splitext(os.path.normpath(infile)) 276 base = [d == '..' and '__' or d for d in base.split('/')] 277 base = os.path.join(*base) 278 object = '${OBJ_DIR}/${COMPONENT_NAME}/${TARGET_NAME}/' + base 279 if not infile.startswith('$SRC_DIR/third_party/libevent/'): 280 infile = '$SRC_DIR/third_party/libevent/' + infile 281 infile = env.StaticObject(object, infile)[0] 282 else: 283 infile = env.StaticObject(infile)[0] 284 _result.append(infile) 285input_files = _result 286 287_outputs = env.GypStaticLibrary('event', input_files) 288target_files.extend(_outputs) 289 290gyp_target = env.Alias('libevent', target_files) 291env.Requires(gyp_target, prerequisites) 292Return("gyp_target") 293