forked from facebook/react-native
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Get back 100% in sync with fb codebase
- Loading branch information
facebook-github-bot-6
committed
Sep 16, 2015
1 parent
0044b3c
commit 0d09f22
Showing
18 changed files
with
39 additions
and
277 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
// Temp dummy Java file, shouldn't be exported to github, will be deleted. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,246 +1 @@ | ||
// Copyright 2015-present Facebook. All Rights Reserved. | ||
|
||
apply plugin: 'com.android.library' | ||
apply plugin: 'maven' | ||
|
||
apply plugin: 'de.undercouch.download' | ||
|
||
import de.undercouch.gradle.tasks.download.Download | ||
import org.apache.tools.ant.taskdefs.condition.Os | ||
import org.apache.tools.ant.filters.ReplaceTokens | ||
|
||
// We download various C++ open-source dependencies into downloads. | ||
// We then copy both downloaded code and our custom makefiles and headers into third-party-ndk | ||
// After that we build native code from src/main/jni with module path pointing at third-party-ndk | ||
|
||
def downloadsDir = new File("$buildDir/downloads") | ||
def thirdPartyNdkDir = new File("$buildDir/third-party-ndk") | ||
|
||
task createNativeDepsDirectories { | ||
downloadsDir.mkdirs() | ||
thirdPartyNdkDir.mkdirs() | ||
} | ||
|
||
task downloadBoost(dependsOn: createNativeDepsDirectories, type: Download) { | ||
// Use ZIP version as it's faster this way to selectively extract some parts of the archive | ||
src 'https://downloads.sourceforge.net/project/boost/boost/1.57.0/boost_1_57_0.zip' | ||
onlyIfNewer true | ||
overwrite false | ||
dest new File(downloadsDir, 'boost_1_57_0.zip') | ||
} | ||
|
||
task prepareBoost(dependsOn: downloadBoost, type: Copy) { | ||
from zipTree(downloadBoost.dest) | ||
from 'src/main/jni/third-party/boost/Android.mk' | ||
include 'boost_1_57_0/boost/**/*.hpp', 'Android.mk' | ||
into "$thirdPartyNdkDir/boost" | ||
} | ||
|
||
task downloadDoubleConversion(dependsOn: createNativeDepsDirectories, type: Download) { | ||
src 'https://github.com/google/double-conversion/archive/v1.1.1.tar.gz' | ||
onlyIfNewer true | ||
overwrite false | ||
dest new File(downloadsDir, 'double-conversion-1.1.1.tar.gz') | ||
} | ||
|
||
task prepareDoubleConversion(dependsOn: downloadDoubleConversion, type: Copy) { | ||
from tarTree(downloadDoubleConversion.dest) | ||
from 'src/main/jni/third-party/double-conversion/Android.mk' | ||
include 'double-conversion-1.1.1/src/**/*', 'Android.mk' | ||
filesMatching('*/src/**/*', {fname -> fname.path = "double-conversion/${fname.name}"}) | ||
includeEmptyDirs = false | ||
into "$thirdPartyNdkDir/double-conversion" | ||
} | ||
|
||
task downloadFolly(dependsOn: createNativeDepsDirectories, type: Download) { | ||
src 'https://github.com/facebook/folly/archive/v0.50.0.tar.gz' | ||
onlyIfNewer true | ||
overwrite false | ||
dest new File(downloadsDir, 'folly-0.50.0.tar.gz'); | ||
} | ||
|
||
task prepareFolly(dependsOn: downloadFolly, type: Copy) { | ||
from tarTree(downloadFolly.dest) | ||
from 'src/main/jni/third-party/folly/Android.mk' | ||
include 'folly-0.50.0/folly/**/*', 'Android.mk' | ||
eachFile {fname -> fname.path = (fname.path - "folly-0.50.0/")} | ||
includeEmptyDirs = false | ||
into "$thirdPartyNdkDir/folly" | ||
} | ||
|
||
task downloadGlog(dependsOn: createNativeDepsDirectories, type: Download) { | ||
src 'https://github.com/google/glog/archive/v0.3.3.tar.gz' | ||
onlyIfNewer true | ||
overwrite false | ||
dest new File(downloadsDir, 'glog-0.3.3.tar.gz') | ||
} | ||
|
||
// Prepare glog sources to be compiled, this task will perform steps that normally shoudl've been | ||
// executed by automake. This way we can avoid dependencies on make/automake | ||
task prepareGlog(dependsOn: downloadGlog, type: Copy) { | ||
from tarTree(downloadGlog.dest) | ||
from 'src/main/jni/third-party/glog/' | ||
include 'glog-0.3.3/src/**/*', 'Android.mk', 'config.h' | ||
includeEmptyDirs = false | ||
filesMatching('**/*.h.in') { | ||
filter(ReplaceTokens, tokens: [ | ||
ac_cv_have_unistd_h: '1', | ||
ac_cv_have_stdint_h: '1', | ||
ac_cv_have_systypes_h: '1', | ||
ac_cv_have_inttypes_h: '1', | ||
ac_cv_have_libgflags: '0', | ||
ac_google_start_namespace: 'namespace google {', | ||
ac_cv_have_uint16_t: '1', | ||
ac_cv_have_u_int16_t: '1', | ||
ac_cv_have___uint16: '0', | ||
ac_google_end_namespace: '}', | ||
ac_cv_have___builtin_expect: '1', | ||
ac_google_namespace: 'google', | ||
ac_cv___attribute___noinline: '__attribute__ ((noinline))', | ||
ac_cv___attribute___noreturn: '__attribute__ ((noreturn))', | ||
ac_cv___attribute___printf_4_5: '__attribute__((__format__ (__printf__, 4, 5)))' | ||
]) | ||
it.path = (it.name - '.in') | ||
} | ||
into "$thirdPartyNdkDir/glog" | ||
} | ||
|
||
task downloadJSCHeaders(type: Download) { | ||
def jscAPIBaseURL = 'https://svn.webkit.org/repository/webkit/!svn/bc/174650/trunk/Source/JavaScriptCore/API/' | ||
def jscHeaderFiles = ['JSBase.h', 'JSContextRef.h', 'JSObjectRef.h', 'JSRetainPtr.h', 'JSStringRef.h', 'JSValueRef.h', 'WebKitAvailability.h'] | ||
def output = new File(downloadsDir, 'jsc') | ||
output.mkdirs() | ||
src(jscHeaderFiles.collect { headerName -> "$jscAPIBaseURL$headerName" }) | ||
onlyIfNewer true | ||
overwrite false | ||
dest output | ||
} | ||
|
||
// Create Android.mk library module based on so files from mvn + include headers fetched from webkit.org | ||
task prepareJSC(dependsOn: downloadJSCHeaders) << { | ||
copy { | ||
from zipTree(configurations.compile.fileCollection { dep -> dep.name == 'android-jsc' }.singleFile) | ||
from {downloadJSCHeaders.dest} | ||
from 'src/main/jni/third-party/jsc/Android.mk' | ||
include 'jni/**/*.so', '*.h', 'Android.mk' | ||
filesMatching('*.h', { fname -> fname.path = "JavaScriptCore/${fname.path}"}) | ||
into "$thirdPartyNdkDir/jsc"; | ||
} | ||
} | ||
|
||
def getNdkBuildName() { | ||
if (Os.isFamily(Os.FAMILY_WINDOWS)) { | ||
return "ndk-build.cmd" | ||
} else { | ||
return "ndk-build" | ||
} | ||
} | ||
|
||
def findNdkBuildFullPath() { | ||
// we allow to provide full path to ndk-build tool | ||
if (hasProperty('ndk.command')) { | ||
return property('ndk.command') | ||
} | ||
// or just a path to the containing directory | ||
if (hasProperty('ndk.path')) { | ||
def ndkDir = property('ndk.path') | ||
return new File(ndkDir, getNdkBuildName()).getAbsolutePath() | ||
} | ||
if (System.getenv('ANDROID_NDK') != null) { | ||
def ndkDir = System.getenv('ANDROID_NDK') | ||
return new File(ndkDir, getNdkBuildName()).getAbsolutePath() | ||
} | ||
def ndkDir = android.hasProperty('plugin') ? android.plugin.ndkFolder : | ||
plugins.getPlugin('com.android.library').sdkHandler.getNdkFolder() | ||
if (ndkDir) { | ||
return new File(ndkDir, getNdkBuildName()).getAbsolutePath() | ||
} | ||
return null | ||
} | ||
|
||
def getNdkBuildFullPath() { | ||
def ndkBuildFullPath = findNdkBuildFullPath() | ||
if (ndkBuildFullPath == null || !new File(ndkBuildFullPath).canExecute()) { | ||
throw new GradleScriptException( | ||
"ndk-build binary cannot be found, check if you've set " + | ||
"\$ANDROID_NDK environment variable correctly or if ndk.dir is " + | ||
"setup in local.properties", | ||
null) | ||
} | ||
return ndkBuildFullPath | ||
} | ||
|
||
task buildReactNdkLib(dependsOn: [prepareJSC, prepareBoost, prepareDoubleConversion, prepareFolly, prepareGlog], type: Exec) { | ||
inputs.file('src/main/jni/react') | ||
outputs.dir("$buildDir/react-ndk/all") | ||
commandLine getNdkBuildFullPath(), | ||
'NDK_PROJECT_PATH=null', | ||
"NDK_APPLICATION_MK=$projectDir/src/main/jni/Application.mk", | ||
'NDK_OUT=' + temporaryDir, | ||
"NDK_LIBS_OUT=$buildDir/react-ndk/all", | ||
"THIRD_PARTY_NDK_DIR=$buildDir/third-party-ndk", | ||
'-C', file('src/main/jni/react/jni').absolutePath, | ||
'--jobs', Runtime.runtime.availableProcessors() | ||
} | ||
|
||
task cleanReactNdkLib(type: Exec) { | ||
commandLine getNdkBuildFullPath(), | ||
'-C', file('src/main/jni/react/jni').absolutePath, | ||
'clean' | ||
} | ||
|
||
task packageReactNdkLibs(dependsOn: buildReactNdkLib, type: Copy) { | ||
from "$buildDir/react-ndk/all" | ||
exclude '**/libjsc.so' | ||
into "$buildDir/react-ndk/exported" | ||
} | ||
|
||
android { | ||
compileSdkVersion 22 | ||
buildToolsVersion "22.0.1" | ||
|
||
defaultConfig { | ||
minSdkVersion 16 | ||
targetSdkVersion 22 | ||
versionCode 1 | ||
versionName "1.0" | ||
|
||
ndk { | ||
moduleName "reactnativejni" | ||
} | ||
|
||
buildConfigField 'boolean', 'IS_INTERNAL_BUILD', 'false' | ||
} | ||
|
||
sourceSets.main { | ||
jni.srcDirs = [] | ||
jniLibs.srcDir "$buildDir/react-ndk/exported" | ||
res.srcDirs = ['src/main/res/devsupport', 'src/main/res/shell'] | ||
} | ||
|
||
tasks.withType(JavaCompile) { | ||
compileTask -> compileTask.dependsOn packageReactNdkLibs | ||
} | ||
|
||
clean.dependsOn cleanReactNdkLib | ||
|
||
lintOptions { | ||
abortOnError false | ||
} | ||
} | ||
|
||
dependencies { | ||
compile fileTree(dir: 'libs', include: ['*.jar']) | ||
compile 'com.android.support:appcompat-v7:22.2.0' | ||
compile 'com.facebook.fresco:fresco:0.6.1' | ||
compile 'com.facebook.fresco:imagepipeline-okhttp:0.6.1' | ||
compile 'com.fasterxml.jackson.core:jackson-core:2.2.3' | ||
compile 'com.google.code.findbugs:jsr305:3.0.0' | ||
compile 'com.squareup.okhttp:okhttp:2.4.0' | ||
compile 'com.squareup.okhttp:okhttp-ws:2.4.0' | ||
compile 'com.squareup.okio:okio:1.5.0' | ||
compile 'org.webkit:android-jsc:r174650' | ||
} | ||
|
||
apply from: 'release.gradle' | ||
|
||
// Temp dummy Gradle file, shouldn't be exported to github, will be deleted. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
// Temp dummy Gradle file, shouldn't be exported to github, will be deleted. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
// Temp dummy Java file, shouldn't be exported to github, will be deleted. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
/** | ||
* Copyright (c) 2015-present, Facebook, Inc. | ||
* All rights reserved. | ||
* | ||
* This source code is licensed under the BSD-style license found in the | ||
* LICENSE file in the root directory of this source tree. An additional grant | ||
* of patent rights can be found in the PATENTS file in the same directory. | ||
*/ | ||
'use strict'; | ||
|
||
var transformer = require('../packager/transformer.js'); | ||
|
||
module.exports = { | ||
process(src, file) { | ||
return transformer.transform(src, file).code; | ||
} | ||
}; |
Oops, something went wrong.