diff dep/animone/CMakeLists.txt @ 343:1faa72660932

*: transfer back to cmake from autotools autotools just made lots of things more complicated than they should have and many things broke (i.e. translations)
author Paper <paper@paper.us.eu.org>
date Thu, 20 Jun 2024 05:56:06 -0400
parents
children 886f66775f31
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dep/animone/CMakeLists.txt	Thu Jun 20 05:56:06 2024 -0400
@@ -0,0 +1,100 @@
+cmake_minimum_required(VERSION 3.16)
+project(animone LANGUAGES CXX)
+set(SRC_FILES
+	# any non-platform-specific files go here
+	src/animone.cc
+	src/player.cc
+	src/util.cc
+	src/strategist.cc
+	src/fd.cc
+	src/a11y.cc
+	src/win.cc
+)
+
+set(LIBRARIES)
+set(INCLUDE_DIRS)
+set(DEFINES)
+
+list(APPEND DEFINES DLL_EXPORT)
+
+if(APPLE)
+	list(APPEND DEFINES USE_MACOSX)
+	list(APPEND SRC_FILES
+		# xnu stuff
+		src/fd/xnu.cc
+		src/win/quartz.cc
+	)
+
+	# ...
+	find_library(OBJC_LIBRARY objc REQUIRED)
+	find_library(FOUNDATION_LIBRARY Foundation REQUIRED)
+	find_library(COREGRAPHICS_LIBRARY CoreGraphics REQUIRED)
+	find_library(APPLICATIONSERVICES_LIBRARY ApplicationServices REQUIRED)
+	list(APPEND LIBRARIES ${FOUNDATION_LIBRARY} ${COREGRAPHICS_LIBRARY} ${APPLICATIONSERVICES_LIBRARY} ${OBJC_LIBRARY})
+elseif(WIN32)
+	list(APPEND DEFINES USE_WIN32)
+	list(APPEND SRC_FILES
+		# win32
+		src/a11y/win32.cc
+		src/fd/win32.cc
+		src/win/win32.cc
+		src/util/win32.cc
+	)
+
+	find_library(OLE32_LIB ole32 REQUIRED)
+	find_library(OLEAUT32_LIB oleaut32 REQUIRED)
+	list(APPEND LIBRARIES ${OLE32_LIB} ${OLEAUT32_LIB})
+else() # NOT WIN32 AND NOT APPLE
+	find_library(LIBUTIL_LIB util)
+	find_library(LIBKVM_LIB kvm)
+
+	if(LINUX)
+		list(APPEND DEFINES USE_LINUX)
+		list(APPEND SRC_FILES src/fd/proc.cc)
+	elseif(LIBUTIL_LIBRARY) # FreeBSD
+		# stupid hackarounds
+		get_filename_component(LIBUTIL_DIR ${LIBUTIL_LIBRARY} DIRECTORY)
+
+		include(CheckLibraryExists)
+		check_library_exists(util kinfo_getfile ${LIBUTIL_DIR} LIBUTIL_GOOD)
+
+		if(LIBUTIL_GOOD)
+			list(APPEND DEFINES USE_FREEBSD)
+			list(APPEND LIBRARIES ${LIBUTIL_LIBRARY})
+			list(APPEND SRC_FILES src/fd/freebsd.cc)
+		endif() # LIBUTIL_GOOD
+	elseif(LIBKVM_LIBRARY) # OpenBSD
+		get_filename_component(LIBKVM_DIR ${LIBKVM_LIBRARY} DIRECTORY)
+
+		include(CheckLibraryExists)
+		check_library_exists(kvm kvm_getfiles ${LIBKVM_DIR} LIBKVM_HAS_GETFILES)
+
+		if(LIBKVM_HAS_GETFILES)
+			list(APPEND DEFINES USE_OPENBSD)
+			list(APPEND LIBRARIES ${LIBKVM_LIBRARY})
+			list(APPEND SRC_FILES src/fd/openbsd.cc)
+		endif() # LIBKVM_HAS_GETFILES
+	endif() # LINUX
+endif() # WIN32 AND APPLE
+
+# X11
+find_package(PkgConfig)
+if(PKG_CONFIG_FOUND)
+	pkg_check_modules(XCB xcb xcb-res)
+	if (XCB_FOUND)
+		list(APPEND DEFINES USE_X11)
+		list(APPEND LIBRARIES ${XCB_LINK_LIBRARIES})
+		list(APPEND INCLUDE_DIRS ${XCB_INCLUDE_DIRS})
+		list(APPEND SRC_FILES src/win/x11.cc)
+	endif() # XCB_FOUND
+endif() # PKG_CONFIG_FOUND
+
+add_library(animia SHARED ${SRC_FILES})
+set_target_properties(animia PROPERTIES
+	PUBLIC_HEADER include/animia.h
+	CXX_STANDARD 17
+)
+
+target_compile_definitions(animia PRIVATE ${DEFINES})
+target_include_directories(animia PUBLIC include PRIVATE ${INCLUDE_DIRS})
+target_link_libraries(animia PUBLIC ${LIBRARIES})