diff --git a/gn/toolchain/BUILD.gn b/gn/toolchain/BUILD.gn
index 4517710946..f49d3b9b39 100644
--- a/gn/toolchain/BUILD.gn
+++ b/gn/toolchain/BUILD.gn
@@ -67,7 +67,7 @@ toolchain("msvc") {
if (target_cpu == "x86") {
# Toolchain asset includes a script that configures for x86 building.
# We don't support x86 builds with local MSVC installations.
- env_setup = "$shell $win_sdk/bin/SetEnv.cmd /x86 && "
+ # env_setup = "$shell $win_sdk/bin/SetEnv.cmd /x86 && "
} else if (target_cpu == "arm64") {
# ARM64 compiler is incomplete - it relies on DLLs located in the host toolchain directory.
env_setup = "$shell set \"PATH=%PATH%;$win_vc\\Tools\\MSVC\\$win_toolchain_version\\bin\\HostX64\\x64\" && "
@@ -201,7 +201,7 @@ toolchain("msvc") {
tool("copy") {
cp_py = rebase_path("../cp.py")
- command = "python \"$cp_py\" {{source}} {{output}}"
+ command = "$shell python \"$cp_py\" {{source}} {{output}}"
description = "copy {{source}} {{output}}"
}
}
@@ -341,13 +341,13 @@ template("gcc_like_toolchain") {
tool("copy") {
cp_py = rebase_path("../cp.py")
- command = "python \"$cp_py\" {{source}} {{output}}"
+ command = "$shell python \"$cp_py\" {{source}} {{output}}"
description = "copy {{source}} {{output}}"
}
tool("copy_bundle_data") {
cp_py = rebase_path("../cp.py")
- command = "python \"$cp_py\" {{source}} {{output}}"
+ command = "$shell python \"$cp_py\" {{source}} {{output}}"
description = "copy_bundle_data {{source}} {{output}}"
}
diff --git a/include/core/SkM44.h b/include/core/SkM44.h
index 63b3ac140b..d32921d96e 100644
--- a/include/core/SkM44.h
+++ b/include/core/SkM44.h
@@ -405,7 +405,7 @@ private:
friend class SkMatrixPriv;
};
-SkM44 Sk3LookAt(const SkV3& eye, const SkV3& center, const SkV3& up);
-SkM44 Sk3Perspective(float near, float far, float angle);
+SK_API SkM44 Sk3LookAt(const SkV3& eye, const SkV3& center, const SkV3& up);
+SK_API SkM44 Sk3Perspective(float near, float far, float angle);
#endif
diff --git a/include/core/SkString.h b/include/core/SkString.h
index 6f1d972da2..5bee2dc218 100644
--- a/include/core/SkString.h
+++ b/include/core/SkString.h
@@ -270,7 +270,7 @@ private:
};
/// Creates a new string and writes into it using a printf()-style format.
-SkString SkStringPrintf(const char* format, ...) SK_PRINTF_LIKE(1, 2);
+SK_API SkString SkStringPrintf(const char* format, ...) SK_PRINTF_LIKE(1, 2);
/// This makes it easier to write a caller as a VAR_ARGS function where the format string is
/// optional.
static inline SkString SkStringPrintf() { return SkString(); }
diff --git a/include/private/SkThreadID.h b/include/private/SkThreadID.h
index 06b9be7317..2764370405 100644
--- a/include/private/SkThreadID.h
+++ b/include/private/SkThreadID.h
@@ -12,7 +12,7 @@
typedef int64_t SkThreadID;
-SkThreadID SkGetThreadID();
+SK_API SkThreadID SkGetThreadID();
const SkThreadID kIllegalThreadID = 0;
diff --git a/include/utils/SkCustomTypeface.h b/include/utils/SkCustomTypeface.h
index 61f32afed5..ffe3ad8d34 100644
--- a/include/utils/SkCustomTypeface.h
+++ b/include/utils/SkCustomTypeface.h
@@ -19,7 +19,7 @@
class SkStream;
-class SkCustomTypefaceBuilder {
+class SK_API SkCustomTypefaceBuilder {
public:
SkCustomTypefaceBuilder();
diff --git a/modules/skottie/include/Skottie.h b/modules/skottie/include/Skottie.h
index c519068b43..ecb2debf8e 100644
--- a/modules/skottie/include/Skottie.h
+++ b/modules/skottie/include/Skottie.h
@@ -43,7 +43,7 @@ using ResourceProvider = skresources::ResourceProvider;
/**
* A Logger subclass can be used to receive Animation::Builder parsing errors and warnings.
*/
-class SK_API Logger : public SkRefCnt {
+class Logger : public SkRefCnt {
public:
enum class Level {
kWarning,
@@ -56,13 +56,13 @@ public:
/**
* Interface for receiving AE composition markers at Animation build time.
*/
-class SK_API MarkerObserver : public SkRefCnt {
+class MarkerObserver : public SkRefCnt {
public:
// t0,t1 are in the Animation::seek() domain.
virtual void onMarker(const char name[], float t0, float t1) = 0;
};
-class SK_API Animation : public SkNVRefCnt<Animation> {
+class Animation : public SkNVRefCnt<Animation> {
public:
class Builder final {
public:
diff --git a/modules/skottie/include/SkottieProperty.h b/modules/skottie/include/SkottieProperty.h
index 2355984b86..fbc08544f9 100644
--- a/modules/skottie/include/SkottieProperty.h
+++ b/modules/skottie/include/SkottieProperty.h
@@ -70,7 +70,7 @@ namespace internal { class AnimationBuilder; }
* and the internal scene-graph representation.
*/
template <typename ValueT, typename NodeT>
-class SK_API PropertyHandle final {
+class PropertyHandle final {
public:
explicit PropertyHandle(sk_sp<NodeT> node) : fNode(std::move(node)) {}
~PropertyHandle();
@@ -106,7 +106,7 @@ using TransformPropertyHandle = PropertyHandle<TransformPropertyValue,
* various properties of layer and shape nodes. The |node_name| argument corresponds to the
* name ("nm") node property.
*/
-class SK_API PropertyObserver : public SkRefCnt {
+class PropertyObserver : public SkRefCnt {
public:
template <typename T>
using LazyHandle = std::function<std::unique_ptr<T>()>;
diff --git a/modules/skresources/include/SkResources.h b/modules/skresources/include/SkResources.h
index c5bdb81dfa..af6b2baa36 100644
--- a/modules/skresources/include/SkResources.h
+++ b/modules/skresources/include/SkResources.h
@@ -26,7 +26,7 @@ namespace skresources {
/**
* Image asset proxy interface.
*/
-class SK_API ImageAsset : public SkRefCnt {
+class ImageAsset : public SkRefCnt {
public:
/**
* Returns true if the image asset is animated.
@@ -75,7 +75,7 @@ private:
* ResourceProvider is an interface that lets rich-content modules defer loading of external
* resources (images, fonts, etc.) to embedding clients.
*/
-class SK_API ResourceProvider : public SkRefCnt {
+class ResourceProvider : public SkRefCnt {
public:
/**
* Load a generic resource (currently only nested animations) specified by |path| + |name|,
diff --git a/modules/sksg/BUILD.gn b/modules/sksg/BUILD.gn
index 3bf998b173..319a4d522e 100644
--- a/modules/sksg/BUILD.gn
+++ b/modules/sksg/BUILD.gn
@@ -9,7 +9,7 @@ config("public_config") {
include_dirs = [ "include" ]
}
-component("sksg") {
+static_library("sksg") {
check_includes = false
import("sksg.gni")
public_configs = [ ":public_config" ]
diff --git a/src/core/SkTextBlobPriv.h b/src/core/SkTextBlobPriv.h
index 5394b50d5d..2fa56a9cab 100644
--- a/src/core/SkTextBlobPriv.h
+++ b/src/core/SkTextBlobPriv.h
@@ -199,7 +199,7 @@ private:
* .....
* }
*/
-class SkTextBlobRunIterator {
+class SK_API SkTextBlobRunIterator {
public:
SkTextBlobRunIterator(const SkTextBlob* blob);
diff --git a/src/utils/SkJSON.h b/src/utils/SkJSON.h
index d3f0b1d48f..970d64cd5b 100644
--- a/src/utils/SkJSON.h
+++ b/src/utils/SkJSON.h
@@ -53,7 +53,7 @@ namespace skjson {
* }
* }
*/
-class alignas(8) Value {
+class SK_API alignas(8) Value {
public:
enum class Type {
kNull,
@@ -209,7 +209,7 @@ private:
#endif
};
-class NullValue final : public Value {
+class SK_API NullValue final : public Value {
public:
static constexpr Type kType = Type::kNull;
@@ -321,7 +321,7 @@ struct Member {
Value fValue;
};
-class ObjectValue final : public VectorValue<Member, Value::Type::kObject> {
+class SK_API ObjectValue final : public VectorValue<Member, Value::Type::kObject> {
public:
ObjectValue(const Member* src, size_t size, SkArenaAlloc& alloc);
@@ -332,7 +332,7 @@ public:
}
};
-class DOM final : public SkNoncopyable {
+class SK_API DOM final : public SkNoncopyable {
public:
DOM(const char*, size_t);