diff --git a/CMakeLists.txt b/CMakeLists.txt index a302f3e8..6d885353 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -315,15 +315,10 @@ if (PROJECT_IS_TOP_LEVEL) #set(CMAKE_CXX_STANDARD 17) # nanobind requires C++17 # for pybind11 - set(CMAKE_CXX_STANDARD 14) + set(CMAKE_CXX_STANDARD 17) else() - if (TINYUSDZ_MSAN) - # Require strict C++17 or later for MSAN build - set(CMAKE_CXX_STANDARD 17) - else() - # Require strict C++14 mode(e.g. `-std=c++14`) - set(CMAKE_CXX_STANDARD 14) - endif() + # Require strict C++17 mode(e.g. `-std=c++17`) + set(CMAKE_CXX_STANDARD 17) endif() set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) diff --git a/doc/PACKED_ARRAY_OPTIMIZATION.md b/doc/PACKED_ARRAY_OPTIMIZATION.md index 57cebddd..de901bc6 100644 --- a/doc/PACKED_ARRAY_OPTIMIZATION.md +++ b/doc/PACKED_ARRAY_OPTIMIZATION.md @@ -203,7 +203,7 @@ All functionality is verified in `test_packed_array.cc`: Run tests: ```bash -g++ -std=c++14 -I. test_packed_array.cc -o test_packed_array +g++ -std=c++17 -I. test_packed_array.cc -o test_packed_array ./test_packed_array ``` diff --git a/examples/openglviewer/CMakeLists.txt b/examples/openglviewer/CMakeLists.txt index 6d710871..a3ef7102 100644 --- a/examples/openglviewer/CMakeLists.txt +++ b/examples/openglviewer/CMakeLists.txt @@ -5,7 +5,7 @@ set(BUILD_TARGET "usdz_glview") project(${BUILD_TARGET} CXX C) -set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED On) set(CMAKE_CXX_EXTENSIONS OFF) diff --git a/examples/optixviewer/CMakeLists.txt b/examples/optixviewer/CMakeLists.txt index bd76c373..f828ef46 100644 --- a/examples/optixviewer/CMakeLists.txt +++ b/examples/optixviewer/CMakeLists.txt @@ -14,7 +14,7 @@ endif() set(OptiX_INSTALL_DIR ${DEFAULT_OPTIX_INSTALL_DIR} CACHE PATH "Path to OptiX installed location.") -set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD 17) find_package(OpenGL REQUIRED) diff --git a/examples/pxrusd/CMakeLists.txt b/examples/pxrusd/CMakeLists.txt index a8699262..ff8f6f25 100644 --- a/examples/pxrusd/CMakeLists.txt +++ b/examples/pxrusd/CMakeLists.txt @@ -20,8 +20,8 @@ find_package(Sanitizers) # Address sanitizer (-DSANITIZE_ADDRESS=ON) find_package(Threads REQUIRED) -# Require strict C++14 -set(CMAKE_CXX_STANDARD 14) +# Require strict C++17 +set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) diff --git a/examples/sdlviewer/CMakeLists.txt b/examples/sdlviewer/CMakeLists.txt index 8c675e5a..fe9bced6 100644 --- a/examples/sdlviewer/CMakeLists.txt +++ b/examples/sdlviewer/CMakeLists.txt @@ -26,8 +26,8 @@ endif() # Use embedded version of OpenSubdiv code by default set(osd_DIR ${PROJECT_SOURCE_DIR}/../../src/osd) -# imgui_sdl requires C++14 -set(CMAKE_CXX_STANDARD 14) +# imgui_sdl requires C++17 +set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) diff --git a/sandbox/abi3/CMakeLists.txt b/sandbox/abi3/CMakeLists.txt index d34a1e1e..2688ede7 100644 --- a/sandbox/abi3/CMakeLists.txt +++ b/sandbox/abi3/CMakeLists.txt @@ -9,7 +9,7 @@ cmake_minimum_required(VERSION 3.15) project(tinyusdz_abi3 C CXX) set(CMAKE_C_STANDARD 11) -set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD 17) # Options option(BUILD_SHARED_LIBS "Build shared library" ON) diff --git a/sandbox/abi3/setup.py b/sandbox/abi3/setup.py index de338420..695d8635 100644 --- a/sandbox/abi3/setup.py +++ b/sandbox/abi3/setup.py @@ -30,15 +30,15 @@ class BuildExt(build_ext): """Custom build extension to set ABI3 flags""" def build_extensions(self): - # Set C++14 standard + # Set C++17 standard if self.compiler.compiler_type == 'unix': for ext in self.extensions: - ext.extra_compile_args.append('-std=c++14') + ext.extra_compile_args.append('-std=c++17') # Enable ABI3 limited API ext.define_macros.append(('Py_LIMITED_API', '0x030a0000')) elif self.compiler.compiler_type == 'msvc': for ext in self.extensions: - ext.extra_compile_args.append('/std:c++14') + ext.extra_compile_args.append('/std:c++17') # Enable ABI3 limited API ext.define_macros.append(('Py_LIMITED_API', '0x030a0000')) diff --git a/sandbox/mtlx-parser/CMakeLists.txt b/sandbox/mtlx-parser/CMakeLists.txt index 6320c3eb..5baa6d99 100644 --- a/sandbox/mtlx-parser/CMakeLists.txt +++ b/sandbox/mtlx-parser/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.10) project(mtlx-parser) -set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # Add include directories diff --git a/sandbox/new-c-api/CMakeLists.txt b/sandbox/new-c-api/CMakeLists.txt index 6cc4fe3e..0213c2e5 100644 --- a/sandbox/new-c-api/CMakeLists.txt +++ b/sandbox/new-c-api/CMakeLists.txt @@ -5,8 +5,8 @@ project(tinyusdz_c VERSION 1.0.0 LANGUAGES C CXX) set(CMAKE_C_STANDARD 99) set(CMAKE_C_STANDARD_REQUIRED ON) -# C++14 for the implementation -set(CMAKE_CXX_STANDARD 14) +# C++17 for the implementation +set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # Options diff --git a/sandbox/new-c-api/Makefile b/sandbox/new-c-api/Makefile index dcf247a3..38ec4ff2 100644 --- a/sandbox/new-c-api/Makefile +++ b/sandbox/new-c-api/Makefile @@ -7,7 +7,7 @@ AR = ar # Flags CFLAGS = -std=c99 -Wall -Wextra -O2 -fPIC -CXXFLAGS = -std=c++14 -Wall -Wextra -O2 -fPIC +CXXFLAGS = -std=c++17 -Wall -Wextra -O2 -fPIC LDFLAGS = -shared # Paths diff --git a/sandbox/primvar_type/Makefile b/sandbox/primvar_type/Makefile index 956d24e1..a2535498 100644 --- a/sandbox/primvar_type/Makefile +++ b/sandbox/primvar_type/Makefile @@ -1,2 +1,2 @@ all: - clang++ -Weverything -fsanitize=address -Wall -Wno-c++98-compat -Wno-padded -std=c++14 -fno-rtti -fno-exceptions -g main.cc ../../src/external/staticstruct.cc + clang++ -Weverything -fsanitize=address -Wall -Wno-c++98-compat -Wno-padded -std=c++17 -fno-rtti -fno-exceptions -g main.cc ../../src/external/staticstruct.cc diff --git a/sandbox/print_fp/Makefile b/sandbox/print_fp/Makefile index a0d8df98..01f022ae 100644 --- a/sandbox/print_fp/Makefile +++ b/sandbox/print_fp/Makefile @@ -1,4 +1,4 @@ all: - g++ -O2 -g -std=c++14 print_fp.cc -I ../../src/external/dragonbox/ ../../src/external/dragonbox/dragonbox_to_chars.cpp -I../../src/external -o print_fp + g++ -O2 -g -std=c++17 print_fp.cc -I ../../src/external/dragonbox/ ../../src/external/dragonbox/dragonbox_to_chars.cpp -I../../src/external -o print_fp #clang++ -O2 -g print_fp.cc -I ../../src/external/dragonbox/ ../../src/external/dragonbox/dragonbox_to_chars.cpp -I../../src/external #clang++ -O2 -g print_fp.cc -I ../../src/external/ diff --git a/sandbox/reflection/CMakeLists.txt b/sandbox/reflection/CMakeLists.txt index 986d72d2..e2f188d8 100644 --- a/sandbox/reflection/CMakeLists.txt +++ b/sandbox/reflection/CMakeLists.txt @@ -1,4 +1,4 @@ cmake_minimum_required(VERSION 3.1) project(FlexibleReflection) -set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD 17) add_executable(FlexibleReflection main.cc Primitives.cpp Reflect.h) diff --git a/sandbox/simple_variant/Makefile b/sandbox/simple_variant/Makefile index 3b0cb5db..f49f0ea8 100644 --- a/sandbox/simple_variant/Makefile +++ b/sandbox/simple_variant/Makefile @@ -1,3 +1,3 @@ all: - #clang++ -std=c++14 -I../../src tusdz-variant.cc - clang++ -std=c++14 -I../../src main.cc + #clang++ -std=c++17 -I../../src tusdz-variant.cc + clang++ -std=c++17 -I../../src main.cc diff --git a/sandbox/static_any/CMakeLists.txt b/sandbox/static_any/CMakeLists.txt index 95a87dba..31c95885 100644 --- a/sandbox/static_any/CMakeLists.txt +++ b/sandbox/static_any/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.10) project(static_any_test) -set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) add_executable(test_static_any test_static_any.cc) diff --git a/sandbox/task-queue/IMPLEMENTATION.md b/sandbox/task-queue/IMPLEMENTATION.md index 1a1bd22b..cf47f0d7 100644 --- a/sandbox/task-queue/IMPLEMENTATION.md +++ b/sandbox/task-queue/IMPLEMENTATION.md @@ -208,5 +208,5 @@ This makes it suitable for: Example compilation: ```bash -g++ -std=c++14 -fno-exceptions -fno-rtti -pthread -O2 example.cc -o example +g++ -std=c++17 -fno-exceptions -fno-rtti -pthread -O2 example.cc -o example ``` diff --git a/sandbox/task-queue/Makefile b/sandbox/task-queue/Makefile index 796171b4..5146ac54 100644 --- a/sandbox/task-queue/Makefile +++ b/sandbox/task-queue/Makefile @@ -1,7 +1,7 @@ CXX ?= g++ -CXXFLAGS = -std=c++14 -Wall -Wextra -O2 -pthread -CXXFLAGS_DEBUG = -std=c++14 -Wall -Wextra -g -O0 -pthread -fsanitize=thread -CXXFLAGS_NO_EXCEPT = -std=c++14 -Wall -Wextra -O2 -pthread -fno-exceptions -fno-rtti +CXXFLAGS = -std=c++17 -Wall -Wextra -O2 -pthread +CXXFLAGS_DEBUG = -std=c++17 -Wall -Wextra -g -O0 -pthread -fsanitize=thread +CXXFLAGS_NO_EXCEPT = -std=c++17 -Wall -Wextra -O2 -pthread -fno-exceptions -fno-rtti TARGET = task_queue_example TARGET_DEBUG = task_queue_example_debug diff --git a/sandbox/task-queue/README.md b/sandbox/task-queue/README.md index e6237827..813f48a2 100644 --- a/sandbox/task-queue/README.md +++ b/sandbox/task-queue/README.md @@ -112,7 +112,7 @@ The implementation is designed to work without C++ exceptions or RTTI: To verify: ```bash -g++ -std=c++14 -fno-exceptions -fno-rtti -c task-queue.hh +g++ -std=c++17 -fno-exceptions -fno-rtti -c task-queue.hh ``` ## Example Output diff --git a/sandbox/task-queue/VERIFICATION.md b/sandbox/task-queue/VERIFICATION.md index d1c9d4fa..d30708c6 100644 --- a/sandbox/task-queue/VERIFICATION.md +++ b/sandbox/task-queue/VERIFICATION.md @@ -40,13 +40,13 @@ The header file `task-queue.hh` contains: ### Test 1: Header Compilation ```bash -g++ -std=c++14 -fno-exceptions -fno-rtti -c task-queue.hh +g++ -std=c++17 -fno-exceptions -fno-rtti -c task-queue.hh ``` **Result**: ✅ PASSED (compiles without errors) ### Test 2: Full Example Compilation ```bash -g++ -std=c++14 -Wall -Wextra -O2 -pthread -fno-exceptions -fno-rtti example.cc -o task_queue_example_no_except +g++ -std=c++17 -Wall -Wextra -O2 -pthread -fno-exceptions -fno-rtti example.cc -o task_queue_example_no_except ``` **Result**: ✅ PASSED (compiles without errors or warnings) @@ -115,19 +115,18 @@ The implementation successfully uses: - **Multi-threaded**: Lock-free CAS operations, no mutex contention - **Scalability**: Tested up to 8 concurrent threads (4P+4C) -## C++14 Compatibility +## C++17 Compatibility -The implementation uses only C++14 standard features: +The implementation uses only C++17 standard features: - ✅ `std::atomic` (C++11) - ✅ `std::function` (C++11) - ✅ `std::mutex` and `std::lock_guard` (C++11, fallback only) - ✅ `std::thread` (C++11, tests only) - ✅ Lambda expressions (C++11) -- ✅ No C++17 or later features Verified with: ```bash -g++ -std=c++14 -Werror=c++17-extensions ... +g++ -std=c++17 ... ``` ## Dependencies diff --git a/sandbox/threejs/CMakeLists.txt b/sandbox/threejs/CMakeLists.txt index 948066ac..4000d93e 100644 --- a/sandbox/threejs/CMakeLists.txt +++ b/sandbox/threejs/CMakeLists.txt @@ -9,7 +9,7 @@ endif() project(${BUILD_TARGET} CXX C) -set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) diff --git a/src/osd/opensubdiv/CMakeLists.txt b/src/osd/opensubdiv/CMakeLists.txt index f01a8a05..2cf19171 100644 --- a/src/osd/opensubdiv/CMakeLists.txt +++ b/src/osd/opensubdiv/CMakeLists.txt @@ -80,7 +80,7 @@ if (NOT NO_LIB) list(APPEND PLATFORM_GPU_LIBRARIES ${METAL_LIBRARIES} ) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17") endif() if ( OPENCL_FOUND ) diff --git a/tests/feat/mtlx/Makefile b/tests/feat/mtlx/Makefile index 25c99598..8f6f0c32 100644 --- a/tests/feat/mtlx/Makefile +++ b/tests/feat/mtlx/Makefile @@ -15,7 +15,7 @@ BUILD_DIR = $(ROOT_DIR)/build # Compiler settings CXX ?= g++ -CXXFLAGS = -std=c++14 -Wall -O2 +CXXFLAGS = -std=c++17 -Wall -O2 INCLUDES = -I$(SRC_DIR) \ -I$(INCLUDE_DIR) \ -I$(EXTERNAL_DIR)/jsonhpp diff --git a/tests/feat/mtlx/Makefile.grouped_params b/tests/feat/mtlx/Makefile.grouped_params index 35cc7813..58d5d962 100644 --- a/tests/feat/mtlx/Makefile.grouped_params +++ b/tests/feat/mtlx/Makefile.grouped_params @@ -1,5 +1,5 @@ CXX = g++ -CXXFLAGS = -std=c++14 -I../../../src -I../../../ +CXXFLAGS = -std=c++17 -I../../../src -I../../../ LDFLAGS = -L../../../build -ltinyusdz_static -lpthread test_grouped_params: test_grouped_params.cc diff --git a/tests/feat/typed-array-factories/Makefile b/tests/feat/typed-array-factories/Makefile index 35509152..f9ae3819 100644 --- a/tests/feat/typed-array-factories/Makefile +++ b/tests/feat/typed-array-factories/Makefile @@ -2,7 +2,7 @@ # Standalone test that can be built without CMake CXX = g++-13 -CXXFLAGS = -std=c++14 -Wall -Wextra -O2 -g +CXXFLAGS = -std=c++17 -Wall -Wextra -O2 -g INCLUDES = -I../../../src # Source files diff --git a/tests/feat/typed-array-factories/README.md b/tests/feat/typed-array-factories/README.md index 6780aac9..7d05c4cb 100644 --- a/tests/feat/typed-array-factories/README.md +++ b/tests/feat/typed-array-factories/README.md @@ -55,7 +55,7 @@ make clean ### Manual Compilation ```bash -g++-13 -std=c++14 -I../../../src test-typed-array-factories.cc -o test-typed-array-factories +g++-13 -std=c++17 -I../../../src test-typed-array-factories.cc -o test-typed-array-factories ./test-typed-array-factories ``` diff --git a/tests/feat/typed-array-timesamples/Makefile b/tests/feat/typed-array-timesamples/Makefile index c94b1574..d67779e2 100644 --- a/tests/feat/typed-array-timesamples/Makefile +++ b/tests/feat/typed-array-timesamples/Makefile @@ -6,7 +6,7 @@ # Compiler settings CXX ?= g++ -CXXFLAGS = -std=c++14 -Wall -Wextra -O2 -g +CXXFLAGS = -std=c++17 -Wall -Wextra -O2 -g INCLUDES = -I../../../src -I../../../src/external # TinyUSDZ root directory (3 levels up from this Makefile) diff --git a/tests/feat/typed-array-view/Makefile b/tests/feat/typed-array-view/Makefile index d8cccd81..89d66588 100644 --- a/tests/feat/typed-array-view/Makefile +++ b/tests/feat/typed-array-view/Makefile @@ -1,7 +1,7 @@ # Makefile for TypedArrayView test CXX = g++ -CXXFLAGS = -std=c++14 -Wall -Wextra -I../../../ -I../../../src +CXXFLAGS = -std=c++17 -Wall -Wextra -I../../../ -I../../../src LDFLAGS = # Source files diff --git a/tests/fuzzer/meson.build b/tests/fuzzer/meson.build index 033f4516..69028383 100644 --- a/tests/fuzzer/meson.build +++ b/tests/fuzzer/meson.build @@ -1,4 +1,4 @@ -project('fuzz_tinyusdz', 'c', 'cpp', default_options : ['cpp_std=c++14']) +project('fuzz_tinyusdz', 'c', 'cpp', default_options : ['cpp_std=c++17']) tinyusdz_sources=[ '../../src/asset-resolution.cc',