Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package p8-platform for openSUSE:Factory checked in at 2026-07-17 18:49:13 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/p8-platform (Old) and /work/SRC/openSUSE:Factory/.p8-platform.new.24530 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "p8-platform" Fri Jul 17 18:49:13 2026 rev:6 rq:1366323 version:2.2.0 Changes: -------- --- /work/SRC/openSUSE:Factory/p8-platform/p8-platform.changes 2026-06-02 16:02:51.771305893 +0200 +++ /work/SRC/openSUSE:Factory/.p8-platform.new.24530/p8-platform.changes 2026-07-17 18:50:26.675211878 +0200 @@ -1,0 +2,5 @@ +Fri Jul 17 06:58:45 UTC 2026 - Martin Pluskal <[email protected]> + +- Update to 2.2.0 (first upstream release since 2015; SOVERSION unchanged at 2) + +------------------------------------------------------------------- Old: ---- p8-platform-2.1.0.1.tar.gz New: ---- p8-platform-2.2.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ p8-platform.spec ++++++ --- /var/tmp/diff_new_pack.RR94vn/_old 2026-07-17 18:50:27.343234481 +0200 +++ /var/tmp/diff_new_pack.RR94vn/_new 2026-07-17 18:50:27.347234616 +0200 @@ -18,7 +18,7 @@ %define _SO_nr 2 Name: p8-platform -Version: 2.1.0.1 +Version: 2.2.0 Release: 0 Summary: Platform support library used by libCEC and binary add-ons for Kodi License: GPL-2.0-or-later ++++++ p8-platform-2.1.0.1.tar.gz -> p8-platform-2.2.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platform-p8-platform-2.1.0.1/.gitignore new/platform-p8-platform-2.2.0/.gitignore --- old/platform-p8-platform-2.1.0.1/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/platform-p8-platform-2.2.0/.gitignore 2026-07-16 22:15:43.000000000 +0200 @@ -0,0 +1 @@ +/build diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platform-p8-platform-2.1.0.1/.gitmodules new/platform-p8-platform-2.2.0/.gitmodules --- old/platform-p8-platform-2.1.0.1/.gitmodules 2016-10-26 12:51:27.000000000 +0200 +++ new/platform-p8-platform-2.2.0/.gitmodules 2026-07-16 22:15:43.000000000 +0200 @@ -1,3 +1,3 @@ [submodule "support"] path = support - url = [email protected]:Pulse-Eight/libcec-support.git + url = https://github.com/Pulse-Eight/libcec-support.git diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platform-p8-platform-2.1.0.1/CMakeLists.txt new/platform-p8-platform-2.2.0/CMakeLists.txt --- old/platform-p8-platform-2.1.0.1/CMakeLists.txt 2016-10-26 12:51:27.000000000 +0200 +++ new/platform-p8-platform-2.2.0/CMakeLists.txt 2026-07-16 22:15:43.000000000 +0200 @@ -1,18 +1,22 @@ +cmake_minimum_required(VERSION 3.12.0) project(p8-platform) -cmake_minimum_required(VERSION 2.8.9) enable_language(CXX) +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED YES) +set(CMAKE_CXX_EXTENSIONS NO) + set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}) find_package(Threads REQUIRED) -include(UseMultiArch.cmake) +include(GNUInstallDirs) include(CheckAtomic.cmake) set(p8-platform_NAME p8-platform) set(p8-platform_DESCRIPTION "Pulse-Eight platform support library") set(p8-platform_VERSION_MAJOR 2) -set(p8-platform_VERSION_MINOR 1) +set(p8-platform_VERSION_MINOR 2) set(p8-platform_VERSION_PATCH 0) set(CMAKE_POSITION_INDEPENDENT_CODE on) @@ -22,10 +26,6 @@ src/windows/os-threads.cpp) endif() -set(p8-platform_INCLUDE_DIRS "${CMAKE_INSTALL_PREFIX}/include/p8-platform") -IF(WIN32) - LIST(APPEND p8-platform_INCLUDE_DIRS "${CMAKE_INSTALL_PREFIX}/include/p8-platform/windows") -ENDIF(WIN32) set(p8-platform_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) if(NOT ${CORE_SYSTEM_NAME} STREQUAL "") @@ -38,23 +38,54 @@ add_library(p8-platform ${SOURCES} ${PLAT_SOURCES}) target_link_libraries(p8-platform ${p8-platform_LIBRARIES}) -set_target_properties(p8-platform PROPERTIES VERSION ${p8-platform_VERSION_MAJOR}.${p8-platform_VERSION_MINOR}.${p8-platform_VERSION_PATCH} - SOVERSION ${p8-platform_VERSION_MAJOR}) +set_target_properties(p8-platform + PROPERTIES + VERSION ${p8-platform_VERSION_MAJOR}.${p8-platform_VERSION_MINOR}.${p8-platform_VERSION_PATCH} + SOVERSION ${p8-platform_VERSION_MAJOR}) + +if(WIN32) + include(CheckSymbolExists) + check_symbol_exists(_AMD64_ Windows.h WIN64) + check_symbol_exists(_ARM64_ Windows.h ARM64) + + if (MSVC) + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /D_HAS_ITERATOR_DEBUGGING=1 /D_SECURE_SCL=1") + add_compile_definitions($<$<CONFIG:Debug>:_ITERATOR_DEBUG_LEVEL=2>) + add_compile_definitions($<$<CONFIG:Debug>:_HAS_ITERATOR_DEBUGGING=1>) + # generate pdb in release mode too + set_target_properties(p8-platform + PROPERTIES + COMPILE_PDB_NAME_DEBUG p8-platform${CMAKE_DEBUG_POSTFIX} + COMPILE_PDB_NAME_RELEASE p8-platform + COMPILE_PDB_NAME_MINSIZEREL p8-platform + COMPILE_PDB_NAME_RELWITHDEBINFO p8-platform) + + if (WIN64 OR ARM64) + # default setting that got removed in recent vs versions, generates a warning if set + string(REPLACE "/arch:SSE2" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) + endif() + + endif(MSVC) + + if (NOT WIN64 AND NOT ARM64) + add_definitions(-D_USE_32BIT_TIME_T) + endif() +endif(WIN32) install(TARGETS p8-platform DESTINATION ${CMAKE_INSTALL_LIBDIR}) install(FILES src/os.h DESTINATION include/p8-platform) -IF(WIN32) - INSTALL(FILES src/windows/dlfcn-win32.h +if(WIN32) + install(FILES src/windows/dlfcn-win32.h src/windows/os-socket.h src/windows/os-threads.h src/windows/os-types.h DESTINATION include/p8-platform/windows) -ELSE(WIN32) +else(WIN32) install(FILES src/posix/os-socket.h src/posix/os-threads.h src/posix/os-types.h DESTINATION include/p8-platform/posix) -ENDIF(WIN32) +endif(WIN32) install(FILES src/sockets/cdevsocket.h src/sockets/socket.h src/sockets/tcp.h @@ -71,15 +102,36 @@ src/util/util.h DESTINATION include/p8-platform/util) -IF(NOT WIN32) +if(MSVC) + # install generated pdb + install(FILES $<TARGET_FILE_DIR:p8-platform>/p8-platform.pdb + DESTINATION "${CMAKE_INSTALL_LIBDIR}") +endif(MSVC) + +if(NOT WIN32) configure_file(p8-platform.pc.in p8-platform.pc @ONLY) - install(FILES ${CMAKE_BINARY_DIR}/p8-platform.pc + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/p8-platform.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) -ENDIF(NOT WIN32) +endif(NOT WIN32) # config mode +# how to walk back to the prefix from the installed config file. worked out here +# because the depth varies with the libdir: lib, lib64, lib/x86_64-linux-gnu +file (RELATIVE_PATH p8-platform_CONFIG_TO_PREFIX + "${CMAKE_INSTALL_FULL_LIBDIR}/p8-platform" "${CMAKE_INSTALL_PREFIX}") + +# export a static build as STATIC rather than UNKNOWN, because cmake only adds +# the c++ runtime for an imported library that says it's static. a shared build +# stays UNKNOWN: it doesn't need the runtime spelled out, and SHARED would want +# an IMPORTED_IMPLIB next to the dll on windows +get_target_property (p8-platform_TARGET_TYPE p8-platform TYPE) +if (p8-platform_TARGET_TYPE STREQUAL "STATIC_LIBRARY") + set (p8-platform_LIBRARY_TYPE "STATIC") +else () + set (p8-platform_LIBRARY_TYPE "UNKNOWN") +endif () configure_file (p8-platform-config.cmake.in p8-platform-config.cmake @ONLY) -install(FILES ${CMAKE_BINARY_DIR}/p8-platform-config.cmake +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/p8-platform-config.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/p8-platform) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platform-p8-platform-2.1.0.1/LICENSE.md new/platform-p8-platform-2.2.0/LICENSE.md --- old/platform-p8-platform-2.1.0.1/LICENSE.md 1970-01-01 01:00:00.000000000 +0100 +++ new/platform-p8-platform-2.2.0/LICENSE.md 2026-07-16 22:15:43.000000000 +0200 @@ -0,0 +1,311 @@ +This file is part of the libCEC(R) library. + +libCEC(R) is Copyright (C) 2011-2020 Pulse-Eight Limited. All rights reserved. +libCEC(R) is a original work, containing original code. + +libCEC(R) is a trademark of Pulse-Eight Limited. + +This program is dual-licensed; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +Alternatively, you can license this library under a commercial license, +please contact Pulse-Eight Licensing for more information. + +For more information contact: +Pulse-Eight Licensing <[email protected]> + http://www.pulse-eight.com/ + http://www.pulse-eight.net/ + + + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platform-p8-platform-2.1.0.1/README.md new/platform-p8-platform-2.2.0/README.md --- old/platform-p8-platform-2.1.0.1/README.md 2016-10-26 12:51:27.000000000 +0200 +++ new/platform-p8-platform-2.2.0/README.md 2026-07-16 22:15:43.000000000 +0200 @@ -1,3 +1,41 @@ -# platform -Platform support library used by libCEC and binary add-ons for Kodi + +# About +This library provides platform specific support for other libraries, and is used by libCEC and binary add-ons for Kodi + +# Supported platforms + +## Linux, BSD & Apple OS X +To compile this library, you'll need the following dependencies: +* [cmake 3.12.0 or better](https://www.cmake.org/) +* a supported C++ 11 compiler + +On Debian and Ubuntu, `apt-get install git cmake build-essential` pulls in these +and the git client used below. + +Follow these instructions to compile and install the library: +``` +git clone https://github.com/Pulse-Eight/platform.git +mkdir platform/build +cd platform/build +cmake .. +make -j4 +sudo make install +``` + +On Linux and BSD, run `sudo ldconfig` afterwards to refresh the linker cache. +OS X has no equivalent and doesn't need one. + +## Microsoft Windows +To compile this library on Windows, you'll need the following dependencies: +* [cmake 3.12.0 or better](https://www.cmake.org/) +* [Visual Studio 2022](https://www.visualstudio.com/) + +Follow these instructions to compile and install the library: +``` +git clone https://github.com/Pulse-Eight/platform.git +cd platform +git submodule update --init --recursive +cd windows +build.cmd +``` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platform-p8-platform-2.1.0.1/UseMultiArch.cmake new/platform-p8-platform-2.2.0/UseMultiArch.cmake --- old/platform-p8-platform-2.1.0.1/UseMultiArch.cmake 2016-10-26 12:51:27.000000000 +0200 +++ new/platform-p8-platform-2.2.0/UseMultiArch.cmake 1970-01-01 01:00:00.000000000 +0100 @@ -1,49 +0,0 @@ -# - Multiarch support in object code library directories -# -# This module sets the following variable -# CMAKE_INSTALL_LIBDIR to lib, lib64 or lib/x86_64-linux-gnu -# depending on the platform; use this path -# for platform-specific binaries. -# -# CMAKE_INSTALL_LIBDIR_NOARCH to lib or lib64 depending on the platform; -# use this path for architecture-independent -# files. -# -# Note that it will override the results of GNUInstallDirs if included after -# that module. - -# Fedora uses lib64/ for 64-bit systems, Debian uses lib/x86_64-linux-gnu; -# Fedora put module files in lib64/ too, but Debian uses lib/ for that -if ("${CMAKE_SYSTEM_NAME}" MATCHES "Linux" AND - "${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr") - # Debian or Ubuntu? - if (EXISTS "/etc/debian_version") - set (_libdir_def "lib/${CMAKE_LIBRARY_ARCHITECTURE}") - set (_libdir_noarch "lib") - elseif (EXISTS "/etc/fedora-release" OR - EXISTS "/etc/redhat-release" OR - EXISTS "/etc/slackware-version" OR - EXISTS "/etc/gentoo-release") - # 64-bit system? - if (CMAKE_SIZEOF_VOID_P EQUAL 8) - set (_libdir_noarch "lib64") - else (CMAKE_SIZEOF_VOID_P EQUAL 8) - set (_libdir_noarch "lib") - endif (CMAKE_SIZEOF_VOID_P EQUAL 8) - set (_libdir_def "${_libdir_noarch}") - else () - set (_libdir_def "lib") - set (_libdir_noarch "lib") - endif () -else () - set (_libdir_def "lib") - set (_libdir_noarch "lib") -endif () - -# let the user override if somewhere else is desirable -set (CMAKE_INSTALL_LIBDIR "${_libdir_def}" CACHE PATH "Object code libraries") -set (CMAKE_INSTALL_LIBDIR_NOARCH "${_libdir_noarch}" CACHE PATH "Architecture-independent library files") -mark_as_advanced ( - CMAKE_INSTALL_LIBDIR - CMAKE_INSTALL_LIBDIR_NOARCH - ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platform-p8-platform-2.1.0.1/debian/changelog.in new/platform-p8-platform-2.2.0/debian/changelog.in --- old/platform-p8-platform-2.1.0.1/debian/changelog.in 2016-10-26 12:51:27.000000000 +0200 +++ new/platform-p8-platform-2.2.0/debian/changelog.in 2026-07-16 22:15:43.000000000 +0200 @@ -1,3 +1,41 @@ +p8-platform (2.2.0~#DIST#) #DIST#; urgency=medium + + * final release. this library is now in maintenance mode: everything it was + written to provide before C++11 is in the standard library, and libCEC, its + only actively developed user, is moving to std:: directly. fixes are still + welcome; no further development is planned. + * no abi or api break since 2.1.0.1: the exported symbols are unchanged and no + class layout, virtual or signature changed. the minor bump is for the new + functionality below, chiefly windows arm64 support. soname stays + libp8-platform.so.2 + * [cmake] use GNUInstallDirs instead of a hand-rolled UseMultiArch.cmake. fixes + a relative -DCMAKE_INSTALL_LIBDIR being made absolute, which sent the library + and the .pc file into the build tree. closes #41 + * [cmake] make the installed config relocatable, so it stops silently resolving + to a different p8-platform on the default search path. closes #38. + credits @bachp + * [cmake] export a static build as STATIC so a C project can link it. closes #35 + * [cmake] report the patch level in the config version, so find_package() can + ask for a version with a given fix in it + * [cmake] require cmake 3.12, which also fixes the build with cmake 4. + closes #52. credits @bkuhls + * [cmake] require c++11 as the minimum standard. credits @lrusak + * [cmake] fix building as a submodule. credits @garbear + * [cmake] fix the ARM64/WIN64 symbol checks on windows. closes #51. + credits @fuzzard + * [threads] PreventCopy: block copies with = delete, and allow moves. + closes #33. credits @MatthewLundberg + * [threads] fixed -Wunused-value for every consumer that includes mutex.h + * [threads] fix CEvent auto-reset behaviour on a broadcast signal. credits @srg70 + * [util] StringUtils: fix the build with -std=c++17. credits @lrusak + * [windows] added vs2022 and ARM64 support + * [docs] bring the README's build instructions up to date. closes #43. + credits @heitbaum, @xXP4trickXx + * added a .gitignore for the build dir. credits @Vavassor + * added LICENSE.md + + -- Pulse-Eight Packaging <[email protected]> Thu, 16 Jul 2026 12:00:00 +0200 + p8-platform (2.1.0.1~#DIST#) #DIST#; urgency=medium * [tvos] remove IOKit linkage. credits @Memphiz diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platform-p8-platform-2.1.0.1/p8-platform-config.cmake.in new/platform-p8-platform-2.2.0/p8-platform-config.cmake.in --- old/platform-p8-platform-2.1.0.1/p8-platform-config.cmake.in 2016-10-26 12:51:27.000000000 +0200 +++ new/platform-p8-platform-2.2.0/p8-platform-config.cmake.in 2026-07-16 22:15:43.000000000 +0200 @@ -2,29 +2,44 @@ # # Defines the following variables: # p8-platform_FOUND - true -# p8-platform_VERSION - version of the platform library found, e.g. 0.2 +# p8-platform_VERSION - version of the platform library found, e.g. 2.2.0 # p8-platform_INCLUDE_DIRS - header directories with which to compile # p8-platform_LINKER_FLAGS - flags that must be passed to the linker # p8-platform_LIBRARIES - names of the libraries with which to link # p8-platform_LIBRARY_DIRS - directories in which the libraries are situated # + +# this file is installed inside the tree it describes, so work everything out +# from its own location instead of the prefix it happened to be configured with. +# that keeps the installed tree relocatable, and points the find_*() calls below +# at our own tree, which would otherwise be free to pick up whichever +# p8-platform turned up first on the default search path +get_filename_component (_p8-platform_libdir "${CMAKE_CURRENT_LIST_DIR}/.." ABSOLUTE) +get_filename_component (_p8-platform_prefix "${CMAKE_CURRENT_LIST_DIR}/@p8-platform_CONFIG_TO_PREFIX@" ABSOLUTE) + # propagate these properties from one build system to the other -set (p8-platform_VERSION "@p8-platform_VERSION_MAJOR@.@p8-platform_VERSION_MINOR@") -set (p8-platform_INCLUDE_DIRS @p8-platform_INCLUDE_DIRS@ @CMAKE_INSTALL_PREFIX@/include) -set (p8-platform_LIBRARY_DIRS "@CMAKE_LIBRARY_OUTPUT_DIRECTORY@") +# report the patch level too: without it every 2.2.x looks like the same "2.2", so +# there's no way to ask for the version that carries a given fix +set (p8-platform_VERSION "@p8-platform_VERSION_MAJOR@.@p8-platform_VERSION_MINOR@.@p8-platform_VERSION_PATCH@") +find_path (p8-platform_INCLUDE_DIRS p8-platform/os.h HINTS "${_p8-platform_prefix}/include") +set (p8-platform_LIBRARY_DIRS "${_p8-platform_libdir}") set (p8-platform_LINKER_FLAGS "@p8-platform_LINKER_FLAGS@") set (p8-platform_CONFIG_VARS "@p8-platform_CONFIG_VARS@") # libraries come from the build tree where this file was generated if(WIN32) - set (p8-platform_LIBRARY "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/p8-platform.lib") + set (p8-platform_LIBRARY "${_p8-platform_libdir}/p8-platform.lib") else(WIN32) - set (p8-platform_LIBRARY "-L@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@ -lp8-platform") + find_library (p8-platform_LIBRARY p8-platform HINTS "${_p8-platform_libdir}") endif(WIN32) set (p8-platform_LIBRARIES ${p8-platform_LIBRARY} "@p8-platform_LIBRARIES@") mark_as_advanced (p8-platform_LIBRARY) # add the library as a target, so that other things in the project including # this file may depend on it and get rebuild if this library changes. -add_library (p8-platform UNKNOWN IMPORTED) +add_library (p8-platform @p8-platform_LIBRARY_TYPE@ IMPORTED) set_property (TARGET p8-platform PROPERTY IMPORTED_LOCATION "${p8-platform_LIBRARY}") +# we're c++, so linking a static p8-platform needs the c++ runtime that the .a +# can't ask for by itself. cmake only honours this for STATIC, and only if the +# consumer has enabled CXX; the shared library records libstdc++ on its own +set_property (TARGET p8-platform PROPERTY IMPORTED_LINK_INTERFACE_LANGUAGES "CXX") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platform-p8-platform-2.1.0.1/p8-platform.pc.in new/platform-p8-platform-2.2.0/p8-platform.pc.in --- old/platform-p8-platform-2.1.0.1/p8-platform.pc.in 2016-10-26 12:51:27.000000000 +0200 +++ new/platform-p8-platform-2.2.0/p8-platform.pc.in 2026-07-16 22:15:43.000000000 +0200 @@ -1,5 +1,5 @@ prefix=@CMAKE_INSTALL_PREFIX@ -libdir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@ +libdir=@CMAKE_INSTALL_FULL_LIBDIR@ includedir=@CMAKE_INSTALL_PREFIX@/include DEPENDENCIES=@p8-platform_LIBRARIES@ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platform-p8-platform-2.1.0.1/src/os.h new/platform-p8-platform-2.2.0/src/os.h --- old/platform-p8-platform-2.1.0.1/src/os.h 2016-10-26 12:51:27.000000000 +0200 +++ new/platform-p8-platform-2.2.0/src/os.h 2026-07-16 22:15:43.000000000 +0200 @@ -31,7 +31,7 @@ * http://www.pulse-eight.net/ */ -#if (defined(_WIN32) || defined(_WIN64)) +#if (defined(_WIN32) || defined(_WIN64) || defined(_M_ARM64)) #include "windows/os-types.h" #else #include "posix/os-types.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platform-p8-platform-2.1.0.1/src/threads/mutex.h new/platform-p8-platform-2.2.0/src/threads/mutex.h --- old/platform-p8-platform-2.1.0.1/src/threads/mutex.h 2016-10-26 12:51:27.000000000 +0200 +++ new/platform-p8-platform-2.2.0/src/threads/mutex.h 2026-07-16 22:15:43.000000000 +0200 @@ -49,9 +49,14 @@ inline PreventCopy(void) {} inline ~PreventCopy(void) {} - private: - inline PreventCopy(const PreventCopy &c) { *this = c; } - inline PreventCopy &operator=(const PreventCopy &c){ (void)c; return *this; } + PreventCopy(const PreventCopy &c) = delete; + PreventCopy &operator=(const PreventCopy &c) = delete; + + // moving is fine, and inheriting from this doesn't take that away. a subclass + // that declares a destructor still has to declare its own move, though: that + // suppresses the implicit one no matter what this base says + PreventCopy(PreventCopy &&c) = default; + PreventCopy &operator=(PreventCopy &&c) = default; }; template <typename _Predicate> @@ -86,7 +91,10 @@ inline bool Lock(void) { - MutexLock(m_mutex); + // the posix MutexLock() yields the lock result and the windows one is + // void, so there's nothing portable to return: drop it explicitly, or + // every consumer compiling this header gets -Wunused-value + (void)MutexLock(m_mutex); ++m_iLockCount; return true; } @@ -351,7 +359,8 @@ { CLockObject lock(m_mutex); bool bReturn(m_bSignaled); - if (bReturn && (--m_iWaitingThreads == 0 || !m_bBroadcast) && m_bAutoReset) + --m_iWaitingThreads; + if (bReturn && (m_iWaitingThreads == 0 || !m_bBroadcast) && m_bAutoReset) m_bSignaled = false; return bReturn; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platform-p8-platform-2.1.0.1/src/util/StdString.h new/platform-p8-platform-2.2.0/src/util/StdString.h --- old/platform-p8-platform-2.1.0.1/src/util/StdString.h 2016-10-26 12:51:27.000000000 +0200 +++ new/platform-p8-platform-2.2.0/src/util/StdString.h 2026-07-16 22:15:43.000000000 +0200 @@ -363,7 +363,7 @@ #if !defined (SS_ANSI) && defined(_MSC_VER) #undef SS_IS_INTRESOURCE - #if defined(_WIN64) + #if defined(_WIN64) || defined(_M_ARM64) #define SS_IS_INTRESOURCE(_r) (((unsigned __int64)(_r) >> 16) == 0) #else #define SS_IS_INTRESOURCE(_r) (((unsigned long)(_r) >> 16) == 0) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platform-p8-platform-2.1.0.1/src/util/StringUtils.cpp new/platform-p8-platform-2.2.0/src/util/StringUtils.cpp --- old/platform-p8-platform-2.1.0.1/src/util/StringUtils.cpp 2016-10-26 12:51:27.000000000 +0200 +++ new/platform-p8-platform-2.2.0/src/util/StringUtils.cpp 2026-07-16 22:15:43.000000000 +0200 @@ -453,7 +453,7 @@ std::string& StringUtils::TrimLeft(std::string &str) { - str.erase(str.begin(), ::find_if(str.begin(), str.end(), ::not1(::ptr_fun(isspace_c)))); + str.erase(str.begin(), ::find_if(str.begin(), str.end(), [](char s) { return isspace_c(s) == 0; })); return str; } @@ -466,7 +466,7 @@ std::string& StringUtils::TrimRight(std::string &str) { - str.erase(::find_if(str.rbegin(), str.rend(), ::not1(::ptr_fun(isspace_c))).base(), str.end()); + str.erase(::find_if(str.rbegin(), str.rend(), [](char s) { return isspace_c(s) == 0; }).base(), str.end()); return str; } @@ -668,7 +668,7 @@ size_t sizeS2 = delimiter.size(); size_t isize = input.size(); - vector<unsigned int> positions; + vector<size_t> positions; newPos = input.find(delimiter, 0); @@ -687,11 +687,11 @@ // numFound is the number of delimiters which is one less // than the number of substrings - unsigned int numFound = positions.size(); + size_t numFound = positions.size(); if (iMaxStrings > 0 && numFound >= iMaxStrings) numFound = iMaxStrings - 1; - for ( unsigned int i = 0; i <= numFound; i++ ) + for ( size_t i = 0; i <= numFound; i++ ) { string s; if ( i == 0 ) @@ -1058,7 +1058,7 @@ if (!m_uuidInitialized) { /* use current time as the seed for rand()*/ - srand(time(NULL)); + srand((unsigned int)time(NULL)); m_uuidInitialized = true; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platform-p8-platform-2.1.0.1/src/util/timeutils.h new/platform-p8-platform-2.2.0/src/util/timeutils.h --- old/platform-p8-platform-2.1.0.1/src/util/timeutils.h 2016-10-26 12:51:27.000000000 +0200 +++ new/platform-p8-platform-2.2.0/src/util/timeutils.h 2026-07-16 22:15:43.000000000 +0200 @@ -44,7 +44,7 @@ namespace P8PLATFORM { - #if defined(__WINDOWS__) + #if defined(__WINDOWS__) && !defined(SWIGPYTHON) struct timezone { int tz_minuteswest; @@ -68,12 +68,12 @@ pcur_time->tv_usec = current.millitm * 1000L; if (tz) { - tz->tz_minuteswest = current.timezone; /* minutes west of Greenwich */ + tz->tz_minuteswest = current.timezone; /* minutes west of Greenwich */ tz->tz_dsttime = current.dstflag; /* type of dst correction */ } return 0; } - #endif + #endif // defined(__WINDOWS__) && !defined(SWIGPYTHON) inline int64_t GetTimeMs() { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platform-p8-platform-2.1.0.1/src/windows/inttypes.h new/platform-p8-platform-2.2.0/src/windows/inttypes.h --- old/platform-p8-platform-2.1.0.1/src/windows/inttypes.h 2016-10-26 12:51:27.000000000 +0200 +++ new/platform-p8-platform-2.2.0/src/windows/inttypes.h 2026-07-16 22:15:43.000000000 +0200 @@ -186,13 +186,13 @@ #define SCNdMAX "I64d" #define SCNiMAX "I64i" -#ifdef _WIN64 // [ +#if defined(_WIN64) || defined(_M_ARM64) // [ # define SCNdPTR "I64d" # define SCNiPTR "I64i" -#else // _WIN64 ][ +#else // _WIN64 || _M_ARM64 ][ # define SCNdPTR "ld" # define SCNiPTR "li" -#endif // _WIN64 ] +#endif // _WIN64 || _M_ARM64] // The fscanf macros for unsigned integers are: #define SCNo8 "o" @@ -252,17 +252,17 @@ #define SCNxMAX "I64x" #define SCNXMAX "I64X" -#ifdef _WIN64 // [ +#defined(_WIN64) || defined(_M_ARM64) // [ # define SCNoPTR "I64o" # define SCNuPTR "I64u" # define SCNxPTR "I64x" # define SCNXPTR "I64X" -#else // _WIN64 ][ +#else // _WIN64 || _M_ARM64 ][ # define SCNoPTR "lo" # define SCNuPTR "lu" # define SCNxPTR "lx" # define SCNXPTR "lX" -#endif // _WIN64 ] +#endif // _WIN64 || _M_ARM64 ] #endif // __STDC_FORMAT_MACROS ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platform-p8-platform-2.1.0.1/src/windows/os-types.h new/platform-p8-platform-2.2.0/src/windows/os-types.h --- old/platform-p8-platform-2.1.0.1/src/windows/os-types.h 2016-10-26 12:51:27.000000000 +0200 +++ new/platform-p8-platform-2.2.0/src/windows/os-types.h 2026-07-16 22:15:43.000000000 +0200 @@ -76,7 +76,7 @@ #define INVALID_SERIAL_SOCKET_VALUE INVALID_HANDLE_VALUE #ifndef _SSIZE_T_DEFINED -#ifdef _WIN64 +#if defined(_WIN64) || defined(_M_ARM64) typedef __int64 ssize_t; #else typedef _W64 int ssize_t; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platform-p8-platform-2.1.0.1/src/windows/stdint.h new/platform-p8-platform-2.2.0/src/windows/stdint.h --- old/platform-p8-platform-2.1.0.1/src/windows/stdint.h 2016-10-26 12:51:27.000000000 +0200 +++ new/platform-p8-platform-2.2.0/src/windows/stdint.h 2026-07-16 22:15:43.000000000 +0200 @@ -111,13 +111,13 @@ typedef uint64_t uint_fast64_t; // 7.18.1.4 Integer types capable of holding object pointers -#ifdef _WIN64 // [ +#if defined(_WIN64) || defined(_M_ARM64) // [ typedef signed __int64 intptr_t; typedef unsigned __int64 uintptr_t; -#else // _WIN64 ][ +#else // _WIN64 || _M_ARM64 ][ typedef _W64 signed int intptr_t; typedef _W64 unsigned int uintptr_t; -#endif // _WIN64 ] +#endif // _WIN64 || _M_ARM64 ] // 7.18.1.5 Greatest-width integer types typedef int64_t intmax_t; @@ -171,15 +171,15 @@ #define UINT_FAST64_MAX UINT64_MAX // 7.18.2.4 Limits of integer types capable of holding object pointers -#ifdef _WIN64 // [ +#if defined(_WIN64) || defined(_M_ARM64)// [ # define INTPTR_MIN INT64_MIN # define INTPTR_MAX INT64_MAX # define UINTPTR_MAX UINT64_MAX -#else // _WIN64 ][ +#else // _WIN64 || _M_ARM64 ][ # define INTPTR_MIN INT32_MIN # define INTPTR_MAX INT32_MAX # define UINTPTR_MAX UINT32_MAX -#endif // _WIN64 ] +#endif // _WIN64 || _M_ARM64 ] // 7.18.2.5 Limits of greatest-width integer types #define INTMAX_MIN INT64_MIN @@ -188,23 +188,23 @@ // 7.18.3 Limits of other integer types -#ifdef _WIN64 // [ +#if defined(_WIN64) || defined(_M_ARM64)// [ # define PTRDIFF_MIN _I64_MIN # define PTRDIFF_MAX _I64_MAX -#else // _WIN64 ][ +#else // _WIN64 || _M_ARM64 ][ # define PTRDIFF_MIN _I32_MIN # define PTRDIFF_MAX _I32_MAX -#endif // _WIN64 ] +#endif // _WIN64 || _M_ARM64 ] #define SIG_ATOMIC_MIN INT_MIN #define SIG_ATOMIC_MAX INT_MAX #ifndef SIZE_MAX // [ -# ifdef _WIN64 // [ +# if defined(_WIN64) || defined(_M_ARM64)// [ # define SIZE_MAX _UI64_MAX -# else // _WIN64 ][ +# else // _WIN64 || _M_ARM64 ][ # define SIZE_MAX _UI32_MAX -# endif // _WIN64 ] +# endif // _WIN64 || _M_ARM64 ] #endif // SIZE_MAX ] // WCHAR_MIN and WCHAR_MAX are also defined in <wchar.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platform-p8-platform-2.1.0.1/windows/build-lib.cmd new/platform-p8-platform-2.2.0/windows/build-lib.cmd --- old/platform-p8-platform-2.1.0.1/windows/build-lib.cmd 2016-10-26 12:51:27.000000000 +0200 +++ new/platform-p8-platform-2.2.0/windows/build-lib.cmd 2026-07-16 22:15:43.000000000 +0200 @@ -11,14 +11,36 @@ SET INSTALLPATH=%4 IF [%4] == [] GOTO missingparams +SET INSTALLPATH=%INSTALLPATH:"=% SET BUILDTARGET=%INSTALLPATH%\cmake\%BUILDARCH% SET TARGET=%INSTALLPATH%\%BUILDARCH% -call %MYDIR%..\support\windows\cmake\generate.cmd %BUILDARCH% nmake %MYDIR%..\ %BUILDTARGET% %TARGET% %BUILDTYPE% %VSVERSION% static -call %MYDIR%..\support\windows\cmake\build.cmd %BUILDARCH% %BUILDTARGET% %VSVERSION% -goto exit +rem Check support submodule +IF NOT EXIST "%MYDIR%..\support\windows\cmake\build.cmd" ( + rem Try to init the git submodules + cd "%MYDIR%.." + git submodule update --init -r >nul 2>&1 + + IF NOT EXIST "%MYDIR%..\support\windows\cmake\build.cmd" ( + ECHO.*** support git submodule has not been checked out *** + ECHO. + ECHO.See docs\README.windows.md + EXIT /b 2 + ) +) + +CALL "%MYDIR%..\support\windows\cmake\generate.cmd" %BUILDARCH% nmake "%MYDIR%..\" "%BUILDTARGET%" "%TARGET%" %BUILDTYPE% %VSVERSION% static +CALL "%MYDIR%..\support\windows\cmake\build.cmd" %BUILDARCH% "%BUILDTARGET%" %VSVERSION% +GOTO exit :missingparams -echo "build-lib.cmd requires 4 parameters" +ECHO.%~dp0 requires 4 parameters +ECHO. %~dp0 [architecture] [type] [version] [install path] +ECHO. +ECHO. architecture: amd64 x86 arm64 +ECHO. type: Release Debug +ECHO. version: Visual Studio version (2019) +ECHO. install path: installation path without quotes +exit /b 99 -:exit \ No newline at end of file +:exit diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platform-p8-platform-2.1.0.1/windows/build.cmd new/platform-p8-platform-2.2.0/windows/build.cmd --- old/platform-p8-platform-2.1.0.1/windows/build.cmd 2016-10-26 12:51:27.000000000 +0200 +++ new/platform-p8-platform-2.2.0/windows/build.cmd 2026-07-16 22:15:43.000000000 +0200 @@ -6,13 +6,15 @@ SET MYDIR=%~dp0 SET BUILDTYPE=Release -SET VSVERSION=12 +SET VSVERSION=2022 SET INSTALLPATH=%MYDIR%..\build -rmdir %MYDIR%..\build /s /q +IF EXIST "%MYDIR%..\build" ( + RMDIR /s /q "%MYDIR%..\build" +) -for %%T in (amd64 x86) do ( - call %MYDIR%\build-lib.cmd %%T %BUILDTYPE% %VSVERSION% %INSTALLPATH% +FOR %%T IN (amd64 x86 arm64) DO ( + CALL "%MYDIR%\build-lib.cmd" %%T %BUILDTYPE% %VSVERSION% "%INSTALLPATH%" ) -rmdir %MYDIR%..\build\cmake /s /q +RMDIR /s /q "%MYDIR%..\build\cmake"
