1 /*
2  * Copyright 2013 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 #include "SkForceLinking.h"
9 #include "SkImageDecoder.h"
10 
11 // This method is required to fool the linker into not discarding the pre-main
12 // initialization and registration of the decoder classes. Passing true will
13 // cause memory leaks.
SkForceLinking(bool doNotPassTrue)14 int SkForceLinking(bool doNotPassTrue) {
15     if (doNotPassTrue) {
16         SkASSERT(false);
17         CreateJPEGImageDecoder();
18         CreateWEBPImageDecoder();
19         CreateBMPImageDecoder();
20         CreateICOImageDecoder();
21         CreateWBMPImageDecoder();
22         // Only link hardware texture codecs on platforms that build them. See images.gyp
23 #ifndef SK_BUILD_FOR_ANDROID_FRAMEWORK
24         CreatePKMImageDecoder();
25         CreateKTXImageDecoder();
26         CreateASTCImageDecoder();
27 #endif
28         // Only link GIF and PNG on platforms that build them. See images.gyp
29 #if !defined(SK_BUILD_FOR_MAC) && !defined(SK_BUILD_FOR_WIN) && !defined(SK_BUILD_FOR_IOS)
30         CreateGIFImageDecoder();
31 #endif
32 #if !defined(SK_BUILD_FOR_MAC) && !defined(SK_BUILD_FOR_WIN) && !defined(SK_BUILD_FOR_IOS)
33         CreatePNGImageDecoder();
34 #endif
35 #if defined(SK_BUILD_FOR_IOS)
36         CreatePNGImageEncoder_IOS();
37 #endif
38         return -1;
39     }
40     return 0;
41 }
42