From 64f38c10b250115b9238638654ba5dae0563e5c6 Mon Sep 17 00:00:00 2001 From: star9029 Date: Thu, 14 Nov 2024 22:13:33 +0800 Subject: [PATCH] antlr4-runtime: fix dll install (#5759) --- packages/a/antlr4-runtime/xmake.lua | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/packages/a/antlr4-runtime/xmake.lua b/packages/a/antlr4-runtime/xmake.lua index c2663b664..87c285fc5 100644 --- a/packages/a/antlr4-runtime/xmake.lua +++ b/packages/a/antlr4-runtime/xmake.lua @@ -28,17 +28,28 @@ package("antlr4-runtime") add_deps("cmake") on_install(function (package) - local configs = {"-DANTLR_BUILD_CPP_TESTS=OFF", "-DANTLR4_INSTALL=ON"} - table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:is_debug() and "Debug" or "Release")) - table.insert(configs, "-DANTLR_BUILD_SHARED=" .. (package:config("shared") and "ON" or "OFF")) - table.insert(configs, "-DANTLR_BUILD_STATIC=" .. (package:config("shared") and "OFF" or "ON")) + if not package:config("shared") then + package:add("defines", "ANTLR4CPP_STATIC") + end os.cd("runtime/Cpp") io.replace("CMakeLists.txt", [[set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>")]], "", {plain = true}) io.replace("CMakeLists.txt", [[set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>DLL")]], "", {plain = true}) + io.replace("CMakeLists.txt", "add_subdirectory(runtime)", + "include(GNUInstallDirs)\nadd_subdirectory(runtime)", {plain = true}) + + local configs = {"-DANTLR_BUILD_CPP_TESTS=OFF", "-DANTLR4_INSTALL=ON"} + table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:is_debug() and "Debug" or "Release")) + table.insert(configs, "-DANTLR_BUILD_SHARED=" .. (package:config("shared") and "ON" or "OFF")) + table.insert(configs, "-DANTLR_BUILD_STATIC=" .. (package:config("shared") and "OFF" or "ON")) + if package:is_plat("windows") then + table.insert(configs, "-DCMAKE_COMPILE_PDB_OUTPUT_DIRECTORY=''") + end import("package.tools.cmake").install(package, configs) - if not package:config("shared") then - package:add("defines", "ANTLR4CPP_STATIC") + + if package:is_plat("windows") and package:is_debug() then + local dir = package:installdir(package:config("shared") and "bin" or "lib") + os.vcp(path.join(package:buildir(), "runtime/*.pdb"), dir) end end)