isle-portable/cmake/Findiniparser.cmake

73 lines
2.7 KiB
CMake
Raw Permalink Normal View History

Fix mingw build + copy d3drm from wine (#25) * Fix engineConfig declaration crossing jump This fixes the following error: ``` /src/isle-portable/LEGO1/omni/src/audio/mxsoundmanager.cpp: In member function 'virtual MxResult MxSoundManager::Create(MxU32, MxBool)': /src/isle-portable/LEGO1/omni/src/audio/mxsoundmanager.cpp:119:1: error: jump to label 'done' 119 | done: | ^~~~ /src/isle-portable/LEGO1/omni/src/audio/mxsoundmanager.cpp:78:22: note: from here 78 | goto done; | ^~~~ /src/isle-portable/LEGO1/omni/src/audio/mxsoundmanager.cpp:84:26: note: crosses initialization of 'ma_engine_config engineConfig' 84 | ma_engine_config engineConfig = ma_engine_config_init(); | ^~~~~~~~~~~~ ``` * Fix 'invalid conversion from 'SDL_FunctionPointer' {aka 'void (*)()'} to 'void*' * /SAFESEH:NO is a VC thing * SDL3 is still instable * Cannot forward declare and use enum * Remove MusicManager from public LEGO1.DLL interface * Copy d3d from wine git 6c5d17af07a318d754c0c21023b2d162a0d3725d * Build d3drm-wine with 32-bit mingw * cmake: move 3rd party targets to cmake script in 3rdparty directory * cmake: bump minimum required CMake version to 3.25 to allow adding a subproject with SYSTEM automatically applied An alternative would be to use SYSTEM in target_include_directories in the 3rd party cmake script. * Add a minimal Findiniparser.cmake (not all distributions carry the upstream iniparser-config.cmake files) * Add wine's d3drm headers * cmake: merge ISLE_USE_DX5_LIBS into ISLE_USE_DX5 * cmake: Build all shared libraries in the binary output directory (to avoid PATH issues) * ci: enable msys2 mingw32 build * Disable clang-tidy on d3drm wine * Thread functions must have SDLCALL call convention * cmake: disable clang-tidy for miniaudio and libsmacker as well * Hopefully fix c++ format and skip ncc naming violation * clang-format violations keep up popping out of nowhere * No need for lego/legoomni/include * ncc: define SDLCALL as empty instead
2024-06-24 10:25:51 -04:00
if(WIN32)
set(__iniparser_shared_names "libiniparser.dll.a" "iniparser.lib")
set(__iniparser_static_names "libiniparser.a" "libiniparser.lib")
Fix mingw build + copy d3drm from wine (#25) * Fix engineConfig declaration crossing jump This fixes the following error: ``` /src/isle-portable/LEGO1/omni/src/audio/mxsoundmanager.cpp: In member function 'virtual MxResult MxSoundManager::Create(MxU32, MxBool)': /src/isle-portable/LEGO1/omni/src/audio/mxsoundmanager.cpp:119:1: error: jump to label 'done' 119 | done: | ^~~~ /src/isle-portable/LEGO1/omni/src/audio/mxsoundmanager.cpp:78:22: note: from here 78 | goto done; | ^~~~ /src/isle-portable/LEGO1/omni/src/audio/mxsoundmanager.cpp:84:26: note: crosses initialization of 'ma_engine_config engineConfig' 84 | ma_engine_config engineConfig = ma_engine_config_init(); | ^~~~~~~~~~~~ ``` * Fix 'invalid conversion from 'SDL_FunctionPointer' {aka 'void (*)()'} to 'void*' * /SAFESEH:NO is a VC thing * SDL3 is still instable * Cannot forward declare and use enum * Remove MusicManager from public LEGO1.DLL interface * Copy d3d from wine git 6c5d17af07a318d754c0c21023b2d162a0d3725d * Build d3drm-wine with 32-bit mingw * cmake: move 3rd party targets to cmake script in 3rdparty directory * cmake: bump minimum required CMake version to 3.25 to allow adding a subproject with SYSTEM automatically applied An alternative would be to use SYSTEM in target_include_directories in the 3rd party cmake script. * Add a minimal Findiniparser.cmake (not all distributions carry the upstream iniparser-config.cmake files) * Add wine's d3drm headers * cmake: merge ISLE_USE_DX5_LIBS into ISLE_USE_DX5 * cmake: Build all shared libraries in the binary output directory (to avoid PATH issues) * ci: enable msys2 mingw32 build * Disable clang-tidy on d3drm wine * Thread functions must have SDLCALL call convention * cmake: disable clang-tidy for miniaudio and libsmacker as well * Hopefully fix c++ format and skip ncc naming violation * clang-format violations keep up popping out of nowhere * No need for lego/legoomni/include * ncc: define SDLCALL as empty instead
2024-06-24 10:25:51 -04:00
else()
if(APPLE)
set(__iniparser_shared_names "libiniparser.dylib")
else()
set(__iniparser_shared_names "libiniparser.so")
endif()
set(__iniparser_static_names "libiniparser.a")
endif()
find_path(iniparser_INCLUDE_PATH
NAMES "iniparser.h"
)
set(__iniparser_required_vars iniparser_INCLUDE_PATH)
set(__iniparser_shared_required FALSE)
set(__iniparser_static_required FALSE)
foreach(__comp ${iniparser_FIND_COMPONENTS})
if(__comp STREQUAL "shared")
set(__iniparser_shared_required TRUE)
find_library(iniparser_shared_LIBRARY
NAMES ${__iniparser_shared_names}
)
set(iniparser_shared_FOUND "${iniparser_shared_LIBRARY}")
if(iniparser_FIND_REQUIRED_shared)
list(APPEND __iniparser_required_vars iniparser_shared_LIBRARY)
endif()
endif()
if(__comp STREQUAL "static")
set(__iniparser_static_required TRUE)
find_library(iniparser_static_LIBRARY
NAMES ${__iniparser_static_names}
)
set(iniparser_static_FOUND "${iniparser_static_LIBRARY}")
if(iniparser_FIND_REQUIRED_static)
list(APPEND __iniparser_required_vars iniparser_static_LIBRARY)
endif()
endif()
endforeach()
if(NOT __iniparser_shared_required AND NOT __iniparser_static_required)
list(APPEND __iniparser_required_vars iniparser_shared_LIBRARY)
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(iniparser
FOUND_VAR iniparser_FOUND
REQUIRED_VARS ${__iniparser_required_vars}
HANDLE_COMPONENTS
)
if(iniparser_FOUND)
if(NOT TARGET iniparser-shared AND iniparser_shared_LIBRARY)
if(WIN32)
# We don't know the name and location of the dll, so use an imported target
add_library(iniparser-shared UNKNOWN IMPORTED)
set_property(TARGET iniparser-shared PROPERTY IMPORTED_IMPLIB "${iniparser_shared_LIBRARY}")
else()
add_library(iniparser-shared SHARED IMPORTED)
set_property(TARGET iniparser-shared PROPERTY IMPORTED_LOCATION "${iniparser_shared_LIBRARY}")
endif()
set_property(TARGET iniparser-shared PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${iniparser_INCLUDE_PATH}")
endif()
if(NOT TARGET iniparser-static AND iniparser_static_LIBRARY)
add_library(iniparser-static STATIC IMPORTED)
set_property(TARGET iniparser-static PROPERTY IMPORTED_LOCATION "${iniparser_static_LIBRARY}")
set_property(TARGET iniparser-static PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${iniparser_INCLUDE_PATH}")
endif()
endif()