diff options
33 files changed, 131 insertions, 126 deletions
@@ -45,7 +45,7 @@ VALID_TARGETS := \ pathops_unittest \ SampleApp \ SkiaAndroidApp \ - skia_base_libs \ + skia_lib \ tests \ tools diff --git a/gyp/FileReaderApp.gyp b/gyp/FileReaderApp.gyp index bcd0f0dc38..f590ffebb3 100644 --- a/gyp/FileReaderApp.gyp +++ b/gyp/FileReaderApp.gyp @@ -18,8 +18,7 @@ '../src/utils/mac/SkOSWindow_Mac.cpp', ], 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', - 'effects.gyp:effects', + 'skia_lib.gyp:skia_lib', 'views.gyp:views', 'xml.gyp:xml', ], diff --git a/gyp/SampleApp.gyp b/gyp/SampleApp.gyp index 5531605512..59d2f84d32 100644 --- a/gyp/SampleApp.gyp +++ b/gyp/SampleApp.gyp @@ -142,9 +142,7 @@ '../samplecode/SampleFontCache.cpp', ], 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', - 'effects.gyp:effects', - 'images.gyp:images', + 'skia_lib.gyp:skia_lib', 'views.gyp:views', 'animator.gyp:animator', 'xml.gyp:xml', diff --git a/gyp/SimpleCocoaApp.gyp b/gyp/SimpleCocoaApp.gyp index 3e17ad5b98..6d7b925807 100644 --- a/gyp/SimpleCocoaApp.gyp +++ b/gyp/SimpleCocoaApp.gyp @@ -25,7 +25,7 @@ ], 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', + 'skia_lib.gyp:skia_lib', 'views.gyp:views', 'xml.gyp:xml', ], diff --git a/gyp/SimpleiOSApp.gyp b/gyp/SimpleiOSApp.gyp index 3678e7cd1a..cb00f81537 100644 --- a/gyp/SimpleiOSApp.gyp +++ b/gyp/SimpleiOSApp.gyp @@ -28,9 +28,7 @@ '../experimental/SimpleiOSApp/SimpleiOSApp-Info.plist', ], 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', - 'effects.gyp:effects', - 'images.gyp:images', + 'skia_lib.gyp:skia_lib', 'views.gyp:views', 'xml.gyp:xml', ], diff --git a/gyp/bench.gyp b/gyp/bench.gyp index be768f04ae..49e6c2c103 100644 --- a/gyp/bench.gyp +++ b/gyp/bench.gyp @@ -17,9 +17,7 @@ 'bench.gypi' ], 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', - 'effects.gyp:effects', - 'images.gyp:images', + 'skia_lib.gyp:skia_lib', 'bench_timer', ], 'conditions': [ @@ -50,7 +48,7 @@ '../src/gpu', ], 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', + 'skia_lib.gyp:skia_lib', ], 'conditions': [ [ 'skia_os not in ["mac", "ios"]', { diff --git a/gyp/common.gypi b/gyp/common.gypi index d3e1498efc..2be8bb8142 100644 --- a/gyp/common.gypi +++ b/gyp/common.gypi @@ -39,6 +39,15 @@ }], ], }, + # Validate the 'skia_os' setting against 'skia_shared_lib', because shared + # library build is only supported on Android. + 'variables': { + 'conditions': [ + [ 'skia_os != "android" and skia_shared_lib', { + 'error': '<!(Skia shared lib build only currently supported on Android.)', + }], + ], + }, 'includes': [ 'common_conditions.gypi', ], diff --git a/gyp/common_conditions.gypi b/gyp/common_conditions.gypi index fda122212c..64e7c13594 100644 --- a/gyp/common_conditions.gypi +++ b/gyp/common_conditions.gypi @@ -326,6 +326,17 @@ [ 'skia_profile_enabled == 1', { 'cflags': ['-g', '-fno-omit-frame-pointer', '-marm', '-mapcs'], }], + [ 'skia_shared_lib', { + 'cflags': [ + '-fPIC', + ], + 'defines': [ + 'GR_DLL=1', + 'GR_IMPLEMENTATION=1', + 'SKIA_DLL', + 'SKIA_IMPLEMENTATION=1', + ], + }], [ 'skia_arch_type == "arm" and arm_thumb == 1', { 'cflags': [ '-mthumb', diff --git a/gyp/common_variables.gypi b/gyp/common_variables.gypi index 4f9f5422c4..ac937bd5c5 100644 --- a/gyp/common_variables.gypi +++ b/gyp/common_variables.gypi @@ -90,6 +90,7 @@ 'skia_osx_sdkroot%': '', 'skia_profile_enabled%': 0, 'skia_win_debuggers_path%': '', + 'skia_shared_lib%': 0, }, 'conditions': [ @@ -121,6 +122,7 @@ 'skia_gpu%': '<(skia_gpu)', 'skia_osx_sdkroot%': '<(skia_osx_sdkroot)', 'skia_profile_enabled%': '<(skia_profile_enabled)', + 'skia_shared_lib%': '<(skia_shared_lib)', 'skia_static_initializers%': '<(skia_static_initializers)', 'ios_sdk_version%': '6.0', 'skia_win_debuggers_path%': '<(skia_win_debuggers_path)', diff --git a/gyp/core.gyp b/gyp/core.gyp index 9e0792b773..d018cbea23 100644 --- a/gyp/core.gyp +++ b/gyp/core.gyp @@ -76,6 +76,11 @@ 'config/win', ], }], + [ 'skia_os == "android"', { + 'sources': [ + '../src/core/SkPaintOptionsAndroid.cpp', + ], + }], [ 'skia_os == "android" and skia_arch_type == "arm" and armv7 == 1', { # The code in SkUtilsArm.cpp can be used on an ARM-based Linux system, not only Android. 'sources': [ @@ -120,9 +125,6 @@ }], ], }, - 'dependencies': [ - 'opts.gyp:opts' - ], }, ], } diff --git a/gyp/debugger.gyp b/gyp/debugger.gyp index b935fb056d..9ea300d9b2 100644 --- a/gyp/debugger.gyp +++ b/gyp/debugger.gyp @@ -94,17 +94,12 @@ '../debugger/SkObjectParser.cpp', ], 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', - 'images.gyp:images', - 'effects.gyp:effects', + 'skia_lib.gyp:skia_lib', 'bench.gyp:bench_timer', 'tools.gyp:picture_renderer', ], 'conditions': [ [ 'skia_os == "nacl"', { - 'dependencies': [ - 'utils.gyp:utils', # For SkBase64.h - ], 'include_dirs': [ '../src/utils', ], diff --git a/gyp/effects.gyp b/gyp/effects.gyp index e110c9f069..91458eb96f 100644 --- a/gyp/effects.gyp +++ b/gyp/effects.gyp @@ -9,7 +9,10 @@ 'effects.gypi', ], 'include_dirs': [ + '../include/config', + '../include/core', '../include/effects', + '../include/utils', '../src/core', ], 'direct_dependent_settings': { @@ -17,15 +20,13 @@ '../include/effects', ], }, - 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', - ], 'sources': [ 'effects.gypi', # Makes the gypi appear in IDEs (but does not modify the build). ], 'conditions': [ ['skia_gpu == 1', { 'include_dirs': [ + '../include/gpu', '../src/gpu', ], }], diff --git a/gyp/flags.gyp b/gyp/flags.gyp index aa83ea9e01..e80b0a32b9 100644 --- a/gyp/flags.gyp +++ b/gyp/flags.gyp @@ -10,8 +10,7 @@ '../tools/flags/SkCommandLineFlags.cpp', ], 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', - 'core.gyp:core', + 'skia_lib.gyp:skia_lib', ], 'direct_dependent_settings': { 'include_dirs': [ diff --git a/gyp/gm.gyp b/gyp/gm.gyp index fa413c37dc..a8b15339d6 100644 --- a/gyp/gm.gyp +++ b/gyp/gm.gyp @@ -16,7 +16,7 @@ '../gm/gm_expectations.cpp', ], 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', + 'skia_lib.gyp:skia_lib', 'core.gyp:core', 'images.gyp:images', 'jsoncpp.gyp:jsoncpp', @@ -57,14 +57,11 @@ '../src/pipe/utils/SamplePipeControllers.cpp', ], 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', - 'effects.gyp:effects', + 'skia_lib.gyp:skia_lib', 'flags.gyp:flags', 'gm.gyp:gm_expectations', - 'images.gyp:images', 'jsoncpp.gyp:jsoncpp', 'pdf.gyp:pdf', - 'utils.gyp:utils', ], 'conditions': [ ['skia_os == "mac"', { diff --git a/gyp/most.gyp b/gyp/most.gyp index d32987f049..1ad25efe39 100644 --- a/gyp/most.gyp +++ b/gyp/most.gyp @@ -10,7 +10,7 @@ 'type': 'none', 'dependencies': [ # The minimal set of static libraries for basic Skia functionality. - 'skia_base_libs.gyp:skia_base_libs', + 'skia_lib.gyp:skia_lib', 'bench.gyp:bench', 'gm.gyp:gm', diff --git a/gyp/nacl.gyp b/gyp/nacl.gyp index 484570be17..3dd4c8ee35 100644 --- a/gyp/nacl.gyp +++ b/gyp/nacl.gyp @@ -5,7 +5,7 @@ 'target_name': 'nacl_interface', 'type': 'static_library', 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', + 'skia_lib.gyp:skia_lib', ], 'include_dirs': [ # For SkThreadUtils.h diff --git a/gyp/pathops_unittest.gyp b/gyp/pathops_unittest.gyp index a3ae936d92..c7c32ef2c9 100644 --- a/gyp/pathops_unittest.gyp +++ b/gyp/pathops_unittest.gyp @@ -27,11 +27,8 @@ '../tests/Test.h', ], 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', - 'effects.gyp:effects', + 'skia_lib.gyp:skia_lib', 'flags.gyp:flags', - 'images.gyp:images', - 'utils.gyp:utils', ], 'conditions': [ [ 'skia_gpu == 1', { diff --git a/gyp/pdf.gyp b/gyp/pdf.gyp index 0e759142ca..31b48dbe28 100644 --- a/gyp/pdf.gyp +++ b/gyp/pdf.gyp @@ -6,7 +6,7 @@ 'type': 'static_library', 'standalone_static_library': 1, 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', + 'skia_lib.gyp:skia_lib', 'zlib.gyp:zlib', ], 'include_dirs': [ diff --git a/gyp/pixman_test.gyp b/gyp/pixman_test.gyp index 64c5a9c568..a571dd79ef 100644 --- a/gyp/pixman_test.gyp +++ b/gyp/pixman_test.gyp @@ -118,10 +118,8 @@ '../../../pixman/pixman/pixman.h', ], 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', - 'effects.gyp:effects', + 'skia_lib.gyp:skia_lib', 'experimental.gyp:experimental', - 'images.gyp:images', 'pdf.gyp:pdf', 'views.gyp:views', 'xml.gyp:xml', diff --git a/gyp/ports.gyp b/gyp/ports.gyp index fc9bb9ba4c..3422b8e30a 100644 --- a/gyp/ports.gyp +++ b/gyp/ports.gyp @@ -6,18 +6,17 @@ 'product_name': 'skia_ports', 'type': 'static_library', 'standalone_static_library': 1, - 'dependencies': [ - 'core.gyp:core', - 'sfnt.gyp:sfnt', - 'utils.gyp:utils', - ], 'include_dirs': [ + '../include/config', + '../include/core', '../include/effects', '../include/images', '../include/ports', + '../include/utils', '../include/xml', '../src/core', '../src/lazy', + '../src/sfnt', '../src/utils', ], 'sources': [ diff --git a/gyp/sfnt.gyp b/gyp/sfnt.gyp index 438f33e8e6..cc21b222bc 100644 --- a/gyp/sfnt.gyp +++ b/gyp/sfnt.gyp @@ -5,10 +5,9 @@ 'product_name': 'skia_sfnt', 'type': 'static_library', 'standalone_static_library': 1, - 'dependencies': [ - 'core.gyp:core', - ], 'include_dirs': [ + '../include/config', + '../include/core', '../src/sfnt', ], 'sources': [ diff --git a/gyp/shapeops_demo.gyp b/gyp/shapeops_demo.gyp index 4537c01b73..83836ee730 100644 --- a/gyp/shapeops_demo.gyp +++ b/gyp/shapeops_demo.gyp @@ -69,9 +69,7 @@ '../experimental/Intersection/TriangleUtilities.h', ], 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', - 'effects.gyp:effects', - 'images.gyp:images', + 'skia_lib.gyp:skia_lib', 'views.gyp:views', 'xml.gyp:xml', ], diff --git a/gyp/shapeops_edge.gyp b/gyp/shapeops_edge.gyp index 8c67cf7991..e4e7d72dff 100644 --- a/gyp/shapeops_edge.gyp +++ b/gyp/shapeops_edge.gyp @@ -115,9 +115,7 @@ '../experimental/Intersection/thingsToDo.txt', ], 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', - 'effects.gyp:effects', - 'images.gyp:images', + 'skia_lib.gyp:skia_lib', ], 'conditions': [ [ 'skia_gpu == 1', { diff --git a/gyp/shapeops_tool.gyp b/gyp/shapeops_tool.gyp index 3b1408a5ff..35caccb5ae 100644 --- a/gyp/shapeops_tool.gyp +++ b/gyp/shapeops_tool.gyp @@ -15,23 +15,15 @@ '../experimental/Intersection/AddTestOutput/main.cpp', ], 'dependencies': [ - 'core.gyp:core', - 'effects.gyp:effects', + 'skia_lib.gyp:skia_lib', 'experimental.gyp:experimental', - 'images.gyp:images', - 'ports.gyp:ports', 'pdf.gyp:pdf', - 'utils.gyp:utils', ], 'conditions': [ [ 'skia_gpu == 1', { 'include_dirs': [ '../src/gpu', ], - 'dependencies': [ - 'gpu.gyp:gr', - 'gpu.gyp:skgr', - ], }], ], }, diff --git a/gyp/skia_base_libs.gyp b/gyp/skia_lib.gyp index 83cc7c7529..f85c5ad127 100644 --- a/gyp/skia_base_libs.gyp +++ b/gyp/skia_lib.gyp @@ -1,10 +1,14 @@ # The minimal set of static libraries for basic Skia functionality. + { 'variables': { 'component_libs': [ 'core.gyp:core', + 'effects.gyp:effects', + 'images.gyp:images', 'opts.gyp:opts', 'ports.gyp:ports', + 'sfnt.gyp:sfnt', 'utils.gyp:utils', ], 'conditions': [ @@ -33,8 +37,24 @@ }, 'targets': [ { - 'target_name': 'skia_base_libs', - 'type': 'none', + 'target_name': 'skia_lib', + 'conditions': [ + [ 'skia_shared_lib', { + 'conditions': [ + [ 'skia_os == "android"', { + # The name skia will confuse the linker on android into using the system's libskia.so + # instead of the one packaged with the apk. We simply choose a different name to fix + # this. + 'product_name': 'skia_android', + }, { + 'product_name': 'skia', + }], + ], + 'type': 'shared_library', + }, { + 'type': 'none', + }], + ], 'dependencies': [ '<@(component_libs)', ], diff --git a/gyp/tests.gyp b/gyp/tests.gyp index 10a4ba45e7..557fea5a28 100644 --- a/gyp/tests.gyp +++ b/gyp/tests.gyp @@ -128,15 +128,11 @@ '../src/pipe/utils/SamplePipeControllers.cpp', ], 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', - 'effects.gyp:effects', + 'skia_lib.gyp:skia_lib', 'flags.gyp:flags', 'experimental.gyp:experimental', - 'images.gyp:images', 'pdf.gyp:pdf', 'tools.gyp:picture_utils', - 'utils.gyp:utils', - 'sfnt.gyp:sfnt', ], 'conditions': [ [ 'skia_gpu == 1', { diff --git a/gyp/tools.gyp b/gyp/tools.gyp index ede028a0d7..25aa1dbf06 100644 --- a/gyp/tools.gyp +++ b/gyp/tools.gyp @@ -37,9 +37,7 @@ '../tools/skdiff_utils.h', ], 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', - 'effects.gyp:effects', - 'images.gyp:images', + 'skia_lib.gyp:skia_lib', ], }, { @@ -55,9 +53,7 @@ '../tools/skdiff_utils.h', ], 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', - 'effects.gyp:effects', - 'images.gyp:images', + 'skia_lib.gyp:skia_lib', ], }, { @@ -67,10 +63,8 @@ '../tools/skhello.cpp', ], 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', - 'effects.gyp:effects', + 'skia_lib.gyp:skia_lib', 'flags.gyp:flags', - 'images.gyp:images', ], }, { @@ -84,11 +78,9 @@ '../src/utils/', ], 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', - 'effects.gyp:effects', + 'skia_lib.gyp:skia_lib', 'flags.gyp:flags', 'gm.gyp:gm_expectations', - 'images.gyp:images', 'jsoncpp.gyp:jsoncpp', 'utils.gyp:utils', ], @@ -102,7 +94,7 @@ '../src/utils/SkLua.cpp', ], 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', + 'skia_lib.gyp:skia_lib', 'effects.gyp:effects', 'utils.gyp:utils', 'images.gyp:images', @@ -123,10 +115,9 @@ '../src/pipe/utils/', ], 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', + 'skia_lib.gyp:skia_lib', 'tools.gyp:picture_renderer', 'tools.gyp:picture_utils', - 'ports.gyp:ports', 'flags.gyp:flags', ], }, @@ -146,12 +137,10 @@ '../src/lazy/', ], 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', - 'effects.gyp:effects', + 'skia_lib.gyp:skia_lib', 'tools.gyp:picture_utils', 'tools.gyp:picture_renderer', 'bench.gyp:bench_timer', - 'ports.gyp:ports', 'flags.gyp:flags', ], }, @@ -174,9 +163,7 @@ '../src/utils/', ], 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', - 'effects.gyp:effects', - 'images.gyp:images', + 'skia_lib.gyp:skia_lib', 'tools.gyp:picture_utils', 'flags.gyp:flags', ], @@ -189,9 +176,6 @@ }, ], ], - 'export_dependent_settings': [ - 'images.gyp:images', - ], }, { 'target_name': 'render_pdfs', @@ -206,11 +190,8 @@ '../src/utils/', ], 'dependencies': [ - 'core.gyp:core', - 'effects.gyp:effects', - 'images.gyp:images', + 'skia_lib.gyp:skia_lib', 'pdf.gyp:pdf', - 'ports.gyp:ports', 'tools.gyp:picture_utils', ], 'conditions': [ @@ -257,7 +238,7 @@ '../tools/picture_utils.h', ], 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', + 'skia_lib.gyp:skia_lib', ], 'direct_dependent_settings': { 'include_dirs': [ @@ -272,9 +253,7 @@ '../tools/pinspect.cpp', ], 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', - 'effects.gyp:effects', - 'images.gyp:images', + 'skia_lib.gyp:skia_lib', ], }, { @@ -296,9 +275,7 @@ '../debugger/SkObjectParser.cpp', ], 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', - 'effects.gyp:effects', - 'images.gyp:images', + 'skia_lib.gyp:skia_lib', 'tools.gyp:picture_utils', ], }, diff --git a/gyp/xps.gyp b/gyp/xps.gyp index 376874205c..29d5e075a9 100644 --- a/gyp/xps.gyp +++ b/gyp/xps.gyp @@ -6,8 +6,7 @@ 'type': 'static_library', 'standalone_static_library': 1, 'dependencies': [ - 'skia_base_libs.gyp:skia_base_libs', - 'images.gyp:images', + 'skia_lib.gyp:skia_lib', 'sfnt.gyp:sfnt', ], 'include_dirs': [ diff --git a/platform_tools/android/app/src/com/skia/SkiaIntentService.java b/platform_tools/android/app/src/com/skia/SkiaIntentService.java index e2707f7964..68d336e70e 100644 --- a/platform_tools/android/app/src/com/skia/SkiaIntentService.java +++ b/platform_tools/android/app/src/com/skia/SkiaIntentService.java @@ -16,7 +16,7 @@ public class SkiaIntentService extends IntentService { public SkiaIntentService() { super("SkiaIntentService"); } - + @Override public IBinder onBind(Intent arg0) { return null; @@ -25,12 +25,12 @@ public class SkiaIntentService extends IntentService { public void onCreate() { super.onCreate(); } - + @Override public void onDestroy() { super.onDestroy(); } - + @Override public void onHandleIntent(Intent intent) { @@ -51,10 +51,11 @@ public class SkiaIntentService extends IntentService { String cmd = bundle.getString("args").trim(); String[] args = cmd.split("\\s+"); Log.d("skia", "Executing Command: " + cmd); - + // Load the requested library String lib = args[0]; try { + System.loadLibrary("skia_android"); System.loadLibrary(lib); } catch (UnsatisfiedLinkError e) { Log.e("skia", "Library " + lib + @@ -62,7 +63,7 @@ public class SkiaIntentService extends IntentService { SkiaReturn(-1, returnRepeats); throw e; } - + // JNI call to run the program int retval = run(args); SkiaReturn(retval, returnRepeats); diff --git a/platform_tools/android/app/src/com/skia/SkiaSampleActivity.java b/platform_tools/android/app/src/com/skia/SkiaSampleActivity.java index 4b5e7d6b7f..62f81a58f5 100644 --- a/platform_tools/android/app/src/com/skia/SkiaSampleActivity.java +++ b/platform_tools/android/app/src/com/skia/SkiaSampleActivity.java @@ -42,6 +42,7 @@ public class SkiaSampleActivity extends Activity mSlideList = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1); try { + System.loadLibrary("skia_android"); System.loadLibrary("SampleApp"); LinearLayout holder = (LinearLayout) findViewById(R.id.holder); diff --git a/platform_tools/android/bin/android_setup.sh b/platform_tools/android/bin/android_setup.sh index b955bea1cd..e5cea6e863 100755 --- a/platform_tools/android/bin/android_setup.sh +++ b/platform_tools/android/bin/android_setup.sh @@ -126,6 +126,7 @@ setup_device() { DEFINES="${DEFINES} skia_os=android" DEFINES="${DEFINES} android_base=${SCRIPT_DIR}/.." DEFINES="${DEFINES} android_toolchain=${TOOLCHAIN_TYPE}" + DEFINES="${DEFINES} skia_shared_lib=1" # Setup the build variation depending on the target device TARGET_DEVICE="$1" diff --git a/platform_tools/android/gyp/skia_android.gypi b/platform_tools/android/gyp/skia_android.gypi index 43c59c1d43..72dc942ab9 100644 --- a/platform_tools/android/gyp/skia_android.gypi +++ b/platform_tools/android/gyp/skia_android.gypi @@ -4,6 +4,7 @@ 'target_name': 'CopySkiaAppDeps', 'type': 'none', 'dependencies': [ + 'skia_lib.gyp:skia_lib', 'SampleApp.gyp:SampleApp', 'bench.gyp:bench', 'gm.gyp:gm', @@ -56,6 +57,7 @@ '<(PRODUCT_DIR)/lib.target/libtests.so', '<(PRODUCT_DIR)/lib.target/libpathops_unittest.so', '<(PRODUCT_DIR)/lib.target/gdbserver', + '<(PRODUCT_DIR)/lib.target/libskia_android.so', ], }, ], diff --git a/platform_tools/android/launcher/skia_launcher.cpp b/platform_tools/android/launcher/skia_launcher.cpp index 972382dc16..231289d4e9 100644 --- a/platform_tools/android/launcher/skia_launcher.cpp +++ b/platform_tools/android/launcher/skia_launcher.cpp @@ -28,6 +28,29 @@ int launch_app(int (*app_main)(int, const char**), int argc, return (*app_main)(argc, argv); } +void* load_library(const char** argv, const char* libraryName) +{ + // attempt to lookup the location of the shared libraries + char libraryLocation[100]; + sprintf(libraryLocation, "%s/lib/lib%s.so", argv[0], libraryName); + if (!file_exists(libraryLocation)) { + printf("ERROR: Unable to find the appropriate library in the Skia App.\n"); + printf("ERROR: Did you provide the correct program_name?\n"); + usage(argv[0]); + return NULL; + } + + // load the appropriate library + void* appLibrary = dlopen(libraryLocation, RTLD_LOCAL | RTLD_LAZY); + if (!appLibrary) { + printf("ERROR: Unable to open the shared library.\n"); + printf("ERROR: %s", dlerror()); + return NULL; + } + + return appLibrary; +} + int main(int argc, const char** argv) { // check that the program name was specified @@ -44,21 +67,16 @@ int main(int argc, const char** argv) { return -1; } - // attempt to lookup the location of the shared libraries - char libraryLocation[100]; - sprintf(libraryLocation, "%s/lib/lib%s.so", appLocation, argv[1]); - if (!file_exists(libraryLocation)) { - printf("ERROR: Unable to find the appropriate library in the Skia App.\n"); - printf("ERROR: Did you provide the correct program_name?\n"); - usage(argv[0]); + // load the local skia shared library + void* skiaLibrary = load_library(argv, "libskia_android.so"); + if (NULL == skiaLibrary) + { return -1; } // load the appropriate library - void* appLibrary = dlopen(libraryLocation, RTLD_LOCAL | RTLD_LAZY); - if (!appLibrary) { - printf("ERROR: Unable to open the shared library.\n"); - printf("ERROR: %s", dlerror()); + void* appLibrary = load_library(argv, argv[1]); + if (NULL == appLibrary) { return -1; } |