blob: 50012de4187a49d15a2269c02e6e1e4a57b83505 [file] [log] [blame]
% Licensed to the Apache Software Foundation (ASF) under one
% or more contributor license agreements. See the NOTICE file
% distributed with this work for additional information
% regarding copyright ownership. The ASF licenses this file
% to you under the Apache License, Version 2.0 (the
% "License"); you may not use this file except in compliance
% with the License. You may obtain a copy of the License at
%
% http://www.apache.org/licenses/LICENSE-2.0
%
% Unless required by applicable law or agreed to in writing,
% software distributed under the License is distributed on an
% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
% KIND, either express or implied. See the License for the
% specific language governing permissions and limitations
% under the License.
toolboxFolder = string(getenv("ARROW_MATLAB_TOOLBOX_FOLDER"));
outputFolder = string(getenv("ARROW_MATLAB_TOOLBOX_OUTPUT_FOLDER"));
toolboxVersion = string(getenv("ARROW_MATLAB_TOOLBOX_VERSION"));
if isempty(toolboxVersion)
error("ARROW_MATLAB_TOOLBOX_VERSION environment variable value is empty." + ...
"ARROW_MATLAB_TOOLBOX_VERSION should follow the general form: ${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}.");
end
appendLicenseText(fullfile(toolboxFolder, "LICENSE.txt"));
appendNoticeText(fullfile(toolboxFolder, "NOTICE.txt"));
% Output folder must exist.
mkdir(outputFolder);
disp("Toolbox Folder: " + toolboxFolder);
disp("Output Folder: " + outputFolder);
disp("Toolbox Version: " + toolboxVersion);
identifier = "ad1d0fe6-22d1-4969-9e6f-0ab5d0f12ce3";
opts = matlab.addons.toolbox.ToolboxOptions(toolboxFolder, identifier);
opts.ToolboxName = "MATLAB Arrow Interface";
opts.ToolboxVersion = toolboxVersion;
opts.AuthorName = "The Apache Software Foundation";
opts.AuthorEmail = "dev@arrow.apache.org";
% Set the SupportedPlatforms
opts.SupportedPlatforms.Win64 = true;
opts.SupportedPlatforms.Maci64 = true;
opts.SupportedPlatforms.Glnxa64 = true;
opts.SupportedPlatforms.MatlabOnline = true;
% MEX files use run-time libraries shipped with MATLAB (e.g. libmx, libmex,
% etc.). MEX files linked against earlier versions of MALTAB run-time libraries
% will most likely work on newer versions of MATLAB. However, this may not
% always be the case.
%
% For now, set the earliest and latest compatible releases of MATLAB to
% the release of MATLAB used to build and package the MATLAB Arrow Interface.
%
% See: https://www.mathworks.com/help/matlab/matlab_external/version-compatibility.html
currentRelease = matlabRelease.Release;
opts.MinimumMatlabRelease = currentRelease;
opts.MaximumMatlabRelease = currentRelease;
opts.OutputFile = fullfile(outputFolder, compose("matlab-arrow-%s.mltbx", toolboxVersion));
disp("Output File: " + opts.OutputFile);
matlab.addons.toolbox.packageToolbox(opts);
function appendLicenseText(filename)
licenseText = [ ...
newline + "--------------------------------------------------------------------------------" + newline
"3rdparty dependency mathworks/libmexclass is redistributed as a dynamically"
"linked shared library in certain binary distributions, like the MATLAB"
"distribution." + newline
"Copyright: 2022-2024 The MathWorks, Inc. All rights reserved."
"Homepage: https://github.com/mathworks/libmexclass"
"License: 3-clause BSD" ];
writelines(licenseText, filename, WriteMode="append");
end
function appendNoticeText(filename)
noticeText = [ ...
newline + "---------------------------------------------------------------------------------" + newline
"This product includes software from The MathWorks, Inc. (Apache 2.0)"
" * Copyright (C) 2024 The MathWorks, Inc."];
writelines(noticeText, filename, WriteMode="append");
end