project('paradox', 'objc', version: '0.0.1', meson_version: '>=1.1.0') add_project_arguments('-Wno-objc-root-class', '-Werror', '-pedantic', '-Wall', '-fobjc-runtime=gnustep-2.0', language: 'objc') # gnustep-2.0 in this context simply means the libobjc2 runtime (which is made by the GNUstep team), not actually GNUstep. Paradox is an independent framework and has no dependency on GNUstep or any other Objective-C application framework. if get_option('debug_features') add_project_arguments('-DPARADOX_DEBUG_FEATURES', language: 'objc') endif deps = [] deps += dependency('libobjc') # This is libobjc2, not libobjc - do not be fooled inc = include_directories('include') sources = [ 'src/Object.m', 'src/String.m', ] paradox = static_library('paradox', sources, include_directories: inc, dependencies: deps, install: true, install_dir: 'lib') install_headers( 'include/Paradox/Core.h', 'include/Paradox/Object.h', 'include/Paradox/String.h', subdir: 'paradox' ) test_deps = [] test_deps += dependency('libobjc') test_deps += declare_dependency(link_with: paradox, include_directories: inc, dependencies: deps) executable('Object', 'tests/Object.m', dependencies: test_deps, install: false) executable('Introspection', 'tests/Introspection.m', dependencies: test_deps, install: false) executable('Selector', 'tests/Selector.m', dependencies: test_deps, install: false) executable('AutoreleasePool', 'tests/AutoreleasePool.m', objc_args: ['-fobjc-arc'], dependencies: test_deps, install: false) pkg = import('pkgconfig') pkg.generate(paradox, subdirs: 'paradox', version: '0.0.1', name: 'paradox', filebase: 'paradox', description: 'Application framework for Objective-C built from first principles.', requires: ['libobjc'])