Mercurial > minori
comparison dep/animia/CMakeLists.txt @ 158:80d6b28eb29f
dep/animia: fix most X11 stuff
it looks like _NET_WM_PID isn't supported by MOST clients, or my code is wrong...
core/filesystem: fix Linux config path handling on *nix
author | Paper <mrpapersonic@gmail.com> |
---|---|
date | Fri, 17 Nov 2023 02:07:33 -0500 |
parents | cdf79282d647 |
children | 61b76c7b656a |
comparison
equal
deleted
inserted
replaced
157:18c8eb5d1edc | 158:80d6b28eb29f |
---|---|
1 cmake_minimum_required(VERSION 3.9) | 1 cmake_minimum_required(VERSION 3.16) |
2 project(animia LANGUAGES CXX) | 2 project(animia LANGUAGES CXX) |
3 set(SRC_FILES | 3 set(SRC_FILES |
4 # any non-platform-specific files go here | 4 # any non-platform-specific files go here |
5 src/animia.cc | 5 src/animia.cc |
6 src/player.cc | 6 src/player.cc |
9 src/fd.cc | 9 src/fd.cc |
10 src/win.cc | 10 src/win.cc |
11 ) | 11 ) |
12 | 12 |
13 set(LIBRARIES) | 13 set(LIBRARIES) |
14 | 14 set(INCLUDE_DIRS) |
15 set(INCLUDE_DIRS | |
16 include | |
17 ) | |
18 | |
19 set(DEFINES) | 15 set(DEFINES) |
20 | 16 |
21 # FD | 17 if(APPLE) |
22 if(LINUX) | |
23 list(APPEND DEFINES LINUX) | |
24 list(APPEND SRC_FILES | |
25 # linux | |
26 src/fd/linux.cc | |
27 ) | |
28 elseif(APPLE) # this won't run on Linux | |
29 list(APPEND DEFINES MACOSX) | 18 list(APPEND DEFINES MACOSX) |
30 list(APPEND SRC_FILES | 19 list(APPEND SRC_FILES |
31 # xnu stuff | 20 # xnu stuff |
32 src/fd/xnu.cc | 21 src/fd/xnu.cc |
33 ) | 22 ) |
23 check_language(OBJCXX) | |
24 if(CMAKE_OBJCXX_COMPILER) | |
25 enable_language(OBJCXX) | |
26 list(APPEND SRC_FILES | |
27 src/win/quartz.mm | |
28 ) | |
29 find_library(FOUNDATION_LIBRARY Foundation) | |
30 find_library(COREGRAPHICS_LIBRARY CoreGraphics) | |
31 find_library(APPKIT_LIBRARY AppKit) | |
32 list(APPEND LIBRARIES ${FOUNDATION_LIBRARY} ${COREGRAPHICS_LIBRARY} ${APPKIT_LIBRARY}) | |
33 else() # NOT CMAKE_OBJCXX_COMPILER | |
34 message(WARNING "An Objective-C++ compiler couldn't be found! Window enumeration support will not be compiled.") | |
35 endif() # CMAKE_OBJCXX_COMPILER | |
34 elseif(WIN32) | 36 elseif(WIN32) |
35 list(APPEND DEFINES WIN32) | 37 list(APPEND DEFINES WIN32) |
36 list(APPEND SRC_FILES | 38 list(APPEND SRC_FILES |
37 # win32 | 39 # win32 |
38 src/fd/win32.cc | 40 src/fd/win32.cc |
39 ) | |
40 endif() | |
41 | |
42 # Windows | |
43 if(WIN32) | |
44 list(APPEND SRC_FILES | |
45 src/win/win32.cc | 41 src/win/win32.cc |
46 src/util/win32.cc | 42 src/util/win32.cc |
47 ) | 43 ) |
48 elseif(APPLE) | 44 else() # NOT WIN32 AND NOT APPLE |
49 enable_language(OBJCXX) | 45 if(LINUX) |
50 list(APPEND SRC_FILES | 46 list(APPEND DEFINES LINUX) |
51 src/win/quartz.mm | 47 list(APPEND SRC_FILES |
52 ) | 48 # linux |
53 find_library(FOUNDATION_LIBRARY Foundation) | 49 src/fd/linux.cc |
54 find_library(COREGRAPHICS_LIBRARY CoreGraphics) | 50 ) |
55 find_library(APPKIT_LIBRARY AppKit) | 51 endif() # LINUX |
56 list(APPEND LIBRARIES ${FOUNDATION_LIBRARY} ${COREGRAPHICS_LIBRARY} ${APPKIT_LIBRARY}) | 52 |
57 else() | 53 # X11 |
58 find_package(X11::X11) | 54 find_package(X11 COMPONENTS X11) |
59 if (X11_FOUND) | 55 if(X11_FOUND) |
60 list(APPEND DEFINES X11) | 56 list(APPEND DEFINES X11) |
61 list(APPEND SRC_FILES | 57 list(APPEND SRC_FILES |
62 src/win/x11.cc | 58 src/win/x11.cc |
63 ) | 59 ) |
64 list(APPEND INCLUDE_DIRS | 60 list(APPEND INCLUDE_DIRS |
65 ${X11_INCLUDE_DIR} | 61 ${X11_INCLUDE_DIRS} |
66 ) | 62 ) |
67 list(APPEND LIBRARIES | 63 list(APPEND LIBRARIES |
68 ${X11_LIBRARIES} | 64 ${X11_LIBRARIES} |
69 ) | 65 ) |
70 endif() | 66 else() # NOT X11_FOUND |
71 endif() | 67 # For some systems, i.e. Debian, FindX11 fails to find X11, so we have |
68 # to use pkg_config as a fallback | |
69 find_package(PkgConfig) | |
70 if(PKG_CONFIG_FOUND) | |
71 pkg_check_modules(X11 x11) | |
72 if(X11_FOUND) | |
73 list(APPEND DEFINES X11) | |
74 list(APPEND SRC_FILES | |
75 src/win/x11.cc | |
76 ) | |
77 list(APPEND INCLUDE_DIRS | |
78 ${X11_INCLUDE_DIRS} | |
79 ) | |
80 list(APPEND LIBRARIES | |
81 ${X11_LIBRARIES} | |
82 ) | |
83 endif() # X11_FOUND | |
84 endif() # PKG_CONFIG_FOUND | |
85 endif() # X11_FOUND | |
86 endif() # WIN32 AND APPLE | |
72 | 87 |
73 add_library(animia SHARED ${SRC_FILES}) | 88 add_library(animia SHARED ${SRC_FILES}) |
74 set_target_properties(animia PROPERTIES | 89 set_target_properties(animia PROPERTIES |
75 PUBLIC_HEADER include/animia.h | 90 PUBLIC_HEADER include/animia.h |
76 CXX_STANDARD 17 | 91 CXX_STANDARD 17 |
77 ) | 92 ) |
78 | 93 |
79 if(WIN32) | 94 target_compile_definitions(animia PUBLIC ${DEFINES}) |
80 target_compile_definitions(animia PUBLIC WIN32) | 95 target_include_directories(animia PRIVATE include PUBLIC ${INCLUDE_DIRS}) |
81 elseif(LINUX) | |
82 target_compile_definitions(animia PUBLIC LINUX) | |
83 elseif(UNIX) | |
84 if(APPLE) | |
85 target_compile_definitions(animia PUBLIC MACOSX) | |
86 endif() | |
87 target_compile_definitions(animia PUBLIC UNIX) | |
88 endif() | |
89 | |
90 target_include_directories(animia PRIVATE include) | |
91 target_link_libraries(animia PUBLIC ${LIBRARIES}) | 96 target_link_libraries(animia PUBLIC ${LIBRARIES}) |