Parcourir la source

Add modules support for glm (#3230)

* add modules support for glm

fix glm package

* Update xmake.lua

---------

Co-authored-by: ruki <[email protected]>
Arthur Laurent il y a 1 an
Parent
commit
b98f84e676
1 fichiers modifiés avec 29 ajouts et 9 suppressions
  1. 29 9
      packages/g/glm/xmake.lua

+ 29 - 9
packages/g/glm/xmake.lua

@@ -12,23 +12,43 @@ package("glm")
 
     add_configs("header_only", {description = "Use header only version.", default = true, type = "boolean"})
     add_configs("cxx_standard", {description = "Select c++ standard to build.", default = "14", type = "string", values = {"98", "11", "14", "17", "20"}})
+    add_configs("modules", {description = "Build with C++20 modules support.", default = false, type = "boolean"})
 
     on_load(function (package)
-        if not package:config("header_only") then
+        if not package:config("modules") then
+            package:config_set("header_only", false)
+            package:config_set("cxx_standard", "20")
+        end
+        if not package:config("header_only") and not package:config("modules") then
             package:add("deps", "cmake")
         end
     end)
 
     on_install(function (package)
-        if package:config("header_only") then
-            os.cp("glm", package:installdir("include"))
+        if not package:config("modules") then
+            if package:config("header_only") then
+                os.cp("glm", package:installdir("include"))
+            else
+                io.replace("CMakeLists.txt", "NOT GLM_DISABLE_AUTO_DETECTION", "FALSE")
+                local configs = {"-DGLM_BUILD_TESTS=OFF"}
+                table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
+                table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
+                table.insert(configs, "-DCMAKE_CXX_STANDARD=" .. package:config("cxx_standard"))
+                import("package.tools.cmake").install(package, configs)
+            end
         else
-            io.replace("CMakeLists.txt", "NOT GLM_DISABLE_AUTO_DETECTION", "FALSE")
-            local configs = {"-DGLM_BUILD_TESTS=OFF"}
-            table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
-            table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
-            table.insert(configs, "-DCMAKE_CXX_STANDARD=" .. package:config("cxx_standard"))
-            import("package.tools.cmake").install(package, configs)
+            io.writefile("xmake.lua", [[ 
+                target("glm")
+                    set_kind("$(kind)")
+                    set_languages("c++20")
+                    add_headerfiles("./(glm/**.hpp)")
+                    add_headerfiles("./(glm/**.h)")
+                    add_headerfiles("./(glm/**.inl)")
+                    add_includedirs(".")
+                    add_files("glm/**.cpp")
+                    add_files("glm/**.cppm", {public = true})
+            ]])
+            import("package.tools.xmake").install(package)
         end
     end)