pw_function: Extend CMake support

Change-Id: Ib3d62c866eef5b16e58c707511ed7473599cd96d
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/79729
Pigweed-Auto-Submit: Ewout van Bekkum <ewout@google.com>
Reviewed-by: Wyatt Hepler <hepler@google.com>
Commit-Queue: Auto-Submit <auto-submit@pigweed.google.com.iam.gserviceaccount.com>
diff --git a/pw_function/CMakeLists.txt b/pw_function/CMakeLists.txt
index 2e4d055..0dc579e 100644
--- a/pw_function/CMakeLists.txt
+++ b/pw_function/CMakeLists.txt
@@ -16,13 +16,37 @@
 
 pw_add_module_config(pw_function_CONFIG)
 
-pw_auto_add_simple_module(pw_function
+pw_add_module_library(pw_function.config
+  HEADERS
+    public/pw_function/config.h
+  PUBLIC_INCLUDES
+    public
   PUBLIC_DEPS
-    pw_assert
-    pw_preprocessor
     ${pw_function_CONFIG}
 )
 
+pw_add_module_library(pw_function
+  HEADERS
+    public/pw_function/function.h
+    public/pw_function/internal/function.h
+  PUBLIC_INCLUDES
+    public
+  PUBLIC_DEPS
+    pw_assert
+    pw_function.config
+    pw_preprocessor
+)
 if(Zephyr_FOUND AND CONFIG_PIGWEED_FUNCTION)
   zephyr_link_libraries(pw_function)
 endif()
+
+pw_add_test(pw_function.function_test
+  SOURCES
+    function_test.cc
+  DEPS
+    pw_function
+    pw_polyfill
+  GROUPS
+    modules
+    pw_function
+)