From 68bc96f76ad2de4077bc2a9916f4facbefe5f739 Mon Sep 17 00:00:00 2001 From: Arslaan Pathan Date: Fri, 2 Oct 2026 18:50:20 +1300 Subject: Build system setup and basic PXObject class implementation --- README.md | 12 ++++++++++++ include/Paradox/Core.h | 6 ++++++ include/Paradox/Object.h | 10 ++++++++++ meson.build | 23 +++++++++++++++++++++++ src/Object.m | 19 +++++++++++++++++++ 5 files changed, 70 insertions(+) create mode 100644 include/Paradox/Core.h create mode 100644 include/Paradox/Object.h create mode 100644 meson.build create mode 100644 src/Object.m diff --git a/README.md b/README.md index 017cfa7..4f8fbef 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,15 @@ # Paradox Application framework for Objective-C built from first principles. + +## Dependencies + +### Runtime + +- `libobjc2` + +### Build + +- Any Objective-C-capable compiler (preferably Clang/LLVM) +- `meson` +- `ninja` diff --git a/include/Paradox/Core.h b/include/Paradox/Core.h new file mode 100644 index 0000000..2506399 --- /dev/null +++ b/include/Paradox/Core.h @@ -0,0 +1,6 @@ +#ifndef PARADOX_CORE_H +#define PARADOX_CORE_H + +#include + +#endif diff --git a/include/Paradox/Object.h b/include/Paradox/Object.h new file mode 100644 index 0000000..e51c733 --- /dev/null +++ b/include/Paradox/Object.h @@ -0,0 +1,10 @@ +#ifndef PARADOX_OBJECT_H +#define PARADOX_OBJECT_H + +@interface PXObject ++ (instancetype)alloc; +- (instancetype)init; +- (void)dealloc; +@end + +#endif diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..aa9cc96 --- /dev/null +++ b/meson.build @@ -0,0 +1,23 @@ +project('paradox', 'objc', version: '0.0.1') + +add_project_arguments('-Wno-objc-root-class', '-Werror', '-pedantic', '-Wall', language: 'objc') + +deps = [] +deps += dependency('libobjc') # This is libobjc2, not libobjc - do not be fooled + +inc = include_directories('include') + +sources = [ + 'src/Object.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', + subdir: 'paradox' +) + +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']) diff --git a/src/Object.m b/src/Object.m new file mode 100644 index 0000000..d6fd2cb --- /dev/null +++ b/src/Object.m @@ -0,0 +1,19 @@ +#include +#include +#include + +@implementation PXObject + ++ (instancetype)alloc { + return (id)class_createInstance(self, 0); +} + +- (instancetype)init { + return self; +} + +- (void)dealloc { + object_dispose(self); +} + +@end -- cgit v1.2.3