From cad265ebcda5b8b44bca81753b69116b95ebebeb Mon Sep 17 00:00:00 2001 From: Randy Date: Tue, 4 Aug 2020 20:31:39 +0200 Subject: [PATCH 1/5] add meson.build --- meson.build | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 meson.build diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..059dff8 --- /dev/null +++ b/meson.build @@ -0,0 +1,104 @@ +project('cglm', 'c', + version : '0.7.7', + license : 'mit', + default_options : [ + 'c_std=c11', + 'werror=true', + 'warning_level=2', + 'buildtype=release' + ] +) + +cc = meson.get_compiler('c') + +cglm_deps = cc.find_library('m', required : false) + +cglm_args = [] +build_args = [] + +if get_option('default_library') == 'static' + cglm_args = '-DCGLM_STATIC' +endif + +if host_machine.system() == 'windows' + build_args = '-DCGLM_EXPORTS' +endif + +cglm_inc = include_directories('include') + +cglm_src = files( + 'src/affine.c', + 'src/affine2d.c', + 'src/bezier.c', + 'src/box.c', + 'src/cam.c', + 'src/curve.c', + 'src/ease.c', + 'src/euler.c', + 'src/frustum.c', + 'src/io.c', + 'src/mat2.c', + 'src/mat3.c', + 'src/mat4.c', + 'src/plane.c', + 'src/project.c', + 'src/quat.c', + 'src/ray.c', + 'src/sphere.c', + 'src/vec2.c', + 'src/vec3.c', + 'src/vec4.c' +) + +install_subdir('include/cglm', install_dir : get_option('includedir')) + +cglm_lib = library('cglm', + cglm_src, + install : true, + dependencies : cglm_deps, + c_args : [ build_args, cglm_args ] +) + +cglm_dep = declare_dependency( + link_with : cglm_lib, + dependencies : cglm_deps, + compile_args : cglm_args, + include_directories : cglm_inc, + version : meson.project_version() +) + +if meson.version().version_compare('>= 0.54.0') + meson.override_dependency('cglm', cglm_dep) +endif + + +pkg = import('pkgconfig') + +pkg.generate( + name : 'cglm', + libraries : cglm_lib, + extra_cflags : cglm_args, + version : meson.project_version(), + url : 'https://github.com/recp/cglm', + description : 'OpenGL Mathematics (glm) for C' +) + + +test_src = files( + 'test/runner.c', + 'test/src/test_euler.c', + 'test/src/test_bezier.c', + 'test/src/test_cam.c', + 'test/src/test_struct.c', + 'test/src/test_clamp.c', + 'test/src/test_common.c', + 'test/src/tests.c' +) + +test_exe = executable('tests', + test_src, + dependencies : cglm_dep, + c_args : '-DGLM_TESTS_NO_COLORFUL_OUTPUT' +) + +test('cglm.tests', test_exe) From 640795a771293974987dc557a6ab181a77c08aa7 Mon Sep 17 00:00:00 2001 From: Randy Date: Tue, 4 Aug 2020 20:50:33 +0200 Subject: [PATCH 2/5] update README --- README.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/README.md b/README.md index 11cf698..4a6b529 100644 --- a/README.md +++ b/README.md @@ -183,6 +183,34 @@ add_subdirectory(external/cglm/) # or you can use find_package to configure cglm ``` +### Meson (All platforms) + +```bash +$ meson build # [Optional] --default-library=static +$ cd build +$ ninja +$ sudo ninja install # [Optional] +``` + +##### Meson options with Defaults: + +```meson +c_std=c11 +buildtype=release +default_library=shared +``` +#### Use with your Meson project +* Example: +```meson +# Clone cglm or create a cglm.wrap under /subprojects +project('name', 'c') + +cglm_dep = dependency('cglm', fallback : 'cglm', 'cglm_dep') + +executable('exe', 'src/main.c', dependencies : cglm_dep) +``` + + ### Unix (Autotools) ```bash From 92b75a134582b3f54b1c8b4099616e67101d77be Mon Sep 17 00:00:00 2001 From: Randy Date: Wed, 5 Aug 2020 22:49:52 +0200 Subject: [PATCH 3/5] meson: add option to build tests, default to false --- meson.build | 19 +++++++++++-------- meson_options.txt | 1 + 2 files changed, 12 insertions(+), 8 deletions(-) create mode 100644 meson_options.txt diff --git a/meson.build b/meson.build index 059dff8..20d7852 100644 --- a/meson.build +++ b/meson.build @@ -83,16 +83,17 @@ pkg.generate( description : 'OpenGL Mathematics (glm) for C' ) +if get_option('build_tests') == true test_src = files( - 'test/runner.c', - 'test/src/test_euler.c', - 'test/src/test_bezier.c', - 'test/src/test_cam.c', - 'test/src/test_struct.c', - 'test/src/test_clamp.c', - 'test/src/test_common.c', - 'test/src/tests.c' + 'test/runner.c', + 'test/src/test_euler.c', + 'test/src/test_bezier.c', + 'test/src/test_cam.c', + 'test/src/test_struct.c', + 'test/src/test_clamp.c', + 'test/src/test_common.c', + 'test/src/tests.c' ) test_exe = executable('tests', @@ -102,3 +103,5 @@ test_exe = executable('tests', ) test('cglm.tests', test_exe) + +endif \ No newline at end of file diff --git a/meson_options.txt b/meson_options.txt new file mode 100644 index 0000000..ca48e5e --- /dev/null +++ b/meson_options.txt @@ -0,0 +1 @@ +option('build_tests', type : 'boolean', value : false, description : 'Build tests') \ No newline at end of file From d273daecfee2a3173b736fac454a43a95d008cee Mon Sep 17 00:00:00 2001 From: Randy Date: Wed, 5 Aug 2020 23:05:11 +0200 Subject: [PATCH 4/5] update README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 4a6b529..9cb73a9 100644 --- a/README.md +++ b/README.md @@ -198,6 +198,7 @@ $ sudo ninja install # [Optional] c_std=c11 buildtype=release default_library=shared +enable_tests=false # to run tests: ninja test ``` #### Use with your Meson project * Example: From fdfceb9f5b6a2194965b451df9bb235cc084cc65 Mon Sep 17 00:00:00 2001 From: Randy Date: Wed, 5 Aug 2020 23:14:05 +0200 Subject: [PATCH 5/5] update build.rst --- docs/source/build.rst | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/docs/source/build.rst b/docs/source/build.rst index 137ea1a..7e091b9 100644 --- a/docs/source/build.rst +++ b/docs/source/build.rst @@ -47,6 +47,41 @@ If you don't want to install **cglm** to your system's folder you can get static add_subdirectory(external/cglm/) +Meson (All platforms): +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: bash + :linenos: + + $ meson build # [Optional] --default-library=static + $ cd build + $ ninja + $ sudo ninja install # [Optional] + +**Meson Options:** + +.. code-block:: CMake + :linenos: + + c_std=c11 + buildtype=release + default_library=shared + enable_tests=false # to run tests: ninja test + + +**Use with your CMake project example** + +.. code-block:: CMake + :linenos: + + # Clone cglm or create a cglm.wrap under /subprojects + project('name', 'c') + + cglm_dep = dependency('cglm', fallback : 'cglm', 'cglm_dep') + + executable('exe', 'src/main.c', dependencies : cglm_dep) + + Unix (Autotools): ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~