head	1.1;
branch	1.1.1;
access;
symbols
	netbsd-11-0-RC5:1.1.1.2
	netbsd-11-0-RC4:1.1.1.2
	netbsd-11-0-RC3:1.1.1.2
	netbsd-11-0-RC2:1.1.1.2
	netbsd-11-0-RC1:1.1.1.2
	netbsd-11:1.1.1.2.0.4
	netbsd-11-base:1.1.1.2
	netbsd-10-1-RELEASE:1.1.1.2
	netbsd-9-4-RELEASE:1.1.1.1
	netbsd-10-0-RELEASE:1.1.1.2
	netbsd-10-0-RC6:1.1.1.2
	netbsd-10-0-RC5:1.1.1.2
	netbsd-10-0-RC4:1.1.1.2
	netbsd-10-0-RC3:1.1.1.2
	netbsd-10-0-RC2:1.1.1.2
	netbsd-10-0-RC1:1.1.1.2
	netbsd-10:1.1.1.2.0.2
	netbsd-10-base:1.1.1.2
	netbsd-9-3-RELEASE:1.1.1.1
	netbsd-9-2-RELEASE:1.1.1.1
	libepoxy-1-5-4:1.1.1.2
	netbsd-9-1-RELEASE:1.1.1.1
	netbsd-9-0-RELEASE:1.1.1.1
	netbsd-9-0-RC2:1.1.1.1
	netbsd-9-0-RC1:1.1.1.1
	netbsd-9:1.1.1.1.0.2
	netbsd-9-base:1.1.1.1
	libepoxy-1-4-3:1.1.1.1
	xorg:1.1.1;
locks; strict;
comment	@# @;


1.1
date	2019.07.09.21.37.36;	author mrg;	state Exp;
branches
	1.1.1.1;
next	;
commitid	sFFhDQFfBjqzPpuB;

1.1.1.1
date	2019.07.09.21.37.36;	author mrg;	state Exp;
branches;
next	1.1.1.2;
commitid	sFFhDQFfBjqzPpuB;

1.1.1.2
date	2020.11.02.04.43.17;	author mrg;	state Exp;
branches;
next	;
commitid	3A3JOVjyohm1JguC;


desc
@@


1.1
log
@Initial revision
@
text
@project('libepoxy', 'c', version: '1.4.3',
        default_options: [
          'buildtype=debugoptimized',
          'c_std=gnu99',
          'warning_level=1',
        ],
        license: 'MIT',
        meson_version: '>= 0.39.1')

epoxy_version = meson.project_version().split('.')
epoxy_major_version = epoxy_version[0].to_int()
epoxy_minor_version = epoxy_version[1].to_int()
epoxy_micro_version = epoxy_version[2].to_int()

epoxy_prefix = get_option('prefix')
epoxy_libdir = join_paths(epoxy_prefix, get_option('libdir'))
epoxy_datadir = join_paths(epoxy_prefix, get_option('datadir'))
epoxy_includedir = join_paths(epoxy_prefix, get_option('includedir'))

cc = meson.get_compiler('c')
host_system = host_machine.system()

conf = configuration_data()
conf.set_quoted('PACKAGE_NAME', meson.project_name())
conf.set_quoted('PACKAGE_VERSION', meson.project_version())
conf.set_quoted('PACKAGE_STRING', '@@0@@-@@1@@'.format(meson.project_name(), meson.project_version()))
conf.set_quoted('PACKAGE_DATADIR', join_paths(get_option('prefix'), get_option('datadir')))
conf.set_quoted('PACKAGE_LIBDIR', join_paths(get_option('prefix'), get_option('libdir')))
conf.set_quoted('PACKAGE_LOCALEDIR', join_paths(get_option('prefix'), get_option('datadir'), 'locale'))
conf.set_quoted('PACKAGE_LIBEXECDIR', join_paths(get_option('prefix'), get_option('libexecdir')))
conf.set('HAVE_KHRPLATFORM_H', cc.has_header('KHR/khrplatform.h', required: false))

# GLX can be used on different platforms, so we expose a
# configure time switch to enable or disable it; in case
# the "auto" default value is set, we only enable GLX
# support on Linux and Unix
enable_glx = get_option('enable-glx')
if enable_glx == 'auto'
  if host_system == 'windows'
    build_glx = false
  elif host_system == 'darwin'
    build_glx = false
  elif host_system == 'android'
    build_glx = false
  elif host_system == 'haiku'
    build_glx = false
  else
    build_glx = true
  endif
