diff --git a/BUCK b/BUCK index 9e4eb74e75..2f5686da4b 100755 --- a/BUCK +++ b/BUCK @@ -1,3 +1,5 @@ +load('//tools:buck_utils.bzl', 'config_with_updated_linker_flags', 'combined_config', 'configs_with_config') +load('//tools:buck_defs.bzl', 'SHARED_CONFIGS', 'EXTENSION_LIB_SPECIFIC_CONFIG') COMMON_PREPROCESSOR_FLAGS = [ '-fobjc-arc', @@ -44,6 +46,7 @@ apple_library( 'Source/**/*.mm', 'Source/Base/*.m' ]), + configs = configs_with_config(combined_config([SHARED_CONFIGS, EXTENSION_LIB_SPECIFIC_CONFIG])), preprocessor_flags = COMMON_PREPROCESSOR_FLAGS, lang_preprocessor_flags = COMMON_LANG_PREPROCESSOR_FLAGS, linker_flags = COMMON_LINKER_FLAGS, @@ -59,200 +62,3 @@ apple_library( '$SDKROOT/System/Library/Frameworks/CoreGraphics.framework', ] ) - - -'''##################################### -# Defines -##################################### -COMMON_PREPROCESSOR_FLAGS = [ - '-fobjc-arc', - '-DDEBUG=1', - '-fno-exceptions', - '-fno-objc-arc-exceptions' -] - -COMMON_LANG_PREPROCESSOR_FLAGS = { - 'C': ['-std=gnu99'], - 'CXX': ['-std=c++11', '-stdlib=libc++'], - 'OBJCXX': ['-std=c++11', '-stdlib=libc++'], -} - -COMMON_LINKER_FLAGS = ['-ObjC++'] - -ASYNCDISPLAYKIT_EXPORTED_HEADERS = glob([ - 'Source/*.h', - 'Source/Details/**/*.h', - 'Source/Layout/*.h', - 'Source/Base/*.h', - 'Source/Debug/AsyncDisplayKit+Debug.h', - # Most TextKit components are not public because the C++ content - # in the headers will cause build errors when using - # `use_frameworks!` on 0.39.0 & Swift 2.1. - # See https://github.com/facebook/AsyncDisplayKit/issues/1153 - 'Source/TextKit/ASTextNodeTypes.h', - 'Source/TextKit/ASTextKitComponents.h' -]) - -ASYNCDISPLAYKIT_PRIVATE_HEADERS = glob([ - 'Source/**/*.h' - ], - excludes = ASYNCDISPLAYKIT_EXPORTED_HEADERS, -) - -def asyncdisplaykit_library( - name, - additional_preprocessor_flags = [], - deps = [], - additional_frameworks = []): - - apple_library( - name = name, - prefix_header = 'Source/AsyncDisplayKit-Prefix.pch', - header_path_prefix = 'AsyncDisplayKit', - exported_headers = ASYNCDISPLAYKIT_EXPORTED_HEADERS, - headers = ASYNCDISPLAYKIT_PRIVATE_HEADERS, - srcs = glob([ - 'Source/**/*.m', - 'Source/**/*.mm', - 'Source/Base/*.m' - ]), - preprocessor_flags = COMMON_PREPROCESSOR_FLAGS + additional_preprocessor_flags, - lang_preprocessor_flags = COMMON_LANG_PREPROCESSOR_FLAGS, - linker_flags = COMMON_LINKER_FLAGS + [ - '-weak_framework', - 'Photos', - '-weak_framework', - 'MapKit', - ], - deps = deps, - frameworks = [ - '$SDKROOT/System/Library/Frameworks/Foundation.framework', - '$SDKROOT/System/Library/Frameworks/UIKit.framework', - - '$SDKROOT/System/Library/Frameworks/QuartzCore.framework', - '$SDKROOT/System/Library/Frameworks/CoreMedia.framework', - '$SDKROOT/System/Library/Frameworks/CoreText.framework', - '$SDKROOT/System/Library/Frameworks/CoreGraphics.framework', - '$SDKROOT/System/Library/Frameworks/CoreLocation.framework', - '$SDKROOT/System/Library/Frameworks/AVFoundation.framework', - - # TODO somehow AssetsLibrary can't be weak_framework - '$SDKROOT/System/Library/Frameworks/AssetsLibrary.framework', - ] + additional_frameworks, - visibility = ['PUBLIC'], - ) - -##################################### -# AsyncDisplayKit targets -##################################### -asyncdisplaykit_library( - name = 'AsyncDisplayKit-Core', -) - -# (Default) AsyncDisplayKit and AsyncDisplayKit-PINRemoteImage targets are basically the same library with different names -for name in ['AsyncDisplayKit', 'AsyncDisplayKit-PINRemoteImage']: - asyncdisplaykit_library( - name = name, - deps = [ - '//Pods/PINRemoteImage:PINRemoteImage-PINCache', - ], - additional_frameworks = [ - '$SDKROOT/System/Library/Frameworks/MobileCoreServices.framework', - ] - ) - -##################################### -# Test Host -# TODO: Split to smaller BUCK files and parse in parallel -##################################### -apple_resource( - name = 'TestHostResources', - files = ['Tests/TestHost/Default-568h@2x.png'], - dirs = [], - ) - -apple_bundle( - name = 'TestHost', - binary = ':TestHostBinary', - extension = 'app', - info_plist = 'Tests/TestHost/Info.plist', - info_plist_substitutions = { - 'PRODUCT_BUNDLE_IDENTIFIER': 'com.facebook.AsyncDisplayKitTestHost', - }, - tests = [':Tests'], -) - -apple_binary( - name = 'TestHostBinary', - headers = glob(['Tests/TestHost/*.h']), - srcs = glob(['Tests/TestHost/*.m']), - lang_preprocessor_flags = COMMON_LANG_PREPROCESSOR_FLAGS, - linker_flags = COMMON_LINKER_FLAGS, - deps = [ - ':TestHostResources', - ':AsyncDisplayKit-Core', - ], - frameworks = [ - '$SDKROOT/System/Library/Frameworks/Photos.framework', - '$SDKROOT/System/Library/Frameworks/MapKit.framework', - ], -) - -apple_package( - name = 'TestHostPackage', - bundle = ':TestHost', -) - -##################################### -# Tests -##################################### -apple_resource( - name = 'TestsResources', - files = ['Tests/en.lproj/InfoPlist.strings'], - dirs = ['Tests/TestResources'], -) - -apple_test( - name = 'Tests', - test_host_app = ':TestHost', - info_plist = 'Tests/AsyncDisplayKitTests-Info.plist', - info_plist_substitutions = { - 'PRODUCT_BUNDLE_IDENTIFIER': 'com.facebook.AsyncDisplayKitTests', - }, - prefix_header = 'Tests/AsyncDisplayKitTests-Prefix.pch', - header_path_prefix = 'AsyncDisplayKit', - # Expose all ASDK headers to tests - headers = ASYNCDISPLAYKIT_EXPORTED_HEADERS + ASYNCDISPLAYKIT_PRIVATE_HEADERS + glob(['Tests/*.h']), - srcs = glob([ - 'Tests/*.m', - 'Tests/*.mm' - ], - # ASTextNodePerformanceTests are excluded (#2173) - excludes = ['Tests/ASTextNodePerformanceTests.m*'] - ), - snapshot_reference_images_path='Tests/ReferenceImages', - preprocessor_flags = COMMON_PREPROCESSOR_FLAGS + [ - '-Wno-implicit-function-declaration', - '-Wno-deprecated-declarations', - ], - lang_preprocessor_flags = COMMON_LANG_PREPROCESSOR_FLAGS, - linker_flags = COMMON_LINKER_FLAGS, - deps = [ - ':TestsResources', - '//Pods/OCMock:OCMock', - '//Pods/FBSnapshotTestCase:FBSnapshotTestCase', - '//Pods/JGMethodSwizzler:JGMethodSwizzler', - ], - frameworks = [ - '$SDKROOT/System/Library/Frameworks/Foundation.framework', - '$SDKROOT/System/Library/Frameworks/UIKit.framework', - - '$SDKROOT/System/Library/Frameworks/CoreMedia.framework', - '$SDKROOT/System/Library/Frameworks/CoreText.framework', - '$SDKROOT/System/Library/Frameworks/CoreGraphics.framework', - '$SDKROOT/System/Library/Frameworks/AVFoundation.framework', - - '$PLATFORM_DIR/Developer/Library/Frameworks/XCTest.framework', - ], -) -''' \ No newline at end of file