Skip to content

Commit 4278cbd

Browse files
committed
Move function to set Matlab variables to a separate file
1 parent 5bd3bd9 commit 4278cbd

File tree

2 files changed

+75
-53
lines changed

2 files changed

+75
-53
lines changed

matlab/tools/cmake/BuildMatlabArrowInterface.cmake

+11-53
Original file line numberDiff line numberDiff line change
@@ -19,59 +19,17 @@
1919
# Configure libmexclass FetchContent
2020
# ----------------------------------
2121

22-
function(print_find_matlab_variables)
23-
message(STATUS "Matlab_ROOT_DIR = ${Matlab_ROOT_DIR}")
24-
message(STATUS "Matlab_VERSION_STRING = ${Matlab_VERSION_STRING}")
25-
message(STATUS "Matlab_MAIN_PROGRAM = ${Matlab_MAIN_PROGRAM}")
26-
message(STATUS "Matlab_MX_LIBRARY = ${Matlab_MEX_LIBRARY}")
27-
message(STATUS "Matlab_MEX_LIBRARY = ${Matlab_MEX_LIBRARY}")
28-
message(STATUS "Matlab_ENG_LIBRARY = ${Matlab_ENG_LIBRARY}")
29-
message(STATUS "Matlab_ENGINE_LIBRARY = ${Matlab_ENGINE_LIBRARY}")
30-
message(STATUS "Matlab_DATAARRAY_LIBRARY = ${Matlab_DATAARRAY_LIBRARY}")
31-
message(STATUS "Matlab_MAT_LIBRARY = ${Matlab_MAT_LIBRARY}")
32-
message(STATUS "MEX_API_MACRO = ${MEX_API_MACRO}")
33-
message(STATUS "Matlab_MEX_COMPILER = ${Matlab_MEX_COMPILER}")
34-
message(STATUS "Matlab_HAS_CPP_API = ${Matlab_HAS_CPP_API}")
35-
message(STATUS "Matlab_MEX_EXTENSION = ${Matlab_MEX_EXTENSION}")
36-
message(STATUS "MEX_VERSION_FILE = ${MEX_VERSION_FILE}")
37-
message(STATUS "Matlab_INCLUDE_DIRS = ${Matlab_INCLUDE_DIRS}")
38-
message(STATUS "Matlab_BINARIES_DIR = ${Matlab_BINARIES_DIR}")
39-
message(STATUS "Matlab_EXTERN_LIBRARY_DIR = ${Matlab_EXTERN_LIBRARY_DIR}")
40-
message(STATUS "Matlab_EXTERN_BINARIES_DIR = ${Matlab_EXTERN_BINARIES_DIR}")
41-
endfunction()
42-
43-
function(set_matlab_variables)
44-
string(LENGTH ${MATLAB_ADDITIONAL_VERSIONS} matlab_additional_versions_length)
45-
string(FIND "${MATLAB_ADDITIONAL_VERSIONS}" "=" equal_char_pos)
46-
string(SUBSTRING ${MATLAB_ADDITIONAL_VERSIONS} 0 ${equal_char_pos} matlab_release_name)
47-
string(SUBSTRING ${MATLAB_ADDITIONAL_VERSIONS} 0 ${matlab_additional_versions_length} matlab_release_version)
48-
get_filename_component(matlab_root_dir_release ${Matlab_ROOT_DIR} NAME)
49-
50-
if (NOT ${matlab_root_dir_release} STREQUAL ${matlab_release_name})
51-
message(FATAL_ERROR "Unknown MATLAB Release")
52-
endif()
53-
54-
set(Matlab_VERSION_STRING "${matlab_release_version}")
55-
set(Matlab_ENGINE_LIBRARY "${Matlab_ROOT_DIR}/extern/lib/win64/microsoft/libMatlabEngine.lib" PARENT_SCOPE)
56-
set(Matlab_DATAARRAY_LIBRARY "${Matlab_ROOT_DIR}/extern/lib/win64/microsoft/libMatlabDataArray.lib" PARENT_SCOPE)
57-
set(Matlab_MEX_LIBRARY "${Matlab_ROOT_DIR}/extern/lib/win64/microsoft/libmex.lib" PARENT_SCOPE)
58-
set(Matlab_HAS_CPP_API 1 PARENT_SCOPE)
59-
set(Matlab_MX_LIBRARY "${Matlab_ROOT_DIR}/extern/lib/win64/microsoft/libmex.lib" PARENT_SCOPE)
60-
set(Matlab_EXTERN_LIBRARY_DIR "${Matlab_ROOT_DIR}/extern/lib/win64" PARENT_SCOPE)
61-
set(Matlab_INCLUDE_DIRS "${Matlab_ROOT_DIR}/extern/include" PARENT_SCOPE)
62-
set(Matlab_BINARIES_DIR "${Matlab_ROOT_DIR}/bin/win64" PARENT_SCOPE)
63-
set(Matlab_EXTERN_BINARIES_DIR "${Matlab_ROOT_DIR}/extern/bin/win64" PARENT_SCOPE)
64-
endfunction()
65-
66-
set(MATLAB_ADDITIONAL_VERSIONS "R2023b=23.2")
67-
set(Matlab_ROOT_DIR "C:/Program Files/MATLAB/R2023b")
68-
find_package(Matlab REQUIRED)
69-
if (${Matlab_VERSION_STRING} STREQUAL "unknown")
70-
message(STATUS "findMatlab failed to set Matlab_VERSION_STRING")
71-
set_matlab_variables()
72-
print_find_matlab_variables()
73-
endif()
74-
22+
#set(MATLAB_ADDITIONAL_VERSIONS "R2023b=23.2")
23+
#set(Matlab_ROOT_DIR "C:/Program Files/MATLAB/R2023b")
24+
#find_package(Matlab REQUIRED)
25+
#if (${Matlab_VERSION_STRING} STREQUAL "unknown")
26+
# message(STATUS "findMatlab failed to set Matlab_VERSION_STRING")
27+
# set_matlab_variables()
28+
# print_find_matlab_variables()
29+
#endif()
30+
31+
include(MatlabConfig)
32+
MatlabConfigure()
7533

