diff --git a/Package.swift b/Package.swift index 06d305f..6d464dc 100644 --- a/Package.swift +++ b/Package.swift @@ -3,6 +3,18 @@ import PackageDescription +let allPlatforms: [Platform] = [ + .iOS, + .macOS, + .tvOS, + .watchOS, + .macCatalyst, + .driverKit, + .android, + .linux, + .windows, + ] + var buildSettings: [CXXSetting] = [ .define("DEBUG", to: "1", .when(configuration: .debug)), .define("U_ATTRIBUTE_DEPRECATED", to: ""), @@ -10,18 +22,7 @@ var buildSettings: [CXXSetting] = [ .define("U_SHOW_INTERNAL_API", to: "1"), .define("U_STATIC_IMPLEMENTATION"), .define("U_TIMEZONE", to: "_timezone", .when(platforms: [.windows])), - .define( - "U_TIMEZONE", to: "timezone", - .when(platforms: [ - .iOS, - .macOS, - .tvOS, - .watchOS, - .macCatalyst, - .driverKit, - .android, - .linux, - ])), + .define("U_TIMEZONE", to: "timezone", .when(platforms: allPlatforms.filter({ $0 != .windows }))), .define("U_TIMEZONE_PACKAGE", to: "\"icutz44l\""), .define("U_HAVE_TZSET", to: "0", .when(platforms: [.wasi])), .define("U_HAVE_TZNAME", to: "0", .when(platforms: [.wasi])), @@ -45,7 +46,8 @@ var buildSettings: [CXXSetting] = [ // Where data are stored .define("ICU_DATA_DIR", to: "\"/usr/share/icu/\""), - .define("USE_PACKAGE_DATA", to: "1"), + .define("ICU_DATA_DIR_PREFIX_ENV_VAR", to: "\"ICU_DATA_DIR_PREFIX\""), + .define("USE_PACKAGE_DATA", to: "1", .when(platforms: allPlatforms.filter({ $0 != .android }))), .define("APPLE_ICU_CHANGES", to: "1"), .headerSearchPath("common"), diff --git a/icuSources/common/udata.cpp b/icuSources/common/udata.cpp index 3357e18..aa508a3 100644 --- a/icuSources/common/udata.cpp +++ b/icuSources/common/udata.cpp @@ -701,7 +701,7 @@ openCommonData(const char *path, /* Path from OpenChoice? */ if(gCommonICUDataArray[commonDataIndex] != nullptr) { return gCommonICUDataArray[commonDataIndex]; } -#if !defined(ICU_DATA_DIR_WINDOWS) +#if defined(USE_PACKAGE_DATA) && !defined(ICU_DATA_DIR_WINDOWS) // When using the Windows system data, we expect only a single data file. int32_t i; for(i = 0; i < commonDataIndex; ++i) { @@ -726,7 +726,7 @@ openCommonData(const char *path, /* Path from OpenChoice? */ setCommonICUDataPointer(uprv_getICUData_conversion(), false, pErrorCode); } */ -#if !defined(ICU_DATA_DIR_WINDOWS) +#if defined(USE_PACKAGE_DATA) && !defined(ICU_DATA_DIR_WINDOWS) // When using the Windows system data, we expect only a single data file. setCommonICUDataPointer(&U_ICUDATA_ENTRY_POINT, false, pErrorCode); {