mirror of
https://gitlab.freedesktop.org/xorg/lib/libxcursor.git
synced 2025-12-20 05:50:14 +01:00
248 lines
7.7 KiB
Meson
248 lines
7.7 KiB
Meson
|
|
# SPDX-License-Identifier: MIT
|
||
|
|
#
|
||
|
|
# Copyright (c) 2025, Oracle and/or its affiliates.
|
||
|
|
#
|
||
|
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||
|
|
# copy of this software and associated documentation files (the "Software"),
|
||
|
|
# to deal in the Software without restriction, including without limitation
|
||
|
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||
|
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||
|
|
# Software is furnished to do so, subject to the following conditions:
|
||
|
|
#
|
||
|
|
# The above copyright notice and this permission notice (including the next
|
||
|
|
# paragraph) shall be included in all copies or substantial portions of the
|
||
|
|
# Software.
|
||
|
|
#
|
||
|
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||
|
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||
|
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||
|
|
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||
|
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||
|
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||
|
|
# DEALINGS IN THE SOFTWARE.
|
||
|
|
#
|
||
|
|
|
||
|
|
#
|
||
|
|
# This is the package version number, not the shared library
|
||
|
|
# version. This version number will be substituted into Xcursor.h
|
||
|
|
#
|
||
|
|
project(
|
||
|
|
'libXcursor',
|
||
|
|
'c',
|
||
|
|
version: '1.2.3',
|
||
|
|
license: 'HPND-sell-variant',
|
||
|
|
license_files: 'COPYING',
|
||
|
|
meson_version: '>= 1.1.0',
|
||
|
|
)
|
||
|
|
|
||
|
|
cc = meson.get_compiler('c')
|
||
|
|
conf = configuration_data()
|
||
|
|
|
||
|
|
# Replaces AC_USE_SYSTEM_EXTENSIONS
|
||
|
|
if host_machine.system() == 'sunos'
|
||
|
|
system_extensions = '__EXTENSIONS__'
|
||
|
|
elif host_machine.system() == 'netbsd'
|
||
|
|
system_extensions = '_OPENBSD_SOURCE'
|
||
|
|
else
|
||
|
|
system_extensions = '_GNU_SOURCE'
|
||
|
|
endif
|
||
|
|
conf.set(system_extensions, 1,
|
||
|
|
description: 'Enable non-standardized system API extensions')
|
||
|
|
|
||
|
|
# Replacement for XORG_DEFAULT_OPTIONS
|
||
|
|
if cc.has_argument('-fno-strict-aliasing')
|
||
|
|
add_project_arguments('-fno-strict-aliasing', language: 'c')
|
||
|
|
endif
|
||
|
|
|
||
|
|
prog_sed = find_program('sed')
|
||
|
|
|
||
|
|
# Set library version for Xcursor.h from package version set above
|
||
|
|
xcursor_version = meson.project_version()
|
||
|
|
xcursor_vers_components = xcursor_version.split('.')
|
||
|
|
conf.set('XCURSOR_LIB_MAJOR', xcursor_vers_components[0],
|
||
|
|
description: 'Major version of libXcursor')
|
||
|
|
conf.set('XCURSOR_LIB_MINOR', xcursor_vers_components[1],
|
||
|
|
description: 'Minor version of libXcursor')
|
||
|
|
conf.set('XCURSOR_LIB_REVISION', xcursor_vers_components[2],
|
||
|
|
description: 'Micro revision of libXcursor')
|
||
|
|
# Temporary solution to allow building with either autoconf or meson
|
||
|
|
# during the transition period - can be replaced by configure_file()
|
||
|
|
# and use of '#mesondefine' when configure.ac is removed.
|
||
|
|
xcursor_h = custom_target(
|
||
|
|
input: 'include/X11/Xcursor/Xcursor.h.in',
|
||
|
|
output: 'Xcursor.h',
|
||
|
|
command: [
|
||
|
|
prog_sed,
|
||
|
|
'-e', f's/#undef XCURSOR_LIB_MAJOR/#define XCURSOR_LIB_MAJOR @0@/'.format(conf.get('XCURSOR_LIB_MAJOR')),
|
||
|
|
'-e', f's/#undef XCURSOR_LIB_MINOR/#define XCURSOR_LIB_MINOR @0@/'.format(conf.get('XCURSOR_LIB_MINOR')),
|
||
|
|
'-e', f's/#undef XCURSOR_LIB_REVISION/#define XCURSOR_LIB_REVISION @0@/'.format(conf.get('XCURSOR_LIB_REVISION')),
|
||
|
|
'@INPUT@',
|
||
|
|
],
|
||
|
|
capture: true,
|
||
|
|
install: true,
|
||
|
|
install_dir: get_option('includedir') / 'X11/Xcursor'
|
||
|
|
)
|
||
|
|
|
||
|
|
icondir = get_option('icondir')
|
||
|
|
if icondir == 'auto'
|
||
|
|
icondir = get_option('prefix') / get_option('datadir') / 'icons'
|
||
|
|
endif
|
||
|
|
conf.set_quoted('ICONDIR', icondir, description: 'Default icon directory')
|
||
|
|
|
||
|
|
cursorpath = get_option('cursorpath')
|
||
|
|
if cursorpath == 'auto'
|
||
|
|
cursordirs = [
|
||
|
|
'~/.local/share/icons',
|
||
|
|
'~/.icons',
|
||
|
|
get_option('prefix') / get_option('datadir') / 'icons',
|
||
|
|
get_option('prefix') / get_option('datadir') / 'pixmaps'
|
||
|
|
]
|
||
|
|
if not cursordirs.contains(icondir)
|
||
|
|
cursordirs += icondir
|
||
|
|
endif
|
||
|
|
cursorpath = ':'.join(cursordirs)
|
||
|
|
endif
|
||
|
|
conf.set_quoted('XCURSORPATH', cursorpath,
|
||
|
|
description: 'Default search path for cursors')
|
||
|
|
|
||
|
|
# Obtain compiler/linker options for dependencies
|
||
|
|
dep_xrender = dependency('xrender', required: true, version: '>= 0.8.2')
|
||
|
|
dep_libxfixes = dependency('xfixes', required: true)
|
||
|
|
dep_libx11 = dependency('x11', required: true)
|
||
|
|
dep_fixesproto = dependency('fixesproto', required: true)
|
||
|
|
|
||
|
|
conf.set('HAVE_XFIXES', 1, description: 'Define to 1 if you have Xfixes')
|
||
|
|
|
||
|
|
config_h = configure_file(
|
||
|
|
configuration : conf,
|
||
|
|
output : 'config.h',
|
||
|
|
)
|
||
|
|
add_project_arguments('-DHAVE_CONFIG_H', language: 'c')
|
||
|
|
|
||
|
|
libXcursor_sources = [
|
||
|
|
config_h,
|
||
|
|
xcursor_h,
|
||
|
|
'src/xcursorint.h',
|
||
|
|
'src/cursor.c',
|
||
|
|
'src/display.c',
|
||
|
|
'src/file.c',
|
||
|
|
'src/library.c',
|
||
|
|
'src/xlib.c'
|
||
|
|
]
|
||
|
|
|
||
|
|
lib = library(
|
||
|
|
'Xcursor',
|
||
|
|
libXcursor_sources,
|
||
|
|
include_directories: 'include',
|
||
|
|
dependencies: [dep_xrender, dep_libxfixes, dep_libx11, dep_fixesproto],
|
||
|
|
version: '1.0.2',
|
||
|
|
install: true,
|
||
|
|
)
|
||
|
|
|
||
|
|
datarootdir = get_option('prefix') / get_option('datadir')
|
||
|
|
pc_datarootdir = datarootdir.replace(get_option('prefix'), '${prefix}')
|
||
|
|
pc_icondir = icondir.replace(datarootdir, '${datarootdir}')
|
||
|
|
pc_icondir = pc_icondir.replace(get_option('prefix'), '${prefix}')
|
||
|
|
|
||
|
|
pkg = import('pkgconfig')
|
||
|
|
pkg.generate(
|
||
|
|
name: 'Xcursor',
|
||
|
|
description: 'X Cursor Library',
|
||
|
|
filebase: 'xcursor',
|
||
|
|
libraries: '-L${libdir} -lXcursor',
|
||
|
|
requires: ['xproto'],
|
||
|
|
requires_private: ['x11', 'xrender', 'xfixes'],
|
||
|
|
variables: [
|
||
|
|
'datarootdir=' + pc_datarootdir,
|
||
|
|
'icondir=' + pc_icondir,
|
||
|
|
],
|
||
|
|
url: 'https://gitlab.freedesktop.org/xorg/lib/libxcursor/'
|
||
|
|
)
|
||
|
|
|
||
|
|
prog_sed = find_program('sed')
|
||
|
|
|
||
|
|
libXcursor_manpages = [
|
||
|
|
'Xcursor',
|
||
|
|
'XcursorAnimateCreate',
|
||
|
|
'XcursorAnimateDestroy',
|
||
|
|
'XcursorAnimateNext',
|
||
|
|
'XcursorCommentCreate',
|
||
|
|
'XcursorCommentDestroy',
|
||
|
|
'XcursorCommentsCreate',
|
||
|
|
'XcursorCommentsDestroy',
|
||
|
|
'XcursorCursorsCreate',
|
||
|
|
'XcursorCursorsDestroy',
|
||
|
|
'XcursorFileLoad',
|
||
|
|
'XcursorFileLoadAllImages',
|
||
|
|
'XcursorFileLoadImage',
|
||
|
|
'XcursorFileLoadImages',
|
||
|
|
'XcursorFileSave',
|
||
|
|
'XcursorFileSaveImages',
|
||
|
|
'XcursorFilenameLoad',
|
||
|
|
'XcursorFilenameLoadAllImages',
|
||
|
|
'XcursorFilenameLoadCursor',
|
||
|
|
'XcursorFilenameLoadCursors',
|
||
|
|
'XcursorFilenameLoadImage',
|
||
|
|
'XcursorFilenameLoadImages',
|
||
|
|
'XcursorFilenameSave',
|
||
|
|
'XcursorFilenameSaveImages',
|
||
|
|
'XcursorGetDefaultSize',
|
||
|
|
'XcursorGetTheme',
|
||
|
|
'XcursorGetThemeCore',
|
||
|
|
'XcursorImageCreate',
|
||
|
|
'XcursorImageDestroy',
|
||
|
|
'XcursorImageHash',
|
||
|
|
'XcursorImageLoadCursor',
|
||
|
|
'XcursorImagesCreate',
|
||
|
|
'XcursorImagesDestroy',
|
||
|
|
'XcursorImagesLoadCursor',
|
||
|
|
'XcursorImagesLoadCursors',
|
||
|
|
'XcursorImagesSetName',
|
||
|
|
'XcursorLibraryLoadCursor',
|
||
|
|
'XcursorLibraryLoadCursors',
|
||
|
|
'XcursorLibraryLoadImage',
|
||
|
|
'XcursorLibraryLoadImages',
|
||
|
|
'XcursorLibraryPath',
|
||
|
|
'XcursorLibraryShape',
|
||
|
|
'XcursorNoticeCreateBitmap',
|
||
|
|
'XcursorNoticePutBitmap',
|
||
|
|
'XcursorSetDefaultSize',
|
||
|
|
'XcursorSetTheme',
|
||
|
|
'XcursorSetThemeCore',
|
||
|
|
'XcursorShapeLoadCursor',
|
||
|
|
'XcursorShapeLoadCursors',
|
||
|
|
'XcursorShapeLoadImage',
|
||
|
|
'XcursorShapeLoadImages',
|
||
|
|
'XcursorSupportsARGB',
|
||
|
|
'XcursorSupportsAnim',
|
||
|
|
'XcursorTryShapeBitmapCursor',
|
||
|
|
'XcursorTryShapeCursor',
|
||
|
|
'XcursorXcFileLoad',
|
||
|
|
'XcursorXcFileLoadAllImages',
|
||
|
|
'XcursorXcFileLoadImage',
|
||
|
|
'XcursorXcFileLoadImages',
|
||
|
|
'XcursorXcFileSave'
|
||
|
|
]
|
||
|
|
|
||
|
|
# Change ':' to a comma and a space to help path formatting
|
||
|
|
comma_cursorpath = cursorpath.replace(':', ', ')
|
||
|
|
|
||
|
|
lib_man_suffix = get_option('lib_man_suffix')
|
||
|
|
foreach man: libXcursor_manpages
|
||
|
|
custom_target(
|
||
|
|
f'@man@.man',
|
||
|
|
input: f'man/@man@.man',
|
||
|
|
output: f'@man@.@lib_man_suffix@',
|
||
|
|
command: [
|
||
|
|
prog_sed,
|
||
|
|
'-e', 's/__xorgversion__/"libXcursor @0@" "X Version 11"/'.format(meson.project_version()),
|
||
|
|
'-e', f's/__libmansuffix__/@lib_man_suffix@/g',
|
||
|
|
'-e', 's%__XCURSORPATH__%@0@%g'.format(comma_cursorpath),
|
||
|
|
'@INPUT@',
|
||
|
|
],
|
||
|
|
capture: true,
|
||
|
|
install: true,
|
||
|
|
install_dir: get_option('prefix') / get_option('mandir') / f'man@lib_man_suffix@',
|
||
|
|
)
|
||
|
|
endforeach
|