annotate dep/animia/CMakeLists.txt @ 198:bc1ae1810855

dep/animia: switch from using classes to global functions the old idea was ok, but sort of hackish; this method doesn't use classes at all, and this way (especially important!) we can do wayland stuff AND x11 at the same time, which wasn't really possible without stupid workarounds in the other method
author Paper <mrpapersonic@gmail.com>
date Sun, 24 Dec 2023 02:59:42 -0500
parents 0ad2507c3e60
children 9f3534f6b8c4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
158
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
1 cmake_minimum_required(VERSION 3.16)
155
d2bbb5773616 dep/animia: add quartz backend for windows
Paper <mrpapersonic@gmail.com>
parents: 154
diff changeset
2 project(animia LANGUAGES CXX)
56
6ff7aabeb9d7 deps: add animia for open files detection
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
3 set(SRC_FILES
137
69db40272acd dep/animia: [WIP] huge refactor
Paper <mrpapersonic@gmail.com>
parents: 84
diff changeset
4 # any non-platform-specific files go here
69db40272acd dep/animia: [WIP] huge refactor
Paper <mrpapersonic@gmail.com>
parents: 84
diff changeset
5 src/animia.cc
69db40272acd dep/animia: [WIP] huge refactor
Paper <mrpapersonic@gmail.com>
parents: 84
diff changeset
6 src/player.cc
69db40272acd dep/animia: [WIP] huge refactor
Paper <mrpapersonic@gmail.com>
parents: 84
diff changeset
7 src/util.cc
138
28842a8d0c6b dep/animia: huge refactor (again...)
Paper <mrpapersonic@gmail.com>
parents: 137
diff changeset
8 src/strategist.cc
146
d8a61e7e2a36 dep/animia: move fd stuff to a new fd.cc, don't force the user
Paper <mrpapersonic@gmail.com>
parents: 139
diff changeset
9 src/fd.cc
152
8700806c2cc2 dep/animia: awesome new breaking changes!
Paper <mrpapersonic@gmail.com>
parents: 146
diff changeset
10 src/win.cc
56
6ff7aabeb9d7 deps: add animia for open files detection
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
11 )
139
478f3b366199 dep/animia: separate lots of things, use base class for OS stuff
Paper <mrpapersonic@gmail.com>
parents: 138
diff changeset
12
162
61b76c7b656a dep/animia: add os x launchservices method
Paper <mrpapersonic@gmail.com>
parents: 158
diff changeset
13 include(CheckLanguage)
61b76c7b656a dep/animia: add os x launchservices method
Paper <mrpapersonic@gmail.com>
parents: 158
diff changeset
14
155
d2bbb5773616 dep/animia: add quartz backend for windows
Paper <mrpapersonic@gmail.com>
parents: 154
diff changeset
15 set(LIBRARIES)
158
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
16 set(INCLUDE_DIRS)
156
cdf79282d647 dep/animia: add VERY early x11 window stuff
Paper <mrpapersonic@gmail.com>
parents: 155
diff changeset
17 set(DEFINES)
cdf79282d647 dep/animia: add VERY early x11 window stuff
Paper <mrpapersonic@gmail.com>
parents: 155
diff changeset
18
158
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
19 if(APPLE)
156
cdf79282d647 dep/animia: add VERY early x11 window stuff
Paper <mrpapersonic@gmail.com>
parents: 155
diff changeset
20 list(APPEND DEFINES MACOSX)
137
69db40272acd dep/animia: [WIP] huge refactor
Paper <mrpapersonic@gmail.com>
parents: 84
diff changeset
21 list(APPEND SRC_FILES
153
bd439dd6ffc5 *: make win stuff actually work, rename bsd.cc to xnu.cc
Paper <mrpapersonic@gmail.com>
parents: 152
diff changeset
22 # xnu stuff
bd439dd6ffc5 *: make win stuff actually work, rename bsd.cc to xnu.cc
Paper <mrpapersonic@gmail.com>
parents: 152
diff changeset
23 src/fd/xnu.cc
163
44c5e6dd9488 dep/animia/osx: move GetProcessName to util/osx so we can use it in quartz
Paper <mrpapersonic@gmail.com>
parents: 162
diff changeset
24 src/util/osx.cc
137
69db40272acd dep/animia: [WIP] huge refactor
Paper <mrpapersonic@gmail.com>
parents: 84
diff changeset
25 )
162
61b76c7b656a dep/animia: add os x launchservices method
Paper <mrpapersonic@gmail.com>
parents: 158
diff changeset
26
61b76c7b656a dep/animia: add os x launchservices method
Paper <mrpapersonic@gmail.com>
parents: 158
diff changeset
27 include(CheckIncludeFile)
61b76c7b656a dep/animia: add os x launchservices method
Paper <mrpapersonic@gmail.com>
parents: 158
diff changeset
28 check_include_file("CoreFoundation/CoreFoundation.h" HAVE_COREFOUNDATION)
163
44c5e6dd9488 dep/animia/osx: move GetProcessName to util/osx so we can use it in quartz
Paper <mrpapersonic@gmail.com>
parents: 162
diff changeset
29 # If you're building on OS X, you most likely do have this file, but we
44c5e6dd9488 dep/animia/osx: move GetProcessName to util/osx so we can use it in quartz
Paper <mrpapersonic@gmail.com>
parents: 162
diff changeset
30 # check anyway.
193
0ad2507c3e60 dep/animia: cmake: check for the objc runtime library
Paper <mrpapersonic@gmail.com>
parents: 191
diff changeset
31 if(HAVE_COREFOUNDATION)
162
61b76c7b656a dep/animia: add os x launchservices method
Paper <mrpapersonic@gmail.com>
parents: 158
diff changeset
32 list(APPEND DEFINES HAVE_COREFOUNDATION)
193
0ad2507c3e60 dep/animia: cmake: check for the objc runtime library
Paper <mrpapersonic@gmail.com>
parents: 191
diff changeset
33 find_library(OBJC_LIBRARY objc)
0ad2507c3e60 dep/animia: cmake: check for the objc runtime library
Paper <mrpapersonic@gmail.com>
parents: 191
diff changeset
34
0ad2507c3e60 dep/animia: cmake: check for the objc runtime library
Paper <mrpapersonic@gmail.com>
parents: 191
diff changeset
35 if(NOT OBJC_LIBRARY)
0ad2507c3e60 dep/animia: cmake: check for the objc runtime library
Paper <mrpapersonic@gmail.com>
parents: 191
diff changeset
36 message(STATUS "Found CoreFoundation/CoreFoundation.h, but not the Objective-C runtime. How?")
0ad2507c3e60 dep/animia: cmake: check for the objc runtime library
Paper <mrpapersonic@gmail.com>
parents: 191
diff changeset
37 endif()
0ad2507c3e60 dep/animia: cmake: check for the objc runtime library
Paper <mrpapersonic@gmail.com>
parents: 191
diff changeset
38
189
649786bae914 *: etc. code cleanup
Paper <mrpapersonic@gmail.com>
parents: 182
diff changeset
39 list(APPEND SRC_FILES src/win/quartz.cc)
182
c413e475f496 dep/animia: various stylistic changes
Paper <mrpapersonic@gmail.com>
parents: 169
diff changeset
40
191
0fc126d52de4 animia: multiple stylistic choices
Paper <mrpapersonic@gmail.com>
parents: 189
diff changeset
41 find_library(FOUNDATION_LIBRARY Foundation)
189
649786bae914 *: etc. code cleanup
Paper <mrpapersonic@gmail.com>
parents: 182
diff changeset
42 find_library(COREGRAPHICS_LIBRARY CoreGraphics)
649786bae914 *: etc. code cleanup
Paper <mrpapersonic@gmail.com>
parents: 182
diff changeset
43 find_library(APPKIT_LIBRARY AppKit)
193
0ad2507c3e60 dep/animia: cmake: check for the objc runtime library
Paper <mrpapersonic@gmail.com>
parents: 191
diff changeset
44 list(APPEND LIBRARIES ${FOUNDATION_LIBRARY} ${COREGRAPHICS_LIBRARY} ${APPKIT_LIBRARY} ${OBJC_LIBRARY})
0ad2507c3e60 dep/animia: cmake: check for the objc runtime library
Paper <mrpapersonic@gmail.com>
parents: 191
diff changeset
45 else() # NOT HAVE_COREFOUNDATION
182
c413e475f496 dep/animia: various stylistic changes
Paper <mrpapersonic@gmail.com>
parents: 169
diff changeset
46 message(STATUS "You don't have Core Foundation. How? What kind of voodoo magic did you do to cause this?")
c413e475f496 dep/animia: various stylistic changes
Paper <mrpapersonic@gmail.com>
parents: 169
diff changeset
47 message(WARNING "LaunchServices support will not be compiled.")
193
0ad2507c3e60 dep/animia: cmake: check for the objc runtime library
Paper <mrpapersonic@gmail.com>
parents: 191
diff changeset
48 endif() # HAVE_COREFOUNDATION
56
6ff7aabeb9d7 deps: add animia for open files detection
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
49 elseif(WIN32)
156
cdf79282d647 dep/animia: add VERY early x11 window stuff
Paper <mrpapersonic@gmail.com>
parents: 155
diff changeset
50 list(APPEND DEFINES WIN32)
137
69db40272acd dep/animia: [WIP] huge refactor
Paper <mrpapersonic@gmail.com>
parents: 84
diff changeset
51 list(APPEND SRC_FILES
69db40272acd dep/animia: [WIP] huge refactor
Paper <mrpapersonic@gmail.com>
parents: 84
diff changeset
52 # win32
138
28842a8d0c6b dep/animia: huge refactor (again...)
Paper <mrpapersonic@gmail.com>
parents: 137
diff changeset
53 src/fd/win32.cc
152
8700806c2cc2 dep/animia: awesome new breaking changes!
Paper <mrpapersonic@gmail.com>
parents: 146
diff changeset
54 src/win/win32.cc
8700806c2cc2 dep/animia: awesome new breaking changes!
Paper <mrpapersonic@gmail.com>
parents: 146
diff changeset
55 src/util/win32.cc
8700806c2cc2 dep/animia: awesome new breaking changes!
Paper <mrpapersonic@gmail.com>
parents: 146
diff changeset
56 )
158
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
57 else() # NOT WIN32 AND NOT APPLE
169
e44b7c428d7c dep/animia: add libkvm method (UNTESTED)
Paper <mrpapersonic@gmail.com>
parents: 166
diff changeset
58 find_library(LIBUTIL_LIBRARY util)
e44b7c428d7c dep/animia: add libkvm method (UNTESTED)
Paper <mrpapersonic@gmail.com>
parents: 166
diff changeset
59 find_library(LIBKVM_LIBRARY kvm)
e44b7c428d7c dep/animia: add libkvm method (UNTESTED)
Paper <mrpapersonic@gmail.com>
parents: 166
diff changeset
60
158
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
61 if(LINUX)
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
62 list(APPEND DEFINES LINUX)
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
63 list(APPEND SRC_FILES
166
54c5d80a737e dep/animia: add libutil method
paper@DavesDouble.local
parents: 163
diff changeset
64 src/fd/proc.cc
158
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
65 )
169
e44b7c428d7c dep/animia: add libkvm method (UNTESTED)
Paper <mrpapersonic@gmail.com>
parents: 166
diff changeset
66 elseif(LIBUTIL_LIBRARY) # FreeBSD's libutil
166
54c5d80a737e dep/animia: add libutil method
paper@DavesDouble.local
parents: 163
diff changeset
67 get_filename_component(LIBUTIL_DIR ${LIBUTIL_LIBRARY} DIRECTORY)
54c5d80a737e dep/animia: add libutil method
paper@DavesDouble.local
parents: 163
diff changeset
68
54c5d80a737e dep/animia: add libutil method
paper@DavesDouble.local
parents: 163
diff changeset
69 include(CheckLibraryExists)
54c5d80a737e dep/animia: add libutil method
paper@DavesDouble.local
parents: 163
diff changeset
70 check_library_exists(util kinfo_getfile ${LIBUTIL_DIR} LIBUTIL_GOOD)
54c5d80a737e dep/animia: add libutil method
paper@DavesDouble.local
parents: 163
diff changeset
71
54c5d80a737e dep/animia: add libutil method
paper@DavesDouble.local
parents: 163
diff changeset
72 if(LIBUTIL_GOOD)
54c5d80a737e dep/animia: add libutil method
paper@DavesDouble.local
parents: 163
diff changeset
73 list(APPEND LIBRARIES ${LIBUTIL_LIBRARY})
54c5d80a737e dep/animia: add libutil method
paper@DavesDouble.local
parents: 163
diff changeset
74 list(APPEND DEFINES LIBUTIL)
54c5d80a737e dep/animia: add libutil method
paper@DavesDouble.local
parents: 163
diff changeset
75 list(APPEND SRC_FILES src/fd/libutil.cc)
54c5d80a737e dep/animia: add libutil method
paper@DavesDouble.local
parents: 163
diff changeset
76 endif() # LIBUTIL_GOOD
169
e44b7c428d7c dep/animia: add libkvm method (UNTESTED)
Paper <mrpapersonic@gmail.com>
parents: 166
diff changeset
77 elseif(LIBKVM_LIBRARY) # BSD libkvm
e44b7c428d7c dep/animia: add libkvm method (UNTESTED)
Paper <mrpapersonic@gmail.com>
parents: 166
diff changeset
78 get_filename_component(LIBKVM_DIR ${LIBKVM_LIBRARY} DIRECTORY)
e44b7c428d7c dep/animia: add libkvm method (UNTESTED)
Paper <mrpapersonic@gmail.com>
parents: 166
diff changeset
79
e44b7c428d7c dep/animia: add libkvm method (UNTESTED)
Paper <mrpapersonic@gmail.com>
parents: 166
diff changeset
80 include(CheckLibraryExists)
e44b7c428d7c dep/animia: add libkvm method (UNTESTED)
Paper <mrpapersonic@gmail.com>
parents: 166
diff changeset
81 check_library_exists(kvm kvm_getprocs ${LIBKVM_DIR} LIBKVM_GOOD)
e44b7c428d7c dep/animia: add libkvm method (UNTESTED)
Paper <mrpapersonic@gmail.com>
parents: 166
diff changeset
82
e44b7c428d7c dep/animia: add libkvm method (UNTESTED)
Paper <mrpapersonic@gmail.com>
parents: 166
diff changeset
83 if(LIBKVM_GOOD)
e44b7c428d7c dep/animia: add libkvm method (UNTESTED)
Paper <mrpapersonic@gmail.com>
parents: 166
diff changeset
84 list(APPEND LIBRARIES ${LIBKVM_LIBRARY})
e44b7c428d7c dep/animia: add libkvm method (UNTESTED)
Paper <mrpapersonic@gmail.com>
parents: 166
diff changeset
85 list(APPEND DEFINES LIBKVM)
e44b7c428d7c dep/animia: add libkvm method (UNTESTED)
Paper <mrpapersonic@gmail.com>
parents: 166
diff changeset
86 list(APPEND SRC_FILES src/fd/libkvm.cc)
e44b7c428d7c dep/animia: add libkvm method (UNTESTED)
Paper <mrpapersonic@gmail.com>
parents: 166
diff changeset
87 endif() # LIBUTIL_GOOD
e44b7c428d7c dep/animia: add libkvm method (UNTESTED)
Paper <mrpapersonic@gmail.com>
parents: 166
diff changeset
88 endif() # LINUX
166
54c5d80a737e dep/animia: add libutil method
paper@DavesDouble.local
parents: 163
diff changeset
89
158
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
90 # X11
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
91 find_package(X11 COMPONENTS X11)
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
92 if(X11_FOUND)
156
cdf79282d647 dep/animia: add VERY early x11 window stuff
Paper <mrpapersonic@gmail.com>
parents: 155
diff changeset
93 list(APPEND DEFINES X11)
cdf79282d647 dep/animia: add VERY early x11 window stuff
Paper <mrpapersonic@gmail.com>
parents: 155
diff changeset
94 list(APPEND SRC_FILES
cdf79282d647 dep/animia: add VERY early x11 window stuff
Paper <mrpapersonic@gmail.com>
parents: 155
diff changeset
95 src/win/x11.cc
cdf79282d647 dep/animia: add VERY early x11 window stuff
Paper <mrpapersonic@gmail.com>
parents: 155
diff changeset
96 )
cdf79282d647 dep/animia: add VERY early x11 window stuff
Paper <mrpapersonic@gmail.com>
parents: 155
diff changeset
97 list(APPEND INCLUDE_DIRS
158
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
98 ${X11_INCLUDE_DIRS}
156
cdf79282d647 dep/animia: add VERY early x11 window stuff
Paper <mrpapersonic@gmail.com>
parents: 155
diff changeset
99 )
cdf79282d647 dep/animia: add VERY early x11 window stuff
Paper <mrpapersonic@gmail.com>
parents: 155
diff changeset
100 list(APPEND LIBRARIES
cdf79282d647 dep/animia: add VERY early x11 window stuff
Paper <mrpapersonic@gmail.com>
parents: 155
diff changeset
101 ${X11_LIBRARIES}
cdf79282d647 dep/animia: add VERY early x11 window stuff
Paper <mrpapersonic@gmail.com>
parents: 155
diff changeset
102 )
158
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
103 else() # NOT X11_FOUND
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
104 # For some systems, i.e. Debian, FindX11 fails to find X11, so we have
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
105 # to use pkg_config as a fallback
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
106 find_package(PkgConfig)
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
107 if(PKG_CONFIG_FOUND)
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
108 pkg_check_modules(X11 x11)
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
109 if(X11_FOUND)
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
110 list(APPEND DEFINES X11)
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
111 list(APPEND SRC_FILES
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
112 src/win/x11.cc
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
113 )
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
114 list(APPEND INCLUDE_DIRS
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
115 ${X11_INCLUDE_DIRS}
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
116 )
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
117 list(APPEND LIBRARIES
166
54c5d80a737e dep/animia: add libutil method
paper@DavesDouble.local
parents: 163
diff changeset
118 ${X11_LINK_LIBRARIES}
158
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
119 )
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
120 endif() # X11_FOUND
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
121 endif() # PKG_CONFIG_FOUND
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
122 endif() # X11_FOUND
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
123 endif() # WIN32 AND APPLE
152
8700806c2cc2 dep/animia: awesome new breaking changes!
Paper <mrpapersonic@gmail.com>
parents: 146
diff changeset
124
56
6ff7aabeb9d7 deps: add animia for open files detection
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
125 add_library(animia SHARED ${SRC_FILES})
78
1ce00c1c8ddc dep/animia: update to upstream
Paper <mrpapersonic@gmail.com>
parents: 64
diff changeset
126 set_target_properties(animia PROPERTIES
137
69db40272acd dep/animia: [WIP] huge refactor
Paper <mrpapersonic@gmail.com>
parents: 84
diff changeset
127 PUBLIC_HEADER include/animia.h
69db40272acd dep/animia: [WIP] huge refactor
Paper <mrpapersonic@gmail.com>
parents: 84
diff changeset
128 CXX_STANDARD 17
69db40272acd dep/animia: [WIP] huge refactor
Paper <mrpapersonic@gmail.com>
parents: 84
diff changeset
129 )
139
478f3b366199 dep/animia: separate lots of things, use base class for OS stuff
Paper <mrpapersonic@gmail.com>
parents: 138
diff changeset
130
158
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
131 target_compile_definitions(animia PUBLIC ${DEFINES})
80d6b28eb29f dep/animia: fix most X11 stuff
Paper <mrpapersonic@gmail.com>
parents: 156
diff changeset
132 target_include_directories(animia PRIVATE include PUBLIC ${INCLUDE_DIRS})
155
d2bbb5773616 dep/animia: add quartz backend for windows
Paper <mrpapersonic@gmail.com>
parents: 154
diff changeset
133 target_link_libraries(animia PUBLIC ${LIBRARIES})