Browse Source

improve boost

ruki 6 years ago
parent
commit
cc943158a9
1 changed files with 53 additions and 56 deletions
  1. 53 56
      packages/b/boost/xmake.lua

+ 53 - 56
packages/b/boost/xmake.lua

@@ -15,25 +15,47 @@ package("boost")
         add_deps("bzip2", "zlib")
     end
 
-    add_configs("multi",         { description = "Enable multi-thread support.",  default = true, type = "boolean"})
-    add_configs("filesystem",    { description = "Enable filesystem library.",    default = true, type = "boolean"})
-    add_configs("fiber",         { description = "Enable fiber library.",         default = false, type = "boolean"})
-    add_configs("coroutine",     { description = "Enable coroutine library.",     default = false, type = "boolean"})
-    add_configs("context",       { description = "Enable context library.",       default = false, type = "boolean"})
-    add_configs("thread",        { description = "Enable thread library.",        default = false, type = "boolean"})
-    add_configs("regex",         { description = "Enable regex library.",         default = false, type = "boolean"})
-    add_configs("system",        { description = "Enable system library.",        default = false, type = "boolean"})
-    add_configs("container",     { description = "Enable container library.",     default = false, type = "boolean"})
-    add_configs("exception",     { description = "Enable exception library.",     default = false, type = "boolean"})
-    add_configs("timer",         { description = "Enable timer library.",         default = false, type = "boolean"})
-    add_configs("atomic",        { description = "Enable atomic library.",        default = false, type = "boolean"})
-    add_configs("graph",         { description = "Enable graph library.",         default = false, type = "boolean"})
-    add_configs("serialization", { description = "Enable serialization library.", default = false, type = "boolean"})
-    add_configs("random",        { description = "Enable random library.",        default = false, type = "boolean"})
-    add_configs("wave",          { description = "Enable wave library.",          default = false, type = "boolean"})
-    add_configs("date_time",     { description = "Enable date time library.",     default = false, type = "boolean"})
-    add_configs("locale",        { description = "Enable locale library.",        default = false, type = "boolean"})
-    add_configs("iostreams",     { description = "Enable iostreams library.",     default = false, type = "boolean"})
+    local libnames = {"filesystem", 
+                      "fiber", 
+                      "coroutine", 
+                      "context", 
+                      "thread", 
+                      "regex",
+                      "system",
+                      "container",
+                      "exception",
+                      "timer",
+                      "atomic",
+                      "graph",
+                      "serialization",
+                      "random",
+                      "wave",
+                      "date_time",
+                      "locale",
+                      "iostreams"}
+
+    add_configs("multi",        { description = "Enable multi-thread support.",  default = true, type = "boolean"})
+    for _, libname in ipairs(libnames) do
+        add_configs(libname,    { description = "Enable " .. libname .. " library.", default = (libname == "filesystem"), type = "boolean"})
+    end
+
+    on_load("windows", function (package)
+        local vs_runtime = package:config("vs_runtime")
+        for _, libname in ipairs(libnames) do
+            local linkname = "libboost_" .. libname
+            if package:config("multi") then
+                linkname = linkname .. "-mt"
+            end
+            if vs_runtime == "MT" then
+                linkname = linkname .. "-s"
+            elseif vs_runtime == "MTd" then
+                linkname = linkname .. "-sgd"
+            elseif vs_runtime == "MDd" then
+                linkname = linkname .. "-gd"
+            end
+            package:add("links", linkname)
+        end
+    end)
 
     on_install("macosx", "linux", "windows", function (package)
     
@@ -56,45 +78,20 @@ package("boost")
             "--libdir=" .. package:installdir("lib"),
             "--without-icu"
         }
-        local libs_enabled  = {}
-        local libs_disabled = {}
-        local libnames = {"filesystem", 
-                          "fiber", 
-                          "coroutine", 
-                          "context", 
-                          "thread", 
-                          "regex",
-                          "system",
-                          "container",
-                          "exception",
-                          "timer",
-                          "atomic",
-                          "graph",
-                          "serialization",
-                          "random",
-                          "wave",
-                          "date_time",
-                          "locale",
-                          "iostreams"}
-        for _, libname in ipairs(libnames) do
-            if package:config(libname) then
-                table.insert(libs_enabled, libname)
-            else
-                table.insert(libs_disabled, libname)
-            end
-        end
-        if #libs_enabled > 0 then
-            table.insert(bootstrap_argv, "--with-libraries=" .. table.concat(libs_enabled, ","))
-        end
-        if #libs_disabled > 0 then
-            table.insert(bootstrap_argv, "--without-libraries=" .. table.concat(libs_disabled, ","))
+        if is_host("windows") then
+            os.vrunv("bootstrap.bat", bootstrap_argv)
+        else
+            os.vrunv("./bootstrap.sh", bootstrap_argv)
         end
+        os.vrun("./b2 headers")
+
         local argv =
         {
             "--prefix=" .. package:installdir(), 
             "--libdir=" .. package:installdir("lib"), 
             "-d2",
             "-j4",
+            "--hash",
             "--layout=tagged-1.66",
             "--user-config=user-config.jam",
             "--no-cmake-config",
@@ -118,15 +115,15 @@ package("boost")
             else
                 table.insert(argv, "runtime-link=shared")
             end
+            table.insert(argv, "cxxflags=-std:c++14")
         else
             table.insert(argv, "cxxflags=-std=c++14")
         end
-        if is_host("windows") then
-            os.vrunv("bootstrap.bat", bootstrap_argv)
-        else
-            os.vrunv("./bootstrap.sh", bootstrap_argv)
+        for _, libname in ipairs(libnames) do
+            if package:config(libname) then
+                table.insert(argv, "--with-" .. libname)
+            end
         end
-        os.vrun("./b2 headers")
         os.vrunv("./b2", argv)
     end)