elif enable_glx == 'yes'
  build_glx = true
elif enable_glx == 'no'
  build_glx = false
endif

enable_egl = get_option('enable-egl')
if enable_egl == 'auto'
  if host_system == 'windows'
    build_egl = false
  elif host_system == 'darwin'
    build_egl = false
  elif host_system == 'android'
    build_egl = true
  else
    build_egl = true
  endif
elif enable_egl == 'yes'
  build_egl = true
elif enable_egl == 'no'
  build_egl = false
endif

# The remaining platform specific API for GL/GLES are enabled
# depending on the platform we're building for
if host_system == 'windows'
  build_apple = false
  build_wgl = true
  has_znow = true
elif host_system == 'darwin'
  build_apple = true
  build_wgl = false
  has_znow = false
else
  build_apple = false
  build_wgl = false
  has_znow = true
endif

conf.set10('ENABLE_GLX', build_glx)
conf.set10('ENABLE_EGL', build_egl)

# Compiler flags, taken from the Xorg macros
if cc.get_id() == 'msvc'
  # Compiler options taken from msvc_recommended_pragmas.h
  # in GLib, based on _Win32_Programming_ by Rector and Newcomer
  test_cflags = [
    '-we4002', # too many actual parameters for macro
    '-we4003', # not enough actual parameters for macro
    '-w14010', # single-line comment contains line-continuation character
    '-we4013', # 'function' undefined; assuming extern returning int
    '-w14016', # no function return type; using int as default
    '-we4020', # too many actual parameters
    '-we4021', # too few actual parameters
    '-we4027', # function declared without formal parameter list
    '-we4029', # declared formal parameter list different from definition
    '-we4033', # 'function' must return a value
    '-we4035', # 'function' : no return value
    '-we4045', # array bounds overflow
    '-we4047', # different levels of indirection
    '-we4049', # terminating line number emission
    '-we4053', # an expression of type void was used as an operand
    '-we4071', # no function prototype given
    '-we4819', # the file contains a character that cannot be represented in the current code page
  ]
elif cc.get_id() == 'gcc' or cc.get_id() == 'clang'
  test_cflags = [
    '-Wpointer-arith',
    '-Wmissing-declarations',
    '-Wformat=2',
    '-Wstrict-prototypes',
    '-Wmissing-prototypes',
    '-Wnested-externs',
    '-Wbad-function-cast',
    '-Wold-style-definition',
    '-Wdeclaration-after-statement',
    '-Wunused',
    '-Wuninitialized',
    '-Wshadow',
    '-Wmissing-noreturn',
    '-Wmissing-format-attribute',
    '-Wredundant-decls',
    '-Wlogical-op',
    '-Werror=implicit',
    '-Werror=nonnull',
    '-Werror=init-self',
    '-Werror=main',
    '-Werror=missing-braces',
    '-Werror=sequence-point',
    '-Werror=return-type',
    '-Werror=trigraphs',
    '-Werror=array-bounds',
    '-Werror=write-strings',
    '-Werror=address',
    '-Werror=int-to-pointer-cast',
    '-Werror=pointer-to-int-cast',
    '-fno-strict-aliasing',
    '-Wno-int-conversion',
  ]
else
  test_cflags = []
endif

common_cflags = []
foreach cflag: test_cflags
  if cc.has_argument(cflag)
    common_cflags += cflag
  endif
endforeach

libtype = get_option('default_library')

# Visibility compiler flags; we only use this for shared libraries
if libtype == 'shared'
  visibility_cflags = []
  if host_system == 'windows'
    conf.set('DLL_EXPORT', true)
    conf.set('EPOXY_PUBLIC', '__declspec(dllexport) extern')
    if cc.get_id() != 'msvc'
      visibility_cflags += [ '-fvisibility=hidden' ]
    endif
  else
    conf.set('EPOXY_PUBLIC', '__attribute__((visibility("default"))) extern')
    visibility_cflags += [ '-fvisibility=hidden' ]
  endif
endif

# The inline keyword is available only for C++ in MSVC.
# So we need to use Microsoft specific __inline.
if host_system == 'windows'
  if cc.get_id() == 'msvc'
    conf.set('inline', '__inline')
  endif
endif

