99 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
package("assimp")
 | 
						|
 | 
						|
    set_homepage("https://assimp.org")
 | 
						|
    set_description("Portable Open-Source library to import various well-known 3D model formats in a uniform manner")
 | 
						|
    set_license("BSD-3-Clause")
 | 
						|
 | 
						|
    set_urls("https://github.com/assimp/assimp/archive/$(version).zip",
 | 
						|
             "https://github.com/assimp/assimp.git")
 | 
						|
    add_versions("v5.2.5", "5384877d53be7b5bbf50c26ab3f054bec91b3df8614372dcd7240f44f61c509b")
 | 
						|
 | 
						|
    if not is_host("windows") then
 | 
						|
        add_extsources("pkgconfig::assimp")
 | 
						|
    end
 | 
						|
 | 
						|
    if is_plat("mingw") and is_subhost("msys") then
 | 
						|
        add_extsources("pacman::assimp")
 | 
						|
    elseif is_plat("linux") then
 | 
						|
        add_extsources("pacman::assimp", "apt::libassimp-dev")
 | 
						|
    elseif is_plat("macosx") then
 | 
						|
        add_extsources("brew::assimp")
 | 
						|
    end
 | 
						|
 | 
						|
    add_configs("build_tools",           {description = "Build the supplementary tools for Assimp.", default = false, type = "boolean"})
 | 
						|
    add_configs("double_precision",      {description = "Enable double precision processing.", default = false, type = "boolean"})
 | 
						|
    add_configs("no_export",             {description = "Disable Assimp's export functionality (reduces library size).", default = false, type = "boolean"})
 | 
						|
    add_configs("android_jniiosysystem", {description = "Enable Android JNI IOSystem support.", default = false, type = "boolean"})
 | 
						|
    add_configs("asan",                  {description = "Enable AddressSanitizer.", default = false, type = "boolean"})
 | 
						|
    add_configs("ubsan",                 {description = "Enable Undefined Behavior sanitizer.", default = false, type = "boolean"})
 | 
						|
 | 
						|
    add_deps("cmake", "zlib")
 | 
						|
 | 
						|
    if is_plat("windows") then
 | 
						|
        add_syslinks("advapi32")
 | 
						|
    end
 | 
						|
 | 
						|
    on_load(function (package)
 | 
						|
        if not package:gitref() and package:version():le("5.1.0") then
 | 
						|
            package:add("deps", "irrxml")
 | 
						|
        end
 | 
						|
        if package:is_plat("linux", "macosx") and package:config("shared") then
 | 
						|
            package:add("links", "assimp" .. (package:is_debug() and "d" or ""))
 | 
						|
        end
 | 
						|
    end)
 | 
						|
 | 
						|
    on_install(function (package)
 | 
						|
        local configs = {"-DASSIMP_BUILD_SAMPLES=OFF",
 | 
						|
                         "-DASSIMP_BUILD_TESTS=OFF",
 | 
						|
                         "-DASSIMP_BUILD_DOCS=OFF",
 | 
						|
                         "-DASSIMP_BUILD_FRAMEWORK=OFF",
 | 
						|
                         "-DASSIMP_INSTALL_PDB=ON",
 | 
						|
                         "-DASSIMP_INJECT_DEBUG_POSTFIX=ON",
 | 
						|
                         "-DASSIMP_BUILD_ZLIB=OFF",
 | 
						|
                         "-DSYSTEM_IRRXML=ON",
 | 
						|
                         "-DASSIMP_WARNINGS_AS_ERRORS=OFF"}
 | 
						|
        table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
 | 
						|
 | 
						|
        local function add_config_arg(config_name, cmake_name)
 | 
						|
            table.insert(configs, "-D" .. cmake_name .. "=" .. (package:config(config_name) and "ON" or "OFF"))
 | 
						|
        end
 | 
						|
        add_config_arg("shared",           "BUILD_SHARED_LIBS")
 | 
						|
        add_config_arg("double_precision", "ASSIMP_DOUBLE_PRECISION")
 | 
						|
        add_config_arg("no_export",        "ASSIMP_NO_EXPORT")
 | 
						|
        add_config_arg("asan",             "ASSIMP_ASAN")
 | 
						|
        add_config_arg("ubsan",            "ASSIMP_UBSAN")
 | 
						|
 | 
						|
        if package:is_plat("android") then
 | 
						|
            add_config_arg("android_jniiosysystem", "ASSIMP_ANDROID_JNIIOSYSTEM")
 | 
						|
        end
 | 
						|
        if package:is_plat("windows", "linux", "macosx", "mingw") then
 | 
						|
            add_config_arg("build_tools", "ASSIMP_BUILD_ASSIMP_TOOLS")
 | 
						|
        else
 | 
						|
            table.insert(configs, "-DASSIMP_BUILD_ASSIMP_TOOLS=OFF")
 | 
						|
        end
 | 
						|
 | 
						|
        if not package:gitref() and package:version():lt("v5.2.4") then
 | 
						|
            -- ASSIMP_WARNINGS_AS_ERRORS is not supported before v5.2.4
 | 
						|
            if package:is_plat("windows") then
 | 
						|
                io.replace("code/CMakeLists.txt", "TARGET_COMPILE_OPTIONS(assimp PRIVATE /W4 /WX)", "", {plain = true})
 | 
						|
            else
 | 
						|
                io.replace("code/CMakeLists.txt", "TARGET_COMPILE_OPTIONS(assimp PRIVATE -Werror)", "", {plain = true})
 | 
						|
            end
 | 
						|
        end
 | 
						|
        if package:is_plat("mingw") and package:version():lt("v5.1.5") then
 | 
						|
            -- CMAKE_COMPILER_IS_MINGW has been removed: https://github.com/assimp/assimp/pull/4311
 | 
						|
            io.replace("CMakeLists.txt", "CMAKE_COMPILER_IS_MINGW", "MINGW", {plain = true})
 | 
						|
        end
 | 
						|
 | 
						|
        import("package.tools.cmake").install(package, configs)
 | 
						|
 | 
						|
        -- copy pdb
 | 
						|
        if package:is_plat("windows") then
 | 
						|
            if package:config("shared") then
 | 
						|
                os.trycp(path.join(package:buildir(), "bin", "**.pdb"), package:installdir("bin"))
 | 
						|
            else
 | 
						|
                os.trycp(path.join(package:buildir(), "lib", "**.pdb"), package:installdir("lib"))
 | 
						|
            end
 | 
						|
        end
 | 
						|
    end)
 |