diff --git a/.gitignore b/.gitignore index c4b2db66..f19c9e96 100644 --- a/.gitignore +++ b/.gitignore @@ -15,4 +15,5 @@ profile *.moved-aside DerivedData .idea/ -.DS_Store \ No newline at end of file +.DS_Store +Archives/ diff --git a/SBJson5.xcodeproj/project.pbxproj b/SBJson5.xcodeproj/project.pbxproj index 448a2943..a184f4b6 100644 --- a/SBJson5.xcodeproj/project.pbxproj +++ b/SBJson5.xcodeproj/project.pbxproj @@ -697,6 +697,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + BUILD_LIBRARY_FOR_DISTRIBUTION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -748,7 +749,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "org.brautaset.SBJson5-iOS"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; - SKIP_INSTALL = YES; + SKIP_INSTALL = NO; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -759,6 +760,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + BUILD_LIBRARY_FOR_DISTRIBUTION = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -803,7 +805,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "org.brautaset.SBJson5-iOS"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; - SKIP_INSTALL = YES; + SKIP_INSTALL = NO; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; diff --git a/build_XCFramework.sh b/build_XCFramework.sh new file mode 100755 index 00000000..75763c8e --- /dev/null +++ b/build_XCFramework.sh @@ -0,0 +1,41 @@ +echo "** This script is not finalized. It will generate the simulator framework successfully but has issues with generating the macOS and iOS versions**" + +FRAMEWORK_NAME="SBJson5" +FRAMEWORK_FOLDER_NAME="${FRAMEWORK_NAME}_XCFramework" +FRAMEWORK_PATH="${HOME}/Desktop/${FRAMEWORK_FOLDER_NAME}/${FRAMEWORK_NAME}.xcframework" +TEMP_FRAMEWORK_PATH="${HOME}/Desktop/${FRAMEWORK_FOLDER_NAME}_temp" + +# Set Output Destinations +SIMULATOR_ARCHIVE_PATH="${TEMP_FRAMEWORK_PATH}/simulator.xcarchive" +IOS_DEVICE_ARCHIVE_PATH="${TEMP_FRAMEWORK_PATH}/iOS.xcarchive" +MACOS_ARCIVE_PATH="${TEMP_FRAMEWORK_PATH}/macOS.xcarchive" + +# Clean up existing products +rm -rf "${HOME}/Desktop/${FRAMEWORK_FOLDER_NAME}" +echo "Deleted existing ${FRAMEWORK_FOLDER_NAME}" + +# Prepare file system +mkdir "${HOME}/Desktop/${FRAMEWORK_FOLDER_NAME}" +mkdir "${PROJECT_DIR}/${FRAMEWORK_FOLDER_NAME}" + +# Build archives +echo "Archiving ${FRAMEWORK_NAME} for the simulator" +xcodebuild archive -scheme "SBJson5_iOS" -destination="iOS Simulator" -archivePath "${SIMULATOR_ARCHIVE_PATH}" -sdk iphonesimulator SKIP_INSTALL=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES +echo "Archiving ${FRAMEWORK_NAME} for iOS" +xcodebuild archive -scheme "SBJson5_iOS" -destination="iOS" -archivePath "${IOS_DEVICE_ARCHIVE_PATH}" -sdk iphoneos SKIP_INSTALL=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES +echo "Archiving ${FRAMEWORK_NAME} for macOS" +xcodebuild archive -scheme "SBJson5_macOS" -destination="macOS" -archivePath "${MACOS_ARCHIVE_PATH}" -sdk macosx SKIP_INSTALL=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES + +open "${TEMP_FRAMEWORK_PATH}" + +# Create XCFramework +echo "Generating XCFramework" +xcodebuild -create-xcframework -framework ${SIMULATOR_ARCHIVE_PATH}/Products/Library/Frameworks/SBJson5_iOS.framework -framework ${IOS_DEVICE_ARCHIVE_PATH}/Products/Library/Frameworks/SBJson_iOS.framework -framework ${MACOS_ARCHIVE_PATH}/Products/Library/Frameworks/SBJson_macOS.framework -output "${FRAMEWORK_PATH}" + +#echo "Cleaning up temporary files" +#rm -rf "${SIMULATOR_ARCHIVE_PATH}" +#rm -rf "${IOS_DEVICE_ARCHIVE_PATH}" +#rm -rf "${MACOS_ARCHIVE_PATH}" + +#open "${HOME}/Desktop/${FRAMEWORK_FOLDER_NAME}" +