Skip to content

Commit 757173d

Browse files
committed
Refactor boost linking
1 parent 62bff38 commit 757173d

File tree

7 files changed

+44
-41
lines changed

7 files changed

+44
-41
lines changed

.github/scripts/maya.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,21 @@
1919
MAYA_USD_SDK_RELEASE_ASSET_ELEMENTS_REGEX = re.compile(
2020
"MayaUSD_([0-9.]+)_Maya([0-9.]+)_(Linux|Windows).(run|exe)"
2121
)
22-
MAYA_PYTHON_VERSION_MAPPING = {"2024.2": "3.10.11", "2025.2": "3.11.4"}
22+
MAYA_PYTHON_VERSION_MAPPING = {"2024.2": "3.10.11", "2025.2": "3.11.4", "2026.2": "3.11.9"}
2323
PYTHON_SOURCE_DOWNLOAD_URL = {
2424
"3.10.11": "https://www.python.org/ftp/python/3.10.11/Python-3.10.11.tgz",
2525
"3.11.4": "https://www.python.org/ftp/python/3.11.4/Python-3.11.4.tgz",
26+
"3.11.9": "https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tgz",
2627
}
2728
PYTHON_WINDOWS_DOWNLOAD_URL = {
2829
"3.10.11": "https://www.python.org/ftp/python/3.10.11/python-3.10.11-amd64.exe",
2930
"3.11.4": "https://www.python.org/ftp/python/3.11.4/python-3.11.4-amd64.exe",
31+
"3.11.9": "https://www.python.org/ftp/python/3.11.9/python-3.11.9-amd64.exe",
3032
}
3133
SEVENZIP_WINDOWS_DOWNLOAD_URL = {
3234
"2301": "https://www.7-zip.org/a/7z2401-x64.exe"
3335
}
3436

35-
3637
logging.basicConfig(format="%(asctime)s %(message)s", datefmt="%m/%d/%Y %I:%M:%S %p", level=logging.INFO)
3738

3839

@@ -122,7 +123,7 @@ def get_autodesk_maya_usd_sdk_releases(platform_name, maya_version):
122123
return releases
123124

124125

