From 0a5869bb6f9dafbf81c5cc593caaf627241bcc7b Mon Sep 17 00:00:00 2001 From: azukizuki Date: Tue, 30 Sep 2025 16:51:27 +0900 Subject: [PATCH 1/2] =?UTF-8?q?3rdparty=E3=83=A9=E3=82=A4=E3=83=96?= =?UTF-8?q?=E3=83=A9=E3=83=AA=E3=81=AE=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 3rdparty/libpng | 2 +- 3rdparty/zlib | 2 +- CMakeLists.txt | 34 ++++++++++++++++++++++++++++++++++ src/CMakeLists.txt | 22 ++++++++++------------ 4 files changed, 46 insertions(+), 14 deletions(-) diff --git a/3rdparty/libpng b/3rdparty/libpng index dcc3505c..a40189cf 160000 --- a/3rdparty/libpng +++ b/3rdparty/libpng @@ -1 +1 @@ -Subproject commit dcc3505c7bd0660876fc80110f8e3581900a186a +Subproject commit a40189cf881e9f0db80511c382292a5604c3c3d1 diff --git a/3rdparty/zlib b/3rdparty/zlib index 04f42cec..51b7f2ab 160000 --- a/3rdparty/zlib +++ b/3rdparty/zlib @@ -1 +1 @@ -Subproject commit 04f42ceca40f73e2978b50e93806c2a18c1281fc +Subproject commit 51b7f2abdade71cd9bb0e7a373ef2610ec6f9daf diff --git a/CMakeLists.txt b/CMakeLists.txt index 030d9926..a2c58ac3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -288,7 +288,41 @@ set(PNG_ARM_NEON "off" set(PNG_ARM_NEON_OPT "0" CACHE STRING "Enable ARM NEON optimizations") set(PNG_STATIC "defined" CACHE STRING "" FORCE) + +# macOS 15 (Sequoia) 以降でfp.hが無いことによるエラーの対応 +# libpng 1.6.37ではfp.hをincludeしているが、 +# macOS 15以降では fp.h がシステムから削除されているためビルドエラーになる。math.hに統合されている +# libpngはUnrealEngineで利用している物とバージョンを揃える必要があるためアップデートが出来ないため、fp.hという名前のヘッダーを作成し、 +# その中でmath.hをincludeするというアプローチでコンパイルを通す + +if(APPLE) + set(FP_H_COMPAT_DIR "${CMAKE_CURRENT_BINARY_DIR}/include_compat") + file(MAKE_DIRECTORY "${FP_H_COMPAT_DIR}") + file(WRITE "${FP_H_COMPAT_DIR}/fp.h" +"/* macOS 15以降で削除された fp.h の互換ヘッダー + * fp.h の機能は math.h に統合されているため、math.h をインクルードします。 + */ +#ifndef _FP_H_COMPAT_ +#define _FP_H_COMPAT_ +#include +#endif +") + include_directories(BEFORE SYSTEM "${FP_H_COMPAT_DIR}") + + # libpngのビルド時のみCFLAGSを一時的に変更するため、現在の値を保存 + set(CMAKE_C_FLAGS_SAVE "${CMAKE_C_FLAGS}") + set(CMAKE_CXX_FLAGS_SAVE "${CMAKE_CXX_FLAGS}") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -isystem ${FP_H_COMPAT_DIR}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -isystem ${FP_H_COMPAT_DIR}") +endif() + add_subdirectory("3rdparty/libpng") + +# libpngのビルド後、CFLAGSを元に戻す(他のサブプロジェクトに影響を与えないため) +if(APPLE) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS_SAVE}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_SAVE}") +endif() set(PNG_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/libpng" "${CMAKE_CURRENT_BINARY_DIR}/3rdparty/libpng") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3c86dcbe..c1c7b367 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -31,10 +31,8 @@ if( NOT(IOS OR ANDROID) ) # 注意点: # libpngのバージョンは、Unreal EngineのPngImageWrapper.hに記載のバージョンに合わせる必要があります。 # そうでないと、UEでパッケージ化したあとexeを起動したときにassertion failedのダイアログが出て強制終了になります。 - # Unreal Engineの対応バージョンを上げるときには併せてPngImageWrapperで利用のlibpngバージョンを確認し、 - # libpngのバージョンが上がる場合はlibplateau submoduleのlibpngを新しいバージョンにしたうえで下のpng15_staticの15を{major_ver}{minor_ver}に置き換える必要がありそうです。 - add_dependencies(plateau libjpeg-turbo png15_static tiff hmm) - target_link_libraries(plateau PRIVATE ${JPEG_TURBO_LIBRARIES} png15_static tiff hmm) + add_dependencies(plateau libjpeg-turbo png_static tiff hmm) + target_link_libraries(plateau PRIVATE ${JPEG_TURBO_LIBRARIES} png_static tiff hmm) target_include_directories(plateau PRIVATE "${JPEG_TURBO_INCLUDE_DIRS}" "${PNG_INCLUDE_DIRS}" @@ -42,13 +40,13 @@ if( NOT(IOS OR ANDROID) ) "${HMM_INCLUDE}" ) else() - target_link_libraries(plateau PUBLIC - "citygml" - "GLTFSDK" - "crypto" - "ssl" + target_link_libraries(plateau PUBLIC + "citygml" + "GLTFSDK" + "crypto" + "ssl" "c_wrapper" - "png15_static" + "png_static" "${LibOpenMeshCore}" "${LibOpenMeshTools}" "hmm" @@ -97,7 +95,7 @@ if(BUILD_LIB_TYPE STREQUAL "static") $ $ $ - $ + $ $ $ ${JPEG_TURBO_LIBRARIES} @@ -116,7 +114,7 @@ if(BUILD_LIB_TYPE STREQUAL "static") endif() if(BUILD_LIB_TYPE STREQUAL "static") - set(COMBINE_LIB_DEPENDS plateau citygml xerces-c GLTFSDK crypto ssl LibXml2 httplib zlibstatic libjpeg-turbo png15_static tiff ${LibOpenMeshCore} ${LibOpenMeshTools} hmm) + set(COMBINE_LIB_DEPENDS plateau citygml xerces-c GLTFSDK crypto ssl LibXml2 httplib zlibstatic libjpeg-turbo png_static tiff ${LibOpenMeshCore} ${LibOpenMeshTools} hmm) # windows で libファイル結合します。 # 参考 : https://stackoverflow.com/questions/60190374/how-to-bundle-multiple-static-libraries-into-single-library-in-cmake-for-windows From 6d99e276310786b52e4f9bdd9dfaded1fb7e3dfb Mon Sep 17 00:00:00 2001 From: azukizuki Date: Thu, 2 Oct 2025 10:57:43 +0900 Subject: [PATCH 2/2] libpng error --- .github/actions/upload-mobile-dlls/action.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/actions/upload-mobile-dlls/action.yml b/.github/actions/upload-mobile-dlls/action.yml index 53d316a5..8b4919b5 100644 --- a/.github/actions/upload-mobile-dlls/action.yml +++ b/.github/actions/upload-mobile-dlls/action.yml @@ -88,6 +88,7 @@ runs: -D CMAKE_OSX_ARCHITECTURES="arm64" -D CMAKE_OSX_DEPLOYMENT_TARGET=13.0 -D CMAKE_BUILD_TYPE=Release + -D CMAKE_C_FLAGS="-DPNG_ARM_NEON_OPT=0" shell: ${{ inputs.shell_type }} - name: Build by CMake