# Dependencies
dl_dep = cc.find_library('dl', required: false)
gl_dep = dependency('gl', required: false)
egl_dep = dependency('egl', required: false)

# Optional dependencies for tests
x11_dep = dependency('x11', required: false)

# GLES v2 and v1 may have pkg-config files, courtesy of downstream
# packagers; let's check those first, and fall back to find_library()
# if we fail
gles2_dep = dependency('glesv2', required: false)
if not gles2_dep.found()
  gles2_dep = cc.find_library('libGLESv2', required: false)
endif

gles1_dep = dependency('glesv1_cm', required: false)
if not gles1_dep.found()
  gles1_dep = cc.find_library('libGLESv1_CM', required: false)
endif

# On windows, the DLL has to have all of its functions
# resolved at link time, so we have to link directly aginst
# opengl32.  But that's the only GL provider, anyway.
if host_system == 'windows'
  opengl32_dep = cc.find_library('opengl32', required: true)

  # When building against static libraries, we need to control
  # the order of the dependencies, and gdi32 provides symbols
  # needed when using opengl32, like SetPixelFormat and
  # ChoosePixelFormat. This is mostly a workaround for older
  # versions of Meson.
  gdi32_dep = cc.find_library('gdi32', required: true)
endif

# PkgConfig file
pkgconf = configuration_data()
pkgconf.set('prefix', epoxy_prefix)
pkgconf.set('exec_prefix', epoxy_prefix)
pkgconf.set('libdir', epoxy_libdir)
pkgconf.set('includedir', epoxy_includedir)
pkgconf.set10('epoxy_has_glx', build_glx)
pkgconf.set10('epoxy_has_egl', build_egl)
pkgconf.set10('epoxy_has_wgl', build_wgl)
pkgconf.set('PACKAGE_VERSION', meson.project_version())
if dl_dep.found()
  pkgconf.set('DLOPEN_LIBS', '-ldl')
endif

configure_file(input: 'epoxy.pc.in',
               output: 'epoxy.pc',
               configuration: pkgconf,
               install: true,
               install_dir: join_paths(epoxy_libdir, 'pkgconfig'))

# Python
python = import('python3').find_python()
if not python.found()
  python = find_program('python', required: true)
endif

# Generates the dispatch tables
gen_dispatch_py = files('src/gen_dispatch.py')

gl_registry = files('registry/gl.xml')
egl_registry = files('registry/egl.xml')
glx_registry = files('registry/glx.xml')
wgl_registry = files('registry/wgl.xml')

libepoxy_inc = [
  include_directories('include'),
  include_directories('src'),
]

subdir('include/epoxy')
subdir('src')
subdir('test')

if get_option('enable-docs')
  doxygen = find_program('doxygen', required: false)
  if doxygen.found()
    subdir('doc')
  else
    message('Documentation disabled without doxygen')
  endif
endif
@


1.1.1.1
log
@initial import of libepoxy-1.4.3
@
text
@@


1.1.1.2
log
@initial import of libepoxy-1.5.4
@
text
@d1 1
a1 1
project('libepoxy', 'c', version: '1.5.4',
d8 1
a8 1
        meson_version: '>= 0.47.0')
d31 1
a31 1
conf.set('HAVE_KHRPLATFORM_H', cc.has_header('KHR/khrplatform.h'))
d37 1
a37 1
enable_glx = get_option('glx')
d39 15
a53 3
  build_glx = not ['windows', 'darwin', 'android', 'haiku'].contains(host_system)
else
  build_glx = enable_glx == 'yes'
d56 1
a56 1
enable_egl = get_option('egl')
d58 8
a65 9
  build_egl = not ['windows', 'darwin'].contains(host_system)
else
  build_egl = enable_egl == 'yes'
endif

enable_x11 = get_option('x11')
if not enable_x11
  if enable_glx == 'yes'
    error('GLX support is explicitly enabled, but X11 was disabled')
d67 4
a70 1
  build_glx = false
d76 1
d80 1
d84 1
a90 1
conf.set10('ENABLE_X11', enable_x11)
d153 6
a158 1
common_cflags = cc.get_supported_arguments(test_cflags)
a162 1
visibility_cflags = []
d164 1
d207 1
a207 1
# resolved at link time, so we have to link directly against
d220 20
d261 1
d263 1
a263 5
if get_option('tests')
  subdir('test')
endif

if get_option('docs')
@