125-
def install_autodesk_product(product, version, install_dir_path):
126+
def install_autodesk_product(product, version, dependency_dir_path):
126127
"""Install a USD SDK release of Maya
127128
Args:
128129
product (str): The target product name (e.g. maya, etc.)
@@ -133,9 +134,9 @@ def install_autodesk_product(product, version, install_dir_path):
133134
python_version = MAYA_PYTHON_VERSION_MAPPING[version]
134135

135136
# Directories
136-
download_dir_path = os.path.join(install_dir_path, "download")
137-
install_dir_path = os.path.join(install_dir_path, "install")
138-
tmp_dir_path = os.path.join(install_dir_path, "tmp")
137+
download_dir_path = os.path.join(dependency_dir_path, "download")
138+
install_dir_path = os.path.join(dependency_dir_path, "install")
139+
tmp_dir_path = os.path.join(dependency_dir_path, "tmp")
139140
if os.path.exists(download_dir_path):
140141
shutil.rmtree(download_dir_path)
141142
if os.path.exists(install_dir_path):
@@ -203,7 +204,8 @@ def install_autodesk_product(product, version, install_dir_path):
203204
# process = subprocess.check_call(command, cwd=maya_usd_sdk_extract_dir_path)
204205
command = ["rpm", "-i", "--nodeps","--prefix", maya_usd_sdk_extract_dir_path, maya_usd_sdk_extract_rpm_file_path]
205206
process = subprocess.check_call(command, stdout=subprocess.DEVNULL, stderr=subprocess.PIPE, cwd=maya_usd_sdk_extract_dir_path)
206-
maya_usd_sdk_extract_usd_dir_path = glob.glob("{root_dir}{sep}**{sep}mayausd{sep}USD".format(root_dir=maya_usd_sdk_extract_dir_path, sep=os.path.sep), recursive=True)[0]
207+
# Maya now ships with multiple USD builds, we choose the first one implicitly (as this is how Autodesk resolve the current 'default').
208+
maya_usd_sdk_extract_usd_dir_path = glob.glob("{root_dir}{sep}**{sep}mayausd{sep}USD*".format(root_dir=maya_usd_sdk_extract_dir_path, sep=os.path.sep), recursive=True)[0]
207209
maya_usd_sdk_extract_usd_dir_path = os.path.join(maya_usd_sdk_extract_dir_path, maya_usd_sdk_extract_usd_dir_path)
208210
os.rename(maya_usd_sdk_extract_usd_dir_path, maya_usd_sdk_install_dir_path)
209211
os.chmod(maya_usd_sdk_install_dir_path, 0o777)

.github/workflows/build_maya.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
strategy:
2020
matrix:
2121
maya_product_name: ["maya"]
22-
maya_product_version: ["2024.2", "2025.2"]
22+
maya_product_version: ["2024.2", "2025.2", "2026.2"]
2323
steps:
2424
- name: Checkout repository
2525
uses: actions/checkout@v4
@@ -115,7 +115,7 @@ jobs:
115115
strategy:
116116
matrix:
117117
maya_product_name: ["maya"]
118-
maya_product_version: ["2025.2"]
118+
maya_product_version: ["2025.2", "2026.2"]
119119
steps:
120120
- name: Checkout repository
121121
uses: actions/checkout@v4
@@ -162,7 +162,7 @@ jobs:
162162
matrix:
163163
os: ["linux", "windows"]
164164
maya_product_name: ["maya"]
165-
maya_product_version: ["2024.2", "2025.2"]
165+
maya_product_version: ["2024.2", "2025.2", "2026.2"]
166166
exclude:
167167
- os: "windows"
168168
maya_product_name: "maya"

CMakeLists.txt

Lines changed: 21 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,9 @@ else()
7878
endif()
7979
# DCC
8080
# Per DCC we have to define the following variables:
81+
# Python: AR_PYTHON_LIB_DIR, AR_PYTHON_LIB, AR_PYTHON_LIB_NUMBER, AR_PYTHON_INCLUDE_DIR, AR_PYTHON_EXECUTABLE
8182
# USD: AR_PXR_LIB_DIR, AR_PXR_LIB_PREFIX, AR_PXR_INCLUDE_DIR, AR_PXR_PYTHON_LIB_SITEPACKAGES
82-
# Python: AR_PYTHON_LIB, AR_PYTHON_LIB_NUMBER, AR_PYTHON_INCLUDE_DIR, AR_PYTHON_EXECUTABLE
83-
# Boost: AR_BOOST_NAMESPACE, AR_BOOST_PYTHON_LIB, AR_BOOST_INCLUDE_DIR, AR_BOOST_FOLDER_NAMESPACE, AR_BOOST_PXR_EXTERNAL_EXISTS
83+
# Boost: AR_BOOST_LIB_DIR, AR_BOOST_PYTHON_LIB, AR_BOOST_INCLUDE_DIR, AR_BOOST_NAMESPACE, AR_BOOST_FOLDER_NAMESPACE, AR_BOOST_PXR_EXTERNAL_EXISTS
8484
if("$ENV{AR_DCC_NAME}" STREQUAL "HOUDINI")
8585
# Houdini
8686
set(AR_HOUDINI_ROOT $ENV{HFS} CACHE PATH "Houdini install directory")
@@ -125,32 +125,33 @@ if("$ENV{AR_DCC_NAME}" STREQUAL "HOUDINI")
125125
endif()
126126
if (WIN32)
127127
set(AR_PYTHON_LIB_DIR ${AR_HOUDINI_ROOT}/${AR_PYTHON_LIB_NUMBER}/libs)
128+
set(AR_PYTHON_INCLUDE_DIR ${AR_HOUDINI_ROOT}/${AR_PYTHON_LIB_NUMBER}/include)
128129
else()
129130
set(AR_PYTHON_LIB_DIR ${AR_HOUDINI_ROOT}/python/lib)
131+
set(AR_PYTHON_INCLUDE_DIR ${AR_HOUDINI_ROOT}/python/include/${AR_PYTHON_LIB})
130132
endif()
131-
set(AR_PYTHON_INCLUDE_DIR ${AR_HOUDINI_INCLUDE_DIR}/${AR_PYTHON_LIB})
132133
set(AR_PYTHON_EXECUTABLE ${AR_HOUDINI_ROOT}/python/bin/python)
133134
# Usd
134135
if (WIN32)
135-
set(AR_PXR_LIB_DIR ${AR_HOUDINI_ROOT}/custom/houdini/dsolib)
136136
set(AR_PXR_LIB_PREFIX "libpxr_")
137137
set(AR_PXR_PYTHON_LIB_SITEPACKAGES ${AR_HOUDINI_ROOT}/${AR_PYTHON_LIB_NUMBER}/lib/site-packages)
138138
else()
139-
set(AR_PXR_LIB_DIR ${AR_HOUDINI_ROOT}/dsolib)
140139
set(AR_PXR_LIB_PREFIX "pxr_")
141140
set(AR_PXR_PYTHON_LIB_SITEPACKAGES ${AR_HOUDINI_ROOT}/${AR_PYTHON_LIB_NUMBER}/lib/site-packages)
142141
endif()
142+
set(AR_PXR_LIB_DIR ${AR_HOUDINI_LIB_DIR})
143143
set(AR_PXR_INCLUDE_DIR ${AR_HOUDINI_INCLUDE_DIR})
144144
# Boost
145145
if(EXISTS "${AR_PXR_INCLUDE_DIR}/pxr/external/boost")
146146
set(AR_BOOST_PXR_EXTERNAL_EXISTS 1)
147147
set(AR_BOOST_NAMESPACE pxr_boost)
148148
set(AR_BOOST_FOLDER_NAMESPACE boost)
149149
if (WIN32)
150-
set(AR_BOOST_PYTHON_LIB lib${AR_BOOST_NAMESPACE})
151-
else()
152-
set(AR_BOOST_PYTHON_LIB ${AR_BOOST_NAMESPACE})
150+
set(AR_BOOST_PYTHON_LIB lib${AR_BOOST_NAMESPACE} ${AR_PXR_LIB_PREFIX}python)
151+
else()
152+
set(AR_BOOST_PYTHON_LIB ${AR_BOOST_NAMESPACE} ${AR_PXR_LIB_PREFIX}python)
153153
endif()
154+
set(AR_BOOST_LIB_DIR ${AR_HOUDINI_LIB_DIR})
154155
set(AR_BOOST_INCLUDE_DIR ${AR_PXR_INCLUDE_DIR}/pxr/external)
155156
else()
156157
set(AR_BOOST_PXR_EXTERNAL_EXISTS 0)
@@ -161,6 +162,7 @@ if("$ENV{AR_DCC_NAME}" STREQUAL "HOUDINI")
161162
else()
162163
set(AR_BOOST_PYTHON_LIB ${AR_BOOST_NAMESPACE}_${AR_PYTHON_LIB_NUMBER})
163164
endif()
165+
set(AR_BOOST_LIB_DIR ${AR_HOUDINI_LIB_DIR})
164166
set(AR_BOOST_INCLUDE_DIR ${AR_HOUDINI_INCLUDE_DIR})
165167
endif()
166168
elseif("$ENV{AR_DCC_NAME}" STREQUAL "MAYA")
@@ -172,10 +174,10 @@ elseif("$ENV{AR_DCC_NAME}" STREQUAL "MAYA")
172174
# Python
173175
set(AR_PYTHON_ROOT $ENV{PYTHON_ROOT} CACHE PATH "Python install directory")
174176
if (WIN32)
175-
if(EXISTS "${AR_MAYA_USD_SDK_LIB_DIR}/boost_python311-vc143-mt-x64-1_81.dll")
177+
if(EXISTS "${AR_PYTHON_ROOT}/python311.dll")
176178
set(AR_PYTHON_LIB python3.11)
177179
set(AR_PYTHON_LIB_NUMBER python311)
178-
elseif(EXISTS "${AR_MAYA_USD_SDK_LIB_DIR}/boost_python310-vc142-mt-x64-1_76.dll")
180+
elseif(EXISTS "${AR_MAYA_USD_SDK_LIB_DIR}/python310.dll")
179181
set(AR_PYTHON_LIB python3.10)
180182
set(AR_PYTHON_LIB_NUMBER python310)
181183
else()
@@ -204,11 +206,10 @@ elseif("$ENV{AR_DCC_NAME}" STREQUAL "MAYA")
204206
# Usd
205207
if (WIN32)
206208
set(AR_PXR_LIB_DIR ${AR_MAYA_USD_SDK_DEVKIT_ROOT}/lib)
207-
set(AR_PXR_LIB_PREFIX "usd_")
208209
else()
209210
set(AR_PXR_LIB_DIR ${AR_MAYA_USD_SDK_ROOT}/lib)
210-
set(AR_PXR_LIB_PREFIX "usd_")
211211
endif()
212+
set(AR_PXR_LIB_PREFIX "usd_")
212213
set(AR_PXR_INCLUDE_DIR ${AR_MAYA_USD_SDK_DEVKIT_ROOT}/include)
213214
set(AR_PXR_PYTHON_LIB_SITEPACKAGES ${AR_MAYA_USD_SDK_ROOT}/lib/python)
214215
# Boost
@@ -217,16 +218,11 @@ elseif("$ENV{AR_DCC_NAME}" STREQUAL "MAYA")
217218
set(AR_BOOST_NAMESPACE pxr_boost)
218219
set(AR_BOOST_FOLDER_NAMESPACE boost)
219220
if (WIN32)
220-
if(EXISTS "${AR_MAYA_USD_SDK_LIB_DIR}/boost_python311-vc143-mt-x64-1_81.dll")
221-
set(AR_BOOST_PYTHON_LIB ${AR_BOOST_NAMESPACE}_${AR_PYTHON_LIB_NUMBER}-vc143-mt-x64-1_81)
222-
elseif(EXISTS "${AR_MAYA_USD_SDK_LIB_DIR}/boost_python310-vc142-mt-x64-1_76.dll")
223-
set(AR_BOOST_PYTHON_LIB ${AR_BOOST_NAMESPACE}_${AR_PYTHON_LIB_NUMBER}-vc142-mt-x64-1_76)
224-
else()
225-
message(FATAL_ERROR "Failed to find compatible Python Boost libs.")
226-
endif()
221+
set(AR_BOOST_PYTHON_LIB ${AR_PXR_LIB_PREFIX}boost ${AR_PXR_LIB_PREFIX}python)
227222
else()
228-
set(AR_BOOST_PYTHON_LIB ${AR_BOOST_NAMESPACE})
223+
set(AR_BOOST_PYTHON_LIB ${AR_BOOST_NAMESPACE} ${AR_PXR_LIB_PREFIX}python)
229224
endif()
225+
set(AR_BOOST_LIB_DIR ${AR_PXR_LIB_DIR})
230226
set(AR_BOOST_INCLUDE_DIR ${AR_PXR_INCLUDE_DIR}/pxr/external)
231227
else()
232228
set(AR_BOOST_PXR_EXTERNAL_EXISTS 0)
@@ -289,12 +285,13 @@ list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/defaults)
289285
# Boost Namespace Wrapper
290286
include(setBoostNamespace)
291287
include_directories(${CMAKE_SOURCE_DIR}/src/utils)
292-
# Houdini
293-
link_directories(${AR_HOUDINI_LIB_DIR})
294-
# Usd (Already provided via Houdini)
295-
link_directories(${AR_PXR_LIB_DIR})
288+
296289
# Python
297290
link_directories(${AR_PYTHON_LIB_DIR})
291+
# Usd
292+
link_directories(${AR_PXR_LIB_DIR})
293+
# Boost
294+
link_directories(${AR_BOOST_LIB_DIR})
298295

299296
### Targets ###
300297
## Maintained in this repo

setup.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ then
55
export REPO_SOURCED=1
66
export REPO_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")" &> /dev/null && (pwd -W 2> /dev/null || pwd))
77
# Define Resolver > Has to be one of 'fileResolver'/'pythonResolver'/'cachedResolver'/'httpResolver'
8-
export AR_RESOLVER_NAME=httpResolver
8+
export AR_RESOLVER_NAME=cachedResolver
99
export AR_RESOLVER_NAME_UPPERCASE=$(echo ${AR_RESOLVER_NAME} | tr '[:lower:]' '[:upper:]')
1010
# DCC
1111
export AR_DCC_NAME=HOUDINI

src/CachedResolver/CMakeLists.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ set_boost_folder_namespace(${AR_CACHEDRESOLVER_TARGET_LIB})
3030
set_boost_pxr_external_exists(${AR_CACHEDRESOLVER_TARGET_LIB})
3131
# Libs
3232
target_link_libraries(${AR_CACHEDRESOLVER_TARGET_LIB}
33+
${AR_PYTHON_LIB}
3334
${AR_PXR_LIB_PREFIX}arch
3435
${AR_PXR_LIB_PREFIX}tf
3536
${AR_PXR_LIB_PREFIX}gf
@@ -41,9 +42,9 @@ target_link_libraries(${AR_CACHEDRESOLVER_TARGET_LIB}
4142
# Headers
4243
target_include_directories(${AR_CACHEDRESOLVER_TARGET_LIB}
4344
PUBLIC
44-
${AR_BOOST_INCLUDE_DIR}
4545
${AR_PYTHON_INCLUDE_DIR}
4646
${AR_PXR_INCLUDE_DIR}
47+
${AR_BOOST_INCLUDE_DIR}
4748
)
4849
# Props
4950
# Remove default "lib" prefix
@@ -88,9 +89,9 @@ target_link_libraries(${AR_CACHEDRESOLVER_TARGET_PYTHON}
8889
# Headers
8990
target_include_directories(${AR_CACHEDRESOLVER_TARGET_PYTHON}
9091
PUBLIC
91-
${AR_BOOST_INCLUDE_DIR}
9292
${AR_PYTHON_INCLUDE_DIR}
9393
${AR_PXR_INCLUDE_DIR}
94+
${AR_BOOST_INCLUDE_DIR}
9495
)
9596
# Props
9697
# Remove default "lib" prefix

src/FileResolver/CMakeLists.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ set_boost_folder_namespace(${AR_FILERESOLVER_TARGET_LIB})
2020
set_boost_pxr_external_exists(${AR_FILERESOLVER_TARGET_LIB})
2121
# Libs
2222
target_link_libraries(${AR_FILERESOLVER_TARGET_LIB}
23+
${AR_PYTHON_LIB}
2324
${AR_PXR_LIB_PREFIX}arch
2425
${AR_PXR_LIB_PREFIX}tf
2526
${AR_PXR_LIB_PREFIX}gf
@@ -31,9 +32,9 @@ target_link_libraries(${AR_FILERESOLVER_TARGET_LIB}
3132
# Headers
3233
target_include_directories(${AR_FILERESOLVER_TARGET_LIB}
3334
PUBLIC
34-
${AR_BOOST_INCLUDE_DIR}
3535
${AR_PYTHON_INCLUDE_DIR}
3636
${AR_PXR_INCLUDE_DIR}
37+
${AR_BOOST_INCLUDE_DIR}
3738
)
3839
# Props
3940
# Remove default "lib" prefix
@@ -73,9 +74,9 @@ target_link_libraries(${AR_FILERESOLVER_TARGET_PYTHON}
7374
# Headers
7475
target_include_directories(${AR_FILERESOLVER_TARGET_PYTHON}
7576
PUBLIC
76-
${AR_BOOST_INCLUDE_DIR}
7777
${AR_PYTHON_INCLUDE_DIR}
7878
${AR_PXR_INCLUDE_DIR}
79+
${AR_BOOST_INCLUDE_DIR}
7980
)
8081
# Props
8182
# Remove default "lib" prefix

src/PythonResolver/CMakeLists.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,21 @@ set_boost_folder_namespace(${AR_PYTHONRESOLVER_TARGET_LIB})
2020
set_boost_pxr_external_exists(${AR_PYTHONRESOLVER_TARGET_LIB})
2121
# Libs
2222
target_link_libraries(${AR_PYTHONRESOLVER_TARGET_LIB}
23+
${AR_PYTHON_LIB}
2324
${AR_PXR_LIB_PREFIX}arch
2425
${AR_PXR_LIB_PREFIX}tf
2526
${AR_PXR_LIB_PREFIX}gf
2627
${AR_PXR_LIB_PREFIX}vt
2728
${AR_PXR_LIB_PREFIX}ar
29+
${AR_PXR_LIB_PREFIX}sdf
2830
${AR_BOOST_PYTHON_LIB}
2931
)
3032
# Headers
3133
target_include_directories(${AR_PYTHONRESOLVER_TARGET_LIB}
3234
PUBLIC
33-
${AR_BOOST_INCLUDE_DIR}
3435
${AR_PYTHON_INCLUDE_DIR}
3536
${AR_PXR_INCLUDE_DIR}
37+
${AR_BOOST_INCLUDE_DIR}
3638
)
3739
# Props
3840
# Remove default "lib" prefix
@@ -74,9 +76,9 @@ target_link_libraries(${AR_PYTHONRESOLVER_TARGET_PYTHON}
7476
# Headers
7577
target_include_directories(${AR_PYTHONRESOLVER_TARGET_PYTHON}
7678
PUBLIC
77-
${AR_BOOST_INCLUDE_DIR}
7879
${AR_PYTHON_INCLUDE_DIR}
7980
${AR_PXR_INCLUDE_DIR}
81+
${AR_BOOST_INCLUDE_DIR}
8082
)
8183
# Props
8284
# Remove default "lib" prefix

0 commit comments

Comments
 (0)