diff --git a/CMakeLists.txt b/CMakeLists.txt index 3e867d3b1..b8254db7f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -94,10 +94,7 @@ endif() if(TRUE) message(STATUS "Using imported IrrlichtMt at subdirectory 'irr'") if(BUILD_CLIENT) - # tell IrrlichtMt to create a static library - set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared library" FORCE) add_subdirectory(irr EXCLUDE_FROM_ALL) - unset(BUILD_SHARED_LIBS CACHE) if(NOT TARGET IrrlichtMt) message(FATAL_ERROR "IrrlichtMt project is missing a CMake target?!") diff --git a/irr/CMakeLists.txt b/irr/CMakeLists.txt index 113a8bfa6..ccc00f271 100644 --- a/irr/CMakeLists.txt +++ b/irr/CMakeLists.txt @@ -1,82 +1,24 @@ cmake_minimum_required(VERSION 3.12) -set(IRRLICHTMT_REVISION 15) +project(Irrlicht LANGUAGES CXX) -project(Irrlicht - VERSION 1.9.0.${IRRLICHTMT_REVISION} - LANGUAGES CXX -) - -message(STATUS "*** Building IrrlichtMt ${PROJECT_VERSION} ***") +message(STATUS "*** Building IrrlichtMt ***") set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) -include(GNUInstallDirs) - -if(ANDROID) - set(sysname Android) -elseif(APPLE) - set(sysname OSX) -elseif(MSVC) - set(sysname Win32-VisualStudio) -elseif(WIN32) - set(sysname Win32-gcc) -else() - set(sysname Linux) -endif() -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib/${sysname}) -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin/${sysname}) - if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type: Debug or Release" FORCE) endif() +# FIXME: tests need to be moved to MT if we want to keep them + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") -enable_testing() +#enable_testing() add_subdirectory(src) -add_subdirectory(test) +#add_subdirectory(test) -option(BUILD_EXAMPLES "Build example applications" FALSE) -if(BUILD_EXAMPLES) - add_subdirectory(examples) -endif() - -# Export a file that describes the targets that IrrlichtMt creates. -# The file is placed in the location FILE points to, where CMake can easily -# locate it by pointing CMAKE_PREFIX_PATH to this project root. -export(EXPORT IrrlichtMt-export - FILE "${CMAKE_CURRENT_BINARY_DIR}/cmake/IrrlichtMtTargets.cmake" - NAMESPACE IrrlichtMt:: -) - -# Installation of headers. -install(DIRECTORY "${PROJECT_SOURCE_DIR}/include/" - DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/irrlichtmt" -) - -# Installation of CMake target and configuration files. -install(EXPORT IrrlichtMt-export - FILE IrrlichtMtTargets.cmake - NAMESPACE IrrlichtMt:: - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/IrrlichtMt" -) - -include(CMakePackageConfigHelpers) -configure_package_config_file("${PROJECT_SOURCE_DIR}/Config.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/cmake/IrrlichtMtConfig.cmake" - INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/IrrlichtMt" - NO_SET_AND_CHECK_MACRO - NO_CHECK_REQUIRED_COMPONENTS_MACRO -) -write_basic_package_version_file( - "${CMAKE_CURRENT_BINARY_DIR}/cmake/IrrlichtMtConfigVersion.cmake" - COMPATIBILITY AnyNewerVersion -) - -install(FILES - "${CMAKE_CURRENT_BINARY_DIR}/cmake/IrrlichtMtConfig.cmake" - "${CMAKE_CURRENT_BINARY_DIR}/cmake/IrrlichtMtConfigVersion.cmake" - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/IrrlichtMt" -) +#option(BUILD_EXAMPLES "Build example applications" FALSE) +#if(BUILD_EXAMPLES) +# add_subdirectory(examples) +#endif() diff --git a/irr/Config.cmake.in b/irr/Config.cmake.in deleted file mode 100644 index 6a55a6f67..000000000 --- a/irr/Config.cmake.in +++ /dev/null @@ -1,11 +0,0 @@ -@PACKAGE_INIT@ - -include(CMakeFindDependencyMacro) - -if(NOT TARGET IrrlichtMt::IrrlichtMt) - # private dependency only explicitly needed with static libs - if(@USE_SDL2@ AND NOT @BUILD_SHARED_LIBS@) - find_dependency(SDL2) - endif() - include("${CMAKE_CURRENT_LIST_DIR}/IrrlichtMtTargets.cmake") -endif() diff --git a/irr/README.md b/irr/README.md index 8335019b6..96d3b0d97 100644 --- a/irr/README.md +++ b/irr/README.md @@ -18,37 +18,13 @@ The following libraries are required to be installed: * SDL2 (see below) Aside from standard search options (`ZLIB_INCLUDE_DIR`, `ZLIB_LIBRARY`, ...) the following options are available: -* `BUILD_SHARED_LIBS` (default: `ON`) - Build IrrlichtMt as a shared library -* `BUILD_EXAMPLES` (default: `OFF`) - Build example applications * `ENABLE_OPENGL` - Enable OpenGL driver * `ENABLE_OPENGL3` (default: `OFF`) - Enable OpenGL 3+ driver * `ENABLE_GLES1` - Enable OpenGL ES driver, legacy * `ENABLE_GLES2` - Enable OpenGL ES 2+ driver * `USE_SDL2` (default: platform-dependent, usually `ON`) - Use SDL2 instead of older native device code -e.g. on a Linux system you might want to build for local use like this: - - git clone https://github.com/minetest/irrlicht - cd irrlicht - cmake . -DBUILD_SHARED_LIBS=OFF - make -j$(nproc) - -This will put an IrrlichtMtTargets.cmake file into the cmake directory in the current build directory, and it can then be imported from another project by pointing `find_package()` to the build directory, or by setting the `CMAKE_PREFIX_PATH` variable to that same path. - -on Windows system: - -It is highly recommended to use vcpkg as package manager. - -After you successfully built vcpkg you can easily install the required libraries: - - vcpkg install zlib libjpeg-turbo libpng sdl2 --triplet x64-windows - -Run the following script in PowerShell: - - git clone https://github.com/minetest/irrlicht - cd irrlicht - cmake -B build -G "Visual Studio 17 2022" -A "Win64" -DCMAKE_TOOLCHAIN_FILE=[vcpkg-root]/scripts/buildsystems/vcpkg.cmake -DBUILD_SHARED_LIBS=OFF - cmake --build build --config Release +However, IrrlichtMt cannot be built or installed separately. Platforms --------- diff --git a/irr/include/IrrCompileConfig.h b/irr/include/IrrCompileConfig.h index 42fc7fc2d..eaa6f1dd1 100644 --- a/irr/include/IrrCompileConfig.h +++ b/irr/include/IrrCompileConfig.h @@ -4,12 +4,8 @@ #pragma once -#ifdef _WIN32 -#define IRRCALLCONV __stdcall -#else -#define IRRCALLCONV -#endif +// these are obsolete and never pre-defined + +#define IRRCALLCONV -#ifndef IRRLICHT_API #define IRRLICHT_API -#endif diff --git a/irr/src/CMakeLists.txt b/irr/src/CMakeLists.txt index c6c590841..670a755fe 100644 --- a/irr/src/CMakeLists.txt +++ b/irr/src/CMakeLists.txt @@ -2,24 +2,10 @@ if(NOT APPLE) set(DEFAULT_SDL2 ON) endif() -option(BUILD_SHARED_LIBS "Build shared library" TRUE) option(USE_SDL2 "Use the SDL2 backend" ${DEFAULT_SDL2}) # Compiler flags -add_definitions(-DIRRLICHT_EXPORTS) -if(BUILD_SHARED_LIBS) - if(WIN32) - set(API_IMPORT "__declspec(dllimport)") - set(API_EXPORT "__declspec(dllexport)") - elseif(CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang|AppleClang)$") - set(API_EXPORT "__attribute__ ((visibility(\"default\")))") # only necessary if default visibility is set to hidden - endif() -else() - add_definitions(-D_IRR_STATIC_LIB_) -endif() -add_definitions("-DIRRLICHT_API=${API_EXPORT}") - if(CMAKE_BUILD_TYPE STREQUAL "Debug") add_definitions(-D_DEBUG) endif() @@ -493,7 +479,7 @@ add_library(IRRGUIOBJ OBJECT # Library -add_library(IrrlichtMt) +add_library(IrrlichtMt STATIC) foreach(object_lib IRRMESHOBJ IRROBJ IRRVIDEOOBJ IRRIOOBJ IRROTHEROBJ IRRGUIOBJ) @@ -510,7 +496,6 @@ target_include_directories(IrrlichtMt PUBLIC "$" "$" - "$" PRIVATE ${link_includes} ) @@ -540,21 +525,6 @@ target_link_libraries(IrrlichtMt PRIVATE if(WIN32) target_compile_definitions(IrrlichtMt INTERFACE _IRR_WINDOWS_API_) # used in _IRR_DEBUG_BREAK_IF definition in a public header endif() -target_compile_definitions(IrrlichtMt INTERFACE "IRRLICHT_API=${API_IMPORT}") if(APPLE OR ANDROID OR EMSCRIPTEN) target_compile_definitions(IrrlichtMt PUBLIC IRR_MOBILE_PATHS) endif() - -set_target_properties(IrrlichtMt PROPERTIES - VERSION ${PROJECT_VERSION} -) - -if(WIN32) - set_target_properties(IrrlichtMt PROPERTIES PREFIX "") # for DLL name -endif() - -# Installation of library -install(TARGETS IrrlichtMt - EXPORT IrrlichtMt-export - DESTINATION "${CMAKE_INSTALL_LIBDIR}" -) diff --git a/irr/src/Irrlicht.cpp b/irr/src/Irrlicht.cpp index 932d63450..d119584e3 100644 --- a/irr/src/Irrlicht.cpp +++ b/irr/src/Irrlicht.cpp @@ -4,13 +4,6 @@ static const char *const copyright = "Irrlicht Engine (c) 2002-2017 Nikolaus Gebhardt"; // put string in binary -#ifdef _IRR_WINDOWS_ -#include -#if defined(_DEBUG) && !defined(__GNUWIN32__) -#include -#endif // _DEBUG -#endif - #include "irrlicht.h" #ifdef _IRR_COMPILE_WITH_WINDOWS_DEVICE_ #include "CIrrDeviceWin32.h" @@ -126,27 +119,3 @@ extern "C" IRRLICHT_API bool IRRCALLCONV isDriverSupported(E_DRIVER_TYPE driver) } } // end namespace irr - -#if defined(_IRR_WINDOWS_API_) && !defined(_IRR_STATIC_LIB_) - -BOOL APIENTRY DllMain(HANDLE hModule, - DWORD ul_reason_for_call, - LPVOID lpReserved) -{ - // _crtBreakAlloc = 139; - - switch (ul_reason_for_call) { - case DLL_PROCESS_ATTACH: -#if defined(_DEBUG) && !defined(__GNUWIN32__) - _CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF | _CRTDBG_ALLOC_MEM_DF); -#endif - break; - case DLL_THREAD_ATTACH: - case DLL_THREAD_DETACH: - case DLL_PROCESS_DETACH: - break; - } - return TRUE; -} - -#endif // defined(_IRR_WINDOWS_)