447
|
1 # FindSDL2 |
|
2 # -------- |
|
3 # |
|
4 # Find SDL2 library and components, this modules defines: |
|
5 # |
|
6 # SDL2_LIBRARY, the name of the library to link against. |
|
7 # SDL2_MAIN_LIBRARY, for SDL2main (if present). |
|
8 # SDL2_LIBRARIES, alias to SDL2_LIBRARY. |
|
9 # SDL2_FOUND, true if found. |
|
10 # SDL2_INCLUDE_DIR, where to find SDL.h. |
|
11 # |
|
12 # The following imported targets will be defined: |
|
13 # |
|
14 # SDL2::SDL2 |
|
15 # SDL2::SDL2main (if present) |
|
16 # |
|
17 # This module also handle the following official SDL addons: |
|
18 # |
|
19 # - image |
|
20 # - mixer |
|
21 # - net |
|
22 # - ttf |
|
23 # |
|
24 # And thus, variables SDL2_<C>_LIBRARY, SDL2_<C>_INCLUDE_DIRS and SDL2::<C> |
|
25 # imported targets will be defined if they are found. |
|
26 # |
|
27 |
|
28 include(FindPackageHandleStandardArgs) |
|
29 |
|
30 # The official include convention is <SDL.h> not <SDL/SDL.h>. |
|
31 find_path( |
|
32 SDL2_INCLUDE_DIR |
|
33 NAMES SDL.h |
|
34 PATH_SUFFIXES include/SDL2 include |
|
35 ) |
|
36 |
|
37 find_library(SDL2_LIBRARY NAMES SDL2 libSDL2 SDL2d libSDL2d) |
|
38 find_library(SDL2_MAIN_LIBRARY NAMES SDL2main libSDL2main SDL2maind libSDL2maind) |
|
39 |
|
40 # Standard components. |
|
41 foreach (c ${SDL2_FIND_COMPONENTS}) |
|
42 find_path( |
|
43 SDL2_${c}_INCLUDE_DIR |
|
44 NAMES SDL.h |
|
45 PATH_SUFFIXES include/SDL2 include |
|
46 ) |
|
47 |
|
48 find_library( |
|
49 SDL2_${c}_LIBRARY |
|
50 NAMES SDL2_${c} libSDL2_${c} |
|
51 ) |
|
52 |
|
53 if (NOT TARGET SDL2::${c} AND SDL2_${c}_LIBRARY) |
|
54 set(SDL2_${c}_FOUND TRUE) |
|
55 add_library(SDL2::${c} UNKNOWN IMPORTED) |
|
56 set_target_properties( |
|
57 SDL2::${c} |
|
58 PROPERTIES |
|
59 IMPORTED_LINK_INTERFACE_LANGUAGES "C" |
|
60 IMPORTED_LOCATION "${SDL2_${c}_LIBRARY}" |
|
61 INTERFACE_INCLUDE_DIRECTORIES "${SDL2_${c}_INCLUDE_DIRS}" |
|
62 ) |
|
63 endif () |
|
64 |
|
65 mark_as_advanced(SDL2_${c}_INCLUDE_DIR SDL2_${c}_LIBRARY) |
|
66 endforeach () |
|
67 |
|
68 find_package_handle_standard_args( |
|
69 SDL2 |
|
70 REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR |
|
71 HANDLE_COMPONENTS |
|
72 ) |
|
73 |
|
74 if (SDL2_FOUND) |
|
75 set(SDL2_LIBRARIES ${SDL2_LIBRARY}) |
|
76 set(SDL2_INCLUDE_DIRS ${SDL2_INCLUDE_DIR}) |
|
77 |
|
78 if (NOT TARGET SDL2::SDL2) |
|
79 add_library(SDL2::SDL2 UNKNOWN IMPORTED) |
|
80 set_target_properties( |
|
81 SDL2::SDL2 |
|
82 PROPERTIES |
|
83 IMPORTED_LINK_INTERFACE_LANGUAGES "C" |
|
84 IMPORTED_LOCATION "${SDL2_LIBRARY}" |
|
85 INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIRS}" |
|
86 ) |
|
87 endif () |
|
88 |
|
89 if (NOT TARGET SDL2::main AND SDL2_MAIN_LIBRARY) |
|
90 add_library(SDL2::main UNKNOWN IMPORTED) |
|
91 set_target_properties( |
|
92 SDL2::main |
|
93 PROPERTIES |
|
94 IMPORTED_LINK_INTERFACE_LANGUAGES "C" |
|
95 IMPORTED_LOCATION "${SDL2_MAIN_LIBRARY}" |
|
96 INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIRS}" |
|
97 ) |
|
98 endif () |
|
99 endif () |
|
100 |
|
101 mark_as_advanced(SDL2_INCLUDE_DIR SDL2_LIBRARY) |