7634
set(MATLAB_ARROW_LIBMEXCLASS_CLIENT_FETCH_CONTENT_NAME libmexclass)
7735
# TODO: Consider using SSH URL for the Git Repository when

matlab/tools/cmake/MatlabConfig.cmake

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# Licensed to the Apache Software Foundation (ASF) under one
2+
# or more contributor license agreements. See the NOTICE file
3+
# distributed with this work for additional information
4+
# regarding copyright ownership. The ASF licenses this file
5+
# to you under the Apache License, Version 2.0 (the
6+
# "License"); you may not use this file except in compliance
7+
# with the License. You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing,
12+
# software distributed under the License is distributed on an
13+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14+
# KIND, either express or implied. See the License for the
15+
# specific language governing permissions and limitations
16+
# under the License.
17+
18+
macro(MatlabPrintVariables)
19+
message(STATUS "Matlab_ROOT_DIR = ${Matlab_ROOT_DIR}")
20+
message(STATUS "Matlab_VERSION_STRING = ${Matlab_VERSION_STRING}")
21+
message(STATUS "Matlab_MAIN_PROGRAM = ${Matlab_MAIN_PROGRAM}")
22+
message(STATUS "Matlab_MX_LIBRARY = ${Matlab_MEX_LIBRARY}")
23+
message(STATUS "Matlab_MEX_LIBRARY = ${Matlab_MEX_LIBRARY}")
24+
message(STATUS "Matlab_ENG_LIBRARY = ${Matlab_ENG_LIBRARY}")
25+
message(STATUS "Matlab_ENGINE_LIBRARY = ${Matlab_ENGINE_LIBRARY}")
26+
message(STATUS "Matlab_DATAARRAY_LIBRARY = ${Matlab_DATAARRAY_LIBRARY}")
27+
message(STATUS "Matlab_MAT_LIBRARY = ${Matlab_MAT_LIBRARY}")
28+
message(STATUS "MEX_API_MACRO = ${MEX_API_MACRO}")
29+
message(STATUS "Matlab_MEX_COMPILER = ${Matlab_MEX_COMPILER}")
30+
message(STATUS "Matlab_HAS_CPP_API = ${Matlab_HAS_CPP_API}")
31+
message(STATUS "Matlab_MEX_EXTENSION = ${Matlab_MEX_EXTENSION}")
32+
message(STATUS "MEX_VERSION_FILE = ${MEX_VERSION_FILE}")
33+
message(STATUS "Matlab_INCLUDE_DIRS = ${Matlab_INCLUDE_DIRS}")
34+
message(STATUS "Matlab_BINARIES_DIR = ${Matlab_BINARIES_DIR}")
35+
message(STATUS "Matlab_EXTERN_LIBRARY_DIR = ${Matlab_EXTERN_LIBRARY_DIR}")
36+
message(STATUS "Matlab_EXTERN_BINARIES_DIR = ${Matlab_EXTERN_BINARIES_DIR}")
37+
endmacro()
38+
39+
macro(MatlabConfigure)
40+
find_package(Matlab REQUIRED)
41+
if (${Matlab_VERSION_STRING} STREQUAL "unknown")
42+
message(STATUS "Matlab_VERSION_STRING is unknown")
43+
if (NOT DEFINED MATLAB_RELEASE_VERSION)
44+
# Temporarily require users to supply MATLAB_RELEASE_VERSION if find_package(Matlab)
45+
# fails to derive the version from the root directory. We can probably determine this
46+
# ourselves by examining the VersionInfo.xml file.
47+
message(FATAL_ERROR "Must supply MATLAB_RELEASE_VERSION")
48+
endif()
49+
50+
set(Matlab_VERSION_STRING "${MATLAB_RELEASE_VERSION}")
51+
set(Matlab_ENGINE_LIBRARY "${Matlab_ROOT_DIR}/extern/lib/win64/microsoft/libMatlabEngine.lib")
52+
set(Matlab_DATAARRAY_LIBRARY "${Matlab_ROOT_DIR}/extern/lib/win64/microsoft/libMatlabDataArray.lib")
53+
set(Matlab_MEX_LIBRARY "${Matlab_ROOT_DIR}/extern/lib/win64/microsoft/libmex.lib")
54+
set(Matlab_HAS_CPP_API 1)
55+
set(Matlab_MX_LIBRARY "${Matlab_ROOT_DIR}/extern/lib/win64/microsoft/libmex.lib")
56+
set(Matlab_EXTERN_LIBRARY_DIR "${Matlab_ROOT_DIR}/extern/lib/win64")
57+
set(Matlab_INCLUDE_DIRS "${Matlab_ROOT_DIR}/extern/include")
58+
set(Matlab_BINARIES_DIR "${Matlab_ROOT_DIR}/bin/win64")
59+
set(Matlab_EXTERN_BINARIES_DIR "${Matlab_ROOT_DIR}/extern/bin/win64")
60+
# Print Matlab-specific variables after set
61+
MatlabPrintVariables()
62+
endif()
63+
64+
endmacro()

0 commit comments

Comments
 (0)