diff --git a/meson.build b/meson.build
index e0aeefa30330..e6ed03f951c7 100644
--- a/meson.build
+++ b/meson.build
@@ -21,11 +21,11 @@ cpp_arguments = common_arguments
 add_project_arguments(c_arguments, language: 'c')
 add_project_arguments(cpp_arguments, language: 'cpp')
 
-inc = include_directories('include')
+libcamera_includes = include_directories('include')
 
 subdir('Documentation')
 subdir('include')
-subdir('lib')
+subdir('src')
 subdir('test')
 subdir('utils')
 
diff --git a/src/libcamera/include/.keep_empty b/src/libcamera/include/.keep_empty
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/lib/main.cpp b/src/libcamera/main.cpp
similarity index 100%
rename from lib/main.cpp
rename to src/libcamera/main.cpp
diff --git a/lib/meson.build b/src/libcamera/meson.build
similarity index 50%
rename from lib/meson.build
rename to src/libcamera/meson.build
index fcd738cc86d8..07d9cd448342 100644
--- a/lib/meson.build
+++ b/src/libcamera/meson.build
@@ -1,6 +1,11 @@
 sources = ['main.cpp']
 
+includes = [
+    libcamera_includes,
+    include_directories('include'),
+]
+
 libcamera = shared_library('camera',
                            sources,
                            install : true,
-                           include_directories : inc)
+                           include_directories : includes)
diff --git a/src/meson.build b/src/meson.build
new file mode 100644
index 000000000000..4ce9668caa7b
--- /dev/null
+++ b/src/meson.build
@@ -0,0 +1 @@
+subdir('libcamera')
diff --git a/test/meson.build b/test/meson.build
index afe9bd9a741c..924a26f1ca66 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -1,5 +1,5 @@
 test_init = executable('test_init', 'init.cpp',
                        link_with : libcamera,
-                       include_directories : inc)
+                       include_directories : libcamera_includes)
 
 test('Initialisation test', test_init)
