diff --git a/windows/build.cmd b/windows/build.cmd index 130277dec..8482a9217 100644 --- a/windows/build.cmd +++ b/windows/build.cmd @@ -8,7 +8,7 @@ call helper\prepare.cmd vcpkg install --triplet x86-windows-static --recurse^ libpng[core] expat[core] pixman[core] freetype[core,zlib] harfbuzz[freetype]^ libvorbis[core] libsndfile[core] wildmidi[core] libxmp[core]^ - speexdsp[core] mpg123[core] opusfile[core] fluidsynth-easyrpg[core]^ + speexdsp[core] mpg123[core] opusfile[core] fluidsynth[core]^ inih[cpp] lhasa-easyrpg[core]^ sdl2[core] sdl3[core] icu-easyrpg[core] nlohmann-json[core] fmt[core] @@ -16,6 +16,6 @@ vcpkg install --triplet x86-windows-static --recurse^ vcpkg install --triplet x64-windows-static --recurse^ libpng[core] expat[core] pixman[core] freetype[core,zlib] harfbuzz[freetype]^ libvorbis[core] libsndfile[core] wildmidi[core] libxmp[core]^ - speexdsp[core] mpg123[core] opusfile[core] fluidsynth-easyrpg[core]^ + speexdsp[core] mpg123[core] opusfile[core] fluidsynth[core]^ inih[cpp] lhasa-easyrpg[core]^ sdl2[core] sdl3[core] icu-easyrpg[core] nlohmann-json[core] fmt[core] diff --git a/windows/fluidsynth-easyrpg/fluidsynth-no-deps.patch b/windows/fluidsynth-easyrpg/fluidsynth-no-deps.patch deleted file mode 100644 index 415f8d2be..000000000 --- a/windows/fluidsynth-easyrpg/fluidsynth-no-deps.patch +++ /dev/null @@ -1,84 +0,0 @@ -From 379520cc8fe8fb35542bd5273d3d6d81cf4e8d61 Mon Sep 17 00:00:00 2001 -From: Ghabry -Date: Fri, 17 Mar 2023 14:02:43 +0100 -Subject: [PATCH 2/2] Disable most features - ---- - CMakeLists.txt | 52 +++++++++++++++++++++++++------------------------- - 1 file changed, 26 insertions(+), 26 deletions(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 8d48251..eb2da3b 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -76,41 +76,41 @@ option ( enable-trap-on-fpe "enable SIGFPE trap on Floating Point Exceptions" of - option ( enable-ubsan "compile and link against UBSan (for debugging fluidsynth internals)" off ) - - # Options enabled by default --option ( enable-alsa "compile ALSA support (if it is available)" on ) --option ( enable-aufile "compile support for sound file output" on ) --option ( BUILD_SHARED_LIBS "Build a shared object or DLL" on ) --option ( enable-dbus "compile DBUS support (if it is available)" on ) --option ( enable-ipv6 "enable IPv6 support at the cost of disabling IPv4" on ) --option ( enable-jack "compile JACK support (if it is available)" on ) --option ( enable-ladspa "enable LADSPA effect units" on ) --option ( enable-libinstpatch "use libinstpatch (if available) to load DLS and GIG files" on ) --option ( enable-libsndfile "compile libsndfile support (if it is available)" on ) --option ( enable-midishare "compile MidiShare support (if it is available)" on ) -+option ( enable-alsa "compile ALSA support (if it is available)" off ) -+option ( enable-aufile "compile support for sound file output" off ) -+option ( BUILD_SHARED_LIBS "Build a shared object or DLL" off ) -+option ( enable-dbus "compile DBUS support (if it is available)" off ) -+option ( enable-ipv6 "enable IPv6 support at the cost of disabling IPv4" off ) -+option ( enable-jack "compile JACK support (if it is available)" off ) -+option ( enable-ladspa "enable LADSPA effect units" off ) -+option ( enable-libinstpatch "use libinstpatch (if available) to load DLS and GIG files" off ) -+option ( enable-libsndfile "compile libsndfile support (if it is available)" off ) -+option ( enable-midishare "compile MidiShare support (if it is available)" off ) - option ( enable-opensles "compile OpenSLES support (if it is available)" off ) - option ( enable-oboe "compile Oboe support (requires OpenSLES and/or AAudio)" off ) --option ( enable-network "enable network support (requires BSD sockets)" on ) --option ( enable-oss "compile OSS support (if it is available)" on ) --option ( enable-dsound "compile DirectSound support (if it is available)" on ) --option ( enable-wasapi "compile Windows WASAPI support (if it is available)" on ) --option ( enable-waveout "compile Windows WaveOut support (if it is available)" on ) --option ( enable-winmidi "compile Windows MIDI support (if it is available)" on ) -+option ( enable-network "enable network support (requires BSD sockets)" off ) -+option ( enable-oss "compile OSS support (if it is available)" off ) -+option ( enable-dsound "compile DirectSound support (if it is available)" off ) -+option ( enable-wasapi "compile Windows WASAPI support (if it is available)" off ) -+option ( enable-waveout "compile Windows WaveOut support (if it is available)" off ) -+option ( enable-winmidi "compile Windows MIDI support (if it is available)" off ) - option ( enable-sdl2 "compile SDL2 audio support (if it is available)" off ) --option ( enable-pulseaudio "compile PulseAudio support (if it is available)" on ) --option ( enable-pipewire "compile PipeWire support (if it is available)" on ) --option ( enable-readline "compile readline lib line editing (if it is available)" on ) --option ( enable-threads "enable multi-threading support (such as parallel voice synthesis)" on ) --option ( enable-openmp "enable OpenMP support (parallelization of soundfont decoding, vectorization of voice mixing, etc.)" on ) --option ( enable-unicode "enable UNICODE build for Windows" on ) -+option ( enable-pulseaudio "compile PulseAudio support (if it is available)" off ) -+option ( enable-pipewire "compile PipeWire support (if it is available)" off ) -+option ( enable-readline "compile readline lib line editing (if it is available)" off ) -+option ( enable-threads "enable multi-threading support (such as parallel voice synthesis)" off ) -+option ( enable-openmp "enable OpenMP support (parallelization of soundfont decoding, vectorization of voice mixing, etc.)" off ) -+option ( enable-unicode "enable UNICODE build for Windows" off ) - - # Platform specific options - if ( CMAKE_SYSTEM MATCHES "Linux" ) -- option ( enable-systemd "compile systemd support (if it is available)" on ) -+ option ( enable-systemd "compile systemd support (if it is available)" off ) - endif ( CMAKE_SYSTEM MATCHES "Linux" ) - - if ( CMAKE_SYSTEM MATCHES "Darwin" ) -- option ( enable-coreaudio "compile CoreAudio support (if it is available)" on ) -- option ( enable-coremidi "compile CoreMIDI support (if it is available)" on ) -- option ( enable-framework "create a Mac OSX style FluidSynth.framework" on ) -+ option ( enable-coreaudio "compile CoreAudio support (if it is available)" off ) -+ option ( enable-coremidi "compile CoreMIDI support (if it is available)" off ) -+ option ( enable-framework "create a Mac OSX style FluidSynth.framework" off ) - endif ( CMAKE_SYSTEM MATCHES "Darwin" ) - - if ( CMAKE_SYSTEM MATCHES "OS2" ) --- -2.48.1 - diff --git a/windows/fluidsynth-easyrpg/fluidsynth-no-glib.patch b/windows/fluidsynth-easyrpg/fluidsynth-no-glib.patch deleted file mode 100644 index a4d4478fc..000000000 --- a/windows/fluidsynth-easyrpg/fluidsynth-no-glib.patch +++ /dev/null @@ -1,531 +0,0 @@ -From 192ef394e0806aaff18aa0d04eeb56b9a7df058d Mon Sep 17 00:00:00 2001 -From: Ghabry -Date: Fri, 17 Mar 2023 14:00:45 +0100 -Subject: [PATCH 1/2] Shim glib - ---- - CMakeLists.txt | 4 +- - FluidSynthConfig.cmake.in | 2 +- - src/CMakeLists.txt | 3 +- - src/bindings/fluid_cmd.c | 3 + - src/glib_shim.c | 12 ++++ - src/glib_shim.h | 95 ++++++++++++++++++++++++++++++++ - src/rvoice/fluid_rvoice_mixer.c | 10 ---- - src/sfloader/fluid_defsfont.c | 5 -- - src/sfloader/fluid_samplecache.c | 2 + - src/sfloader/fluid_sffile.c | 6 +- - src/synth/fluid_synth.c | 16 +++--- - src/synth/fluid_synth.h | 2 +- - src/utils/fluid_sys.c | 9 ++- - src/utils/fluid_sys.h | 8 +-- - src/utils/fluidsynth_priv.h | 2 +- - 15 files changed, 143 insertions(+), 36 deletions(-) - create mode 100644 src/glib_shim.c - create mode 100644 src/glib_shim.h - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 75b8862..8d48251 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -533,8 +533,8 @@ if ( CMAKE_VERSION VERSION_GREATER_EQUAL 3.15 AND VCPKG_TOOLCHAIN ) - endif () - - # Mandatory libraries: glib and gthread --find_package ( GLib2 ${GLIB2_MINUMUM_VERSION} REQUIRED ) --list( APPEND PC_REQUIRES_PRIV "glib-2.0" "gthread-2.0") -+# find_package ( GLib2 ${GLIB2_MINUMUM_VERSION} REQUIRED ) -+# list( APPEND PC_REQUIRES_PRIV "glib-2.0" "gthread-2.0") - - if ( GLib2_VERSION AND GLib2_VERSION VERSION_LESS "2.26.0" ) - message ( WARNING "Your version of glib is very old. This may cause problems with fluidsynth's sample cache on Windows. Consider updating to glib 2.26 or newer!" ) -diff --git a/FluidSynthConfig.cmake.in b/FluidSynthConfig.cmake.in -index d2e0c5e..683d10c 100644 ---- a/FluidSynthConfig.cmake.in -+++ b/FluidSynthConfig.cmake.in -@@ -73,7 +73,7 @@ if(NOT FLUIDSYNTH_IS_SHARED) - endif() - - if(NOT TARGET GLib2::glib-2 OR NOT TARGET GLib2::gthread-2) -- find_dependency(GLib2 @GLIB2_MINUMUM_VERSION@) -+ #find_dependency(GLib2 @GLIB2_MINUMUM_VERSION@) - endif() - - # Optional dependencies -diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt -index 0275227..65d8a1a 100644 ---- a/src/CMakeLists.txt -+++ b/src/CMakeLists.txt -@@ -108,6 +108,7 @@ endif ( OBOE_SUPPORT ) - set ( config_SOURCES ${FluidSynth_BINARY_DIR}/config.h ) - - set ( libfluidsynth_SOURCES -+ glib_shim.c - utils/fluid_conv.c - utils/fluid_conv.h - utils/fluid_hash.c -@@ -352,7 +353,7 @@ if ( TARGET OpenMP::OpenMP_C AND HAVE_OPENMP ) - target_link_libraries ( libfluidsynth-OBJ PUBLIC OpenMP::OpenMP_C ) - endif() - --target_link_libraries ( libfluidsynth-OBJ PUBLIC GLib2::glib-2 GLib2::gthread-2 ) -+# target_link_libraries ( libfluidsynth-OBJ PUBLIC GLib2::glib-2 GLib2::gthread-2 ) - - if ( TARGET SndFile::sndfile AND LIBSNDFILE_SUPPORT ) - target_link_libraries ( libfluidsynth-OBJ PUBLIC SndFile::sndfile ) -diff --git a/src/bindings/fluid_cmd.c b/src/bindings/fluid_cmd.c -index 444b263..74780e1 100644 ---- a/src/bindings/fluid_cmd.c -+++ b/src/bindings/fluid_cmd.c -@@ -433,6 +433,8 @@ static const fluid_cmd_t fluid_commands[] = - int - fluid_command(fluid_cmd_handler_t *handler, const char *cmd, fluid_ostream_t out) - { -+ return 0; -+#if 0 - int result, num_tokens = 0; - char **tokens = NULL; - -@@ -451,6 +453,7 @@ fluid_command(fluid_cmd_handler_t *handler, const char *cmd, fluid_ostream_t out - fluid_strfreev(tokens); - - return result; -+#endif - } - - /** -diff --git a/src/glib_shim.c b/src/glib_shim.c -new file mode 100644 -index 0000000..40b8b56 ---- /dev/null -+++ b/src/glib_shim.c -@@ -0,0 +1,12 @@ -+#include "glib_shim.h" -+ -+int g_atomic_int_dec_and_test(int* _pi) { -+ *_pi -= 1; -+ return (_pi == 0); -+} -+ -+int g_atomic_int_add(int* _pi, int _add) { -+ int tmp = *_pi; -+ *_pi += _add; -+ return tmp; -+} -diff --git a/src/glib_shim.h b/src/glib_shim.h -new file mode 100644 -index 0000000..08582e3 ---- /dev/null -+++ b/src/glib_shim.h -@@ -0,0 +1,95 @@ -+#ifndef GLIB_SHIM_H -+#define GLIB_SHIM_H -+ -+#define GLIB_MAJOR_VERSION 3 -+#define GLIB_MINOR_VERSION 0 -+#define GLIB_MICRO_VERISON 0 -+ -+#define GLIB_CHECK_VERSION(major,minor,micro) \ -+ (GLIB_MAJOR_VERSION > (major) || \ -+ (GLIB_MAJOR_VERSION == (major) && GLIB_MINOR_VERSION > (minor)) || \ -+ (GLIB_MAJOR_VERSION == (major) && GLIB_MINOR_VERSION == (minor) && \ -+ GLIB_MICRO_VERSION >= (micro))) -+ -+typedef int GMutex; -+typedef int GRecMutex; -+typedef int GThread; -+typedef int GCond; -+typedef int GStatBuf; -+typedef int GTimeVal; -+typedef void* gpointer; -+typedef int GError; -+ -+#ifdef WORDS_BIGENDIAN -+#define G_BIG_ENDIAN WORDS_BIGENDIAN -+#define G_BYTE_ORDER WORDS_BIGENDIAN -+#else -+#define G_BYTE_ORDER 0 -+#define G_BIG_ENDIAN 1 -+#endif -+ -+#ifdef WORDS_BIGENDIAN -+#define GINT32_FROM_LE(x) ((x >> 24) | ((x<<8) & 0x00FF0000) | ((x>>8) & 0x0000FF00) | (x << 24)) -+#define GINT16_FROM_LE(x) ((x >> 8) | (x << 8)) -+#else -+#define GINT32_FROM_LE(x) ((x)) -+#define GINT16_FROM_LE(x) ((x)) -+#endif -+ -+#define G_LIKELY -+#define G_UNLIKELY -+ -+#ifndef TRUE -+#define TRUE 1 -+#define FALSE 0 -+#endif -+ -+#define g_mutex_init(x) -+#define g_mutex_clear(x) -+#define g_mutex_lock(x) -+#define g_mutex_unlock(x) -+ -+#define g_rec_mutex_init(x) -+#define g_rec_mutex_clear(x) -+#define g_rec_mutex_lock(x) -+#define g_rec_mutex_unlock(x) -+ -+#define g_new(type, len) ( NULL ) -+#define g_free(obj) -+ -+#define g_atomic_int_inc(_pi) ( *_pi += 1 ) -+#define g_atomic_int_get(_pi) ( *_pi ) -+#define g_atomic_int_set(_pi, _val) ( *_pi = _val ) -+int g_atomic_int_dec_and_test(int* _pi); -+#define g_atomic_int_compare_and_exchange(_pi, _old, _new) ( 1 ) -+int g_atomic_int_add(int* _pi, int _add); -+#define g_atomic_pointer_get(_pp) ( _pp ) -+#define g_atomic_pointer_set(_pp, val) ( _pp = val ) -+#define g_atomic_pointer_compare_and_exchange(_pp, _expected, _desired) (1) -+ -+#define g_cond_init(x) -+#define g_cond_signal(x) -+#define g_cond_broadcast(x) -+#define g_cond_clear(x) -+#define g_cond_wait(x, y) -+ -+#define g_stat(a, b) ( 0 ) -+ -+#define g_assert(a) -+ -+#define G_FILE_TEST_IS_REGULAR 0 -+#define G_FILE_TEST_EXISTS 1 -+#define g_file_test(a, b) ( FALSE ) -+ -+#define g_usleep(x) -+ -+#define g_thread_try_new(a, b, c, d) ( NULL ) -+#define g_clear_error(e) ( *err = 0 ) -+#define g_thread_unref(t) -+#define g_thread_join(t) -+ -+#define g_shim_alloca(size) _alloca((size)) -+#define g_newa(struct_type, n_structs) \ -+ ((struct_type *)g_shim_alloca(sizeof(struct_type) * (size_t)(n_structs))) -+ -+#endif -diff --git a/src/rvoice/fluid_rvoice_mixer.c b/src/rvoice/fluid_rvoice_mixer.c -index c1e2fb2..9255313 100644 ---- a/src/rvoice/fluid_rvoice_mixer.c -+++ b/src/rvoice/fluid_rvoice_mixer.c -@@ -478,7 +478,6 @@ fluid_rvoice_buffers_mix(fluid_rvoice_buffers_t *buffers, - else - { - // here goes the vectorizable loop -- #pragma omp simd aligned(dsp_buf,buf:FLUID_DEFAULT_ALIGNMENT) - for(dsp_i = 0; dsp_i < FLUID_BUFSIZE; dsp_i++) - { - // We cannot simply increment current_amp by amp_incr during every iteration, as this would create a dependency and prevent vectorization. -@@ -489,7 +488,6 @@ fluid_rvoice_buffers_mix(fluid_rvoice_buffers_t *buffers, - if(target_amp > 0) - { - /* Note, that this loop could be unrolled by FLUID_BUFSIZE elements */ -- #pragma omp simd aligned(dsp_buf,buf:FLUID_DEFAULT_ALIGNMENT) - for(dsp_i = FLUID_BUFSIZE; dsp_i < sample_count; dsp_i++) - { - // Index by blocks (not by samples) to let the compiler know that we always start accessing -@@ -1413,8 +1411,6 @@ fluid_mixer_buffers_mix(fluid_mixer_buffers_t *dst, fluid_mixer_buffers_t *src, - - for(i = 0; i < minbuf; i++) - { -- #pragma omp simd aligned(base_dst,base_src:FLUID_DEFAULT_ALIGNMENT) -- - for(j = 0; j < scount; j++) - { - int dsp_i = i * FLUID_MIXER_MAX_BUFFERS_DEFAULT * FLUID_BUFSIZE + j; -@@ -1427,8 +1423,6 @@ fluid_mixer_buffers_mix(fluid_mixer_buffers_t *dst, fluid_mixer_buffers_t *src, - - for(i = 0; i < minbuf; i++) - { -- #pragma omp simd aligned(base_dst,base_src:FLUID_DEFAULT_ALIGNMENT) -- - for(j = 0; j < scount; j++) - { - int dsp_i = i * FLUID_MIXER_MAX_BUFFERS_DEFAULT * FLUID_BUFSIZE + j; -@@ -1448,8 +1442,6 @@ fluid_mixer_buffers_mix(fluid_mixer_buffers_t *dst, fluid_mixer_buffers_t *src, - - for(i = 0; i < minbuf; i++) - { -- #pragma omp simd aligned(base_dst,base_src:FLUID_DEFAULT_ALIGNMENT) -- - for(j = 0; j < scount; j++) - { - int dsp_i = i * FLUID_MIXER_MAX_BUFFERS_DEFAULT * FLUID_BUFSIZE + j; -@@ -1462,8 +1454,6 @@ fluid_mixer_buffers_mix(fluid_mixer_buffers_t *dst, fluid_mixer_buffers_t *src, - - for(i = 0; i < minbuf; i++) - { -- #pragma omp simd aligned(base_dst,base_src:FLUID_DEFAULT_ALIGNMENT) -- - for(j = 0; j < scount; j++) - { - int dsp_i = i * FLUID_MIXER_MAX_BUFFERS_DEFAULT * FLUID_BUFSIZE + j; -diff --git a/src/sfloader/fluid_defsfont.c b/src/sfloader/fluid_defsfont.c -index b601621..a82362d 100644 ---- a/src/sfloader/fluid_defsfont.c -+++ b/src/sfloader/fluid_defsfont.c -@@ -395,8 +395,6 @@ int fluid_defsfont_load_all_sampledata(fluid_defsfont_t *defsfont, SFData *sfdat - } - } - -- #pragma omp parallel -- #pragma omp single - for(list = defsfont->sample; list; list = fluid_list_next(list)) - { - sample = fluid_list_get(list); -@@ -405,11 +403,9 @@ int fluid_defsfont_load_all_sampledata(fluid_defsfont_t *defsfont, SFData *sfdat - { - /* SF3 samples get loaded individually, as most (or all) of them are in Ogg Vorbis format - * anyway */ -- #pragma omp task firstprivate(sample,sfdata,defsfont) shared(sample_parsing_result, invalid_loops_were_sanitized) default(none) - { - if(fluid_defsfont_load_sampledata(defsfont, sfdata, sample) == FLUID_FAILED) - { -- #pragma omp critical - { - FLUID_LOG(FLUID_ERR, "Failed to load sample '%s'", sample->name); - sample_parsing_result = FLUID_FAILED; -@@ -431,7 +427,6 @@ int fluid_defsfont_load_all_sampledata(fluid_defsfont_t *defsfont, SFData *sfdat - } - else - { -- #pragma omp task firstprivate(sample, defsfont) shared(invalid_loops_were_sanitized) default(none) - { - int modified; - /* Data pointers of SF2 samples point to large sample data block loaded above */ -diff --git a/src/sfloader/fluid_samplecache.c b/src/sfloader/fluid_samplecache.c -index 64e9e9e..4c504c0 100644 ---- a/src/sfloader/fluid_samplecache.c -+++ b/src/sfloader/fluid_samplecache.c -@@ -282,6 +282,7 @@ static fluid_samplecache_entry_t *get_samplecache_entry(SFData *sf, - - static int fluid_get_file_modification_time(char *filename, time_t *modification_time) - { -+#if 0 - fluid_stat_buf_t buf; - - if(fluid_stat(filename, &buf)) -@@ -290,6 +291,7 @@ static int fluid_get_file_modification_time(char *filename, time_t *modification - } - - *modification_time = buf.st_mtime; -+#endif - return FLUID_OK; - } - -diff --git a/src/sfloader/fluid_sffile.c b/src/sfloader/fluid_sffile.c -index 21535c9..ee3aa0b 100644 ---- a/src/sfloader/fluid_sffile.c -+++ b/src/sfloader/fluid_sffile.c -@@ -2258,10 +2258,14 @@ static int fluid_sffile_read_wav(SFData *sf, unsigned int start, unsigned int en - if(FLUID_IS_BIG_ENDIAN) - { - unsigned int i; -+ unsigned short data; - - for(i = 0; i < num_samples; i++) - { -- loaded_data[i] = FLUID_LE16TOH(loaded_data[i]); -+ data = loaded_data[i]; -+ data = (data >> 8) | (data << 8); -+ //loaded_data[i] = FLUID_LE16TOH(loaded_data[i]); -+ loaded_data[i] = data; - } - } - -diff --git a/src/synth/fluid_synth.c b/src/synth/fluid_synth.c -index 82cfac4..76fed3d 100644 ---- a/src/synth/fluid_synth.c -+++ b/src/synth/fluid_synth.c -@@ -637,8 +637,9 @@ new_fluid_synth(fluid_settings_t *settings) - double sample_rate_min, sample_rate_max; - - /* initialize all the conversion tables and other stuff */ -- if(fluid_atomic_int_compare_and_exchange(&fluid_synth_initialized, 0, 1)) -+ if(fluid_synth_initialized == 0) - { -+ fluid_synth_initialized = 1; - fluid_synth_init(); - } - -@@ -817,7 +818,7 @@ new_fluid_synth(fluid_settings_t *settings) - - fluid_atomic_int_set(&synth->ticks_since_start, 0); - synth->tuning = NULL; -- fluid_private_init(synth->tuning_iter); -+ synth->tuning_iter = 0; - - /* Initialize multi-core variables if multiple cores enabled */ - if(synth->cores > 1) -@@ -1203,7 +1204,7 @@ delete_fluid_synth(fluid_synth_t *synth) - FLUID_FREE(synth->tuning); - } - -- fluid_private_free(synth->tuning_iter); -+ synth->tuning_iter = 0; - - #ifdef LADSPA - /* Release the LADSPA effects unit */ -@@ -7451,7 +7452,7 @@ fluid_synth_tuning_iteration_start(fluid_synth_t *synth) - { - fluid_return_if_fail(synth != NULL); - fluid_synth_api_enter(synth); -- fluid_private_set(synth->tuning_iter, FLUID_INT_TO_POINTER(0)); -+ synth->tuning_iter = 0; - fluid_synth_api_exit(synth); - } - -@@ -7474,7 +7475,7 @@ fluid_synth_tuning_iteration_next(fluid_synth_t *synth, int *bank, int *prog) - fluid_synth_api_enter(synth); - - /* Current tuning iteration stored as: bank << 8 | program */ -- pval = fluid_private_get(synth->tuning_iter); -+ pval = &synth->tuning_iter; - p = FLUID_POINTER_TO_INT(pval); - b = (p >> 8) & 0xFF; - p &= 0xFF; -@@ -7503,12 +7504,11 @@ fluid_synth_tuning_iteration_next(fluid_synth_t *synth, int *bank, int *prog) - - if(p < 127) - { -- fluid_private_set(synth->tuning_iter, -- FLUID_INT_TO_POINTER(b << 8 | (p + 1))); -+ synth->tuning_iter = (b << 8 | (p + 1)); - } - else - { -- fluid_private_set(synth->tuning_iter, FLUID_INT_TO_POINTER((b + 1) << 8)); -+ synth->tuning_iter = ((b + 1) << 8); - } - - FLUID_API_RETURN(1); -diff --git a/src/synth/fluid_synth.h b/src/synth/fluid_synth.h -index bcd964f..56c7976 100644 ---- a/src/synth/fluid_synth.h -+++ b/src/synth/fluid_synth.h -@@ -158,7 +158,7 @@ struct _fluid_synth_t - fluid_atomic_float_t cpu_load; /**< CPU load in percent (CPU time required / audio synthesized time * 100) */ - - fluid_tuning_t ***tuning; /**< 128 banks of 128 programs for the tunings */ -- fluid_private_t tuning_iter; /**< Tuning iterators per each thread */ -+ int tuning_iter; /**< Tuning iterators per each thread */ - - fluid_sample_timer_t *sample_timers; /**< List of timers triggered before a block is processed */ - unsigned int min_note_length_ticks; /**< If note-offs are triggered just after a note-on, they will be delayed */ -diff --git a/src/utils/fluid_sys.c b/src/utils/fluid_sys.c -index babb11f..e82094b 100644 ---- a/src/utils/fluid_sys.c -+++ b/src/utils/fluid_sys.c -@@ -33,7 +33,7 @@ - #if HAVE_PTHREAD_H && !defined(_WIN32) - // Do not include pthread on windows. It includes winsock.h, which collides with ws2tcpip.h from fluid_sys.h - // It isn't need on Windows anyway. --#include -+//#include - #endif - - /* WIN32 HACK - Flag used to differentiate between a file descriptor and a socket. -@@ -411,6 +411,8 @@ unsigned int fluid_curtime(void) - double - fluid_utime(void) - { -+ return 0.0; -+#if 0 - double utime; - - #if GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION >= 28 -@@ -445,6 +447,7 @@ fluid_utime(void) - #endif - - return utime; -+#endif - } - - -@@ -477,6 +480,7 @@ fluid_thread_self_set_prio(int prio_level) - void - fluid_thread_self_set_prio(int prio_level) - { -+#if 0 - struct sched_param priority; - - if(prio_level > 0) -@@ -501,6 +505,7 @@ fluid_thread_self_set_prio(int prio_level) - #endif - FLUID_LOG(FLUID_WARN, "Failed to set thread to high priority"); - } -+#endif - } - - #ifdef FPE_CHECK -@@ -1041,7 +1046,7 @@ new_fluid_thread(const char *name, fluid_thread_func_t func, void *data, int pri - fluid_thread_info_t *info = NULL; - GError *err = NULL; - -- g_return_val_if_fail(func != NULL, NULL); -+ fluid_return_val_if_fail(func != NULL, NULL); - - #if OLD_GLIB_THREAD_API - -diff --git a/src/utils/fluid_sys.h b/src/utils/fluid_sys.h -index f491254..1521c4c 100644 ---- a/src/utils/fluid_sys.h -+++ b/src/utils/fluid_sys.h -@@ -175,7 +175,7 @@ typedef gintptr intptr_t; - #include - #endif - --#include -+#include "glib_shim.h" - - #ifdef __cplusplus - extern "C" { -@@ -187,7 +187,7 @@ extern "C" { - * @param err Pointer to a GError to access the message field of. - * @return Message string - */ --#define fluid_gerror_message(err) ((err) ? err->message : "No error details") -+#define fluid_gerror_message(err) ("No error details") - - #if defined(_WIN32) || defined(__CYGWIN__) - char* fluid_get_windows_error(void); -@@ -340,13 +340,13 @@ delete_fluid_cond(fluid_cond_t *cond) - } - - /* Thread private data */ -- -+#if 0 - typedef GPrivate fluid_private_t; - #define fluid_private_init(_priv) memset (&_priv, 0, sizeof (_priv)) - #define fluid_private_free(_priv) - #define fluid_private_get(_priv) g_private_get(&(_priv)) - #define fluid_private_set(_priv, _data) g_private_set(&(_priv), _data) -- -+#endif - #else - - /* glib prior to 2.32 */ -diff --git a/src/utils/fluidsynth_priv.h b/src/utils/fluidsynth_priv.h -index 67e97ab..9dcfbb7 100644 ---- a/src/utils/fluidsynth_priv.h -+++ b/src/utils/fluidsynth_priv.h -@@ -31,7 +31,7 @@ - - #include "config.h" - --#include -+#include "glib_shim.h" - - #if HAVE_STDLIB_H - #include // malloc, free --- -2.48.1 - diff --git a/windows/fluidsynth-easyrpg/gentables.patch b/windows/fluidsynth-easyrpg/gentables.patch deleted file mode 100644 index 6faa5f8c5..000000000 --- a/windows/fluidsynth-easyrpg/gentables.patch +++ /dev/null @@ -1,51 +0,0 @@ -diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt -index e86a6429..9240e091 100644 ---- a/src/CMakeLists.txt -+++ b/src/CMakeLists.txt -@@ -538,6 +538,9 @@ install(EXPORT FluidSynthTargets - - # ******* Auto Generated Lookup Tables ****** - -+if(VCPKG_BUILD_MAKE_TABLES) -+ add_subdirectory(gentables) -+elseif(0) - include(ExternalProject) - - set (GENTAB_SDIR ${CMAKE_CURRENT_SOURCE_DIR}/gentables) -@@ -557,4 +560,11 @@ ExternalProject_Add(gentables - "${CMAKE_COMMAND}" --build "${GENTAB_BDIR}" - INSTALL_COMMAND ${GENTAB_BDIR}/make_tables.exe "${FluidSynth_BINARY_DIR}/" - ) -+endif() -+if(TARGET make_tables AND NOT CMAKE_CROSSCOMPILING) -+ set(GENTABLES make_tables) -+else() -+ find_program(GENTABLES make_tables REQUIRED) -+endif() -+add_custom_target(gentables COMMAND "${GENTABLES}" "${CMAKE_BINARY_DIR}/") - add_dependencies(libfluidsynth-OBJ gentables) -diff --git a/src/gentables/CMakeLists.txt b/src/gentables/CMakeLists.txt -index 9cb69f2b..c393a670 100644 ---- a/src/gentables/CMakeLists.txt -+++ b/src/gentables/CMakeLists.txt -@@ -12,6 +12,7 @@ unset(ENV{LDFLAGS}) - - project (gentables C) - -+if (0) - set ( CMAKE_BUILD_TYPE Debug ) - - # hardcode ".exe" as suffix to the binary, else in case of cross-platform cross-compiling the calling cmake will not know the suffix used here and fail to find the binary -@@ -20,6 +21,7 @@ set ( CMAKE_EXECUTABLE_SUFFIX ".exe" ) - set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) - set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}) - set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}) -+endif() - - # Add the executable that generates the table - add_executable( make_tables -@@ -34,3 +36,4 @@ if ( WIN32 ) - else ( WIN32 ) - target_link_libraries (make_tables "m") - endif () -+install(TARGETS make_tables DESTINATION bin) diff --git a/windows/fluidsynth-easyrpg/portfile.cmake b/windows/fluidsynth-easyrpg/portfile.cmake deleted file mode 100644 index 508f872bd..000000000 --- a/windows/fluidsynth-easyrpg/portfile.cmake +++ /dev/null @@ -1,99 +0,0 @@ -if("pulseaudio" IN_LIST FEATURES) - message( - "${PORT} with pulseaudio feature currently requires the following from the system package manager: - libpulse-dev pulseaudio - These can be installed on Ubuntu systems via sudo apt install libpulse-dev pulseaudio" - ) -endif() - -vcpkg_from_github( - OUT_SOURCE_PATH SOURCE_PATH - REPO FluidSynth/fluidsynth - REF "v${VERSION}" - SHA512 847d2f4529ac1bad735b71b57067c50586df7e2526c6311925c209c0635ee1e1dca1bd77dc6006181fc19a616738c8de1242bfb209707c8dbea9d7e2acc61017 - HEAD_REF master - PATCHES - gentables.patch - fluidsynth-no-glib.patch - fluidsynth-no-deps.patch -) - -vcpkg_check_features( - OUT_FEATURE_OPTIONS FEATURE_OPTIONS - FEATURES - buildtools VCPKG_BUILD_MAKE_TABLES - sndfile enable-libsndfile - pulseaudio enable-pulseaudio -) - -# enable platform-specific features, force the build to fail if the required libraries are not found, -# and disable all other features to avoid system libraries to be picked up -set(WINDOWS_OPTIONS enable-dsound enable-wasapi enable-waveout enable-winmidi HAVE_MMSYSTEM_H HAVE_DSOUND_H HAVE_OBJBASE_H) -set(MACOS_OPTIONS enable-coreaudio enable-coremidi COREAUDIO_FOUND COREMIDI_FOUND) -set(LINUX_OPTIONS enable-alsa ALSA_FOUND) -set(ANDROID_OPTIONS enable-opensles OpenSLES_FOUND) -set(IGNORED_OPTIONS enable-coverage enable-dbus enable-floats enable-fpe-check enable-framework enable-jack - enable-libinstpatch enable-midishare enable-oboe enable-openmp enable-oss enable-pipewire enable-portaudio - enable-profiling enable-readline enable-sdl2 enable-systemd enable-trap-on-fpe enable-ubsan) - -if(VCPKG_TARGET_IS_WINDOWS) - set(OPTIONS_TO_ENABLE ${WINDOWS_OPTIONS}) - set(OPTIONS_TO_DISABLE ${MACOS_OPTIONS} ${LINUX_OPTIONS} ${ANDROID_OPTIONS}) -elseif(VCPKG_TARGET_IS_OSX) - set(OPTIONS_TO_ENABLE ${MACOS_OPTIONS}) - set(OPTIONS_TO_DISABLE ${WINDOWS_OPTIONS} ${LINUX_OPTIONS} ${ANDROID_OPTIONS}) -elseif(VCPKG_TARGET_IS_LINUX) - set(OPTIONS_TO_ENABLE ${LINUX_OPTIONS}) - set(OPTIONS_TO_DISABLE ${WINDOWS_OPTIONS} ${MACOS_OPTIONS} ${ANDROID_OPTIONS}) -elseif(VCPKG_TARGET_IS_ANDROID) - set(OPTIONS_TO_ENABLE ${ANDROID_OPTIONS}) - set(OPTIONS_TO_DISABLE ${WINDOWS_OPTIONS} ${MACOS_OPTIONS} ${LINUX_OPTIONS}) -endif() - -foreach(_option IN LISTS OPTIONS_TO_ENABLE) - list(APPEND ENABLED_OPTIONS "-D{_option}:BOOL=ON") -endforeach() - -foreach(_option IN LISTS OPTIONS_TO_DISABLE IGNORED_OPTIONS) - list(APPEND DISABLED_OPTIONS "-D${_option}:BOOL=OFF") -endforeach() - -vcpkg_find_acquire_program(PKGCONFIG) -vcpkg_cmake_configure( - SOURCE_PATH "${SOURCE_PATH}" - OPTIONS - "-DVCPKG_HOST_TRIPLET=${HOST_TRIPLET}" - ${FEATURE_OPTIONS} - ${ENABLED_OPTIONS} - ${DISABLED_OPTIONS} - "-DPKG_CONFIG_EXECUTABLE=${PKGCONFIG}" - MAYBE_UNUSED_VARIABLES - ${OPTIONS_TO_DISABLE} - VCPKG_BUILD_MAKE_TABLES - enable-coverage - enable-framework - enable-ubsan -) - -vcpkg_cmake_install() - -vcpkg_cmake_config_fixup(PACKAGE_NAME fluidsynth CONFIG_PATH lib/cmake/fluidsynth) - -vcpkg_fixup_pkgconfig() - -set(tools fluidsynth) -if("buildtools" IN_LIST FEATURES) - list(APPEND tools make_tables) -endif() -vcpkg_copy_tools(TOOL_NAMES ${tools} AUTO_CLEAN) - -vcpkg_copy_pdbs() - -file(REMOVE_RECURSE - "${CURRENT_PACKAGES_DIR}/debug/include" - "${CURRENT_PACKAGES_DIR}/debug/share" - "${CURRENT_PACKAGES_DIR}/share/man") - -vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") - -file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") diff --git a/windows/fluidsynth-easyrpg/usage b/windows/fluidsynth-easyrpg/usage deleted file mode 100644 index 98d79a631..000000000 --- a/windows/fluidsynth-easyrpg/usage +++ /dev/null @@ -1,5 +0,0 @@ -The package fluidsynth provides CMake targets: - - find_package(FluidSynth CONFIG REQUIRED) - target_link_libraries(main PRIVATE FluidSynth::libfluidsynth) - add_custom_command(OUTPUT result COMMAND FluidSynth::fluidsynth ARGS ...) diff --git a/windows/fluidsynth-easyrpg/vcpkg.json b/windows/fluidsynth-easyrpg/vcpkg.json deleted file mode 100644 index 8257d5669..000000000 --- a/windows/fluidsynth-easyrpg/vcpkg.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "fluidsynth-easyrpg", - "version": "2.4.3", - "description": "FluidSynth reads and handles MIDI events from the MIDI input device. It is the software analogue of a MIDI synthesizer. FluidSynth can also play midifiles using a Soundfont.", - "homepage": "https://github.com/FluidSynth/fluidsynth", - "license": "LGPL-2.1-or-later", - "supports": "!xbox", - "dependencies": [ - { - "name": "alsa", - "platform": "linux" - }, - { - "name": "fluidsynth-easyrpg", - "host": true, - "default-features": false, - "features": [ - "buildtools" - ] - }, - { - "name": "vcpkg-cmake", - "host": true - }, - { - "name": "vcpkg-cmake-config", - "host": true - } - ], - "features": { - "buildtools": { - "description": "Build tools gentables" - }, - "pulseaudio": { - "description": "Build with PulseAudio support", - "supports": "linux" - }, - "sndfile": { - "description": "Enable rendering to file and SF3 support", - "dependencies": [ - { - "name": "libsndfile", - "default-features": false, - "features": [ - "external-libs" - ] - } - ] - } - } -} diff --git a/windows/helper/prepare.cmd b/windows/helper/prepare.cmd index 501ed7d88..8d4d445f3 100644 --- a/windows/helper/prepare.cmd +++ b/windows/helper/prepare.cmd @@ -11,10 +11,6 @@ IF EXIST vcpkg ( :: Build vcpkg call bootstrap-vcpkg.bat -:: Revert fmtlib to the previous version because fmt::styled does not compile -:: Remove this when the next fmtlib version is released -git restore -s 50ca16008cebab427e90a98f8ffc34208b215dba ports/fmt - :: Optimize the debug libraries copy ..\helper\windows.cmake scripts\toolchains\windows.cmake diff --git a/windows/helper/windows.cmake b/windows/helper/windows.cmake index 78c509726..d1bfba5c0 100644 --- a/windows/helper/windows.cmake +++ b/windows/helper/windows.cmake @@ -1,86 +1,107 @@ -if(NOT _VCPKG_WINDOWS_TOOLCHAIN) -set(_VCPKG_WINDOWS_TOOLCHAIN 1) -set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>$<$:DLL>" CACHE STRING "") -set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "") - -set(CMAKE_SYSTEM_NAME Windows CACHE STRING "") - -if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") - set(CMAKE_SYSTEM_PROCESSOR x86 CACHE STRING "") -elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") - set(CMAKE_SYSTEM_PROCESSOR AMD64 CACHE STRING "") -elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm") - set(CMAKE_SYSTEM_PROCESSOR ARM CACHE STRING "") -elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") - set(CMAKE_SYSTEM_PROCESSOR ARM64 CACHE STRING "") -endif() - -if(DEFINED VCPKG_CMAKE_SYSTEM_VERSION) - set(CMAKE_SYSTEM_VERSION "${VCPKG_CMAKE_SYSTEM_VERSION}" CACHE STRING "" FORCE) -endif() - -if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") - if(CMAKE_SYSTEM_PROCESSOR STREQUAL CMAKE_HOST_SYSTEM_PROCESSOR) - set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") - elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86") - # any of the four platforms can run x86 binaries - set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") - elseif(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "ARM64") - # arm64 can run binaries of any of the four platforms after Windows 11 - set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") - endif() - - if(NOT DEFINED CMAKE_SYSTEM_VERSION) - set(CMAKE_SYSTEM_VERSION "${CMAKE_HOST_SYSTEM_VERSION}" CACHE STRING "") - endif() -endif() - -get_property( _CMAKE_IN_TRY_COMPILE GLOBAL PROPERTY IN_TRY_COMPILE ) -if(NOT _CMAKE_IN_TRY_COMPILE) - - if(VCPKG_CRT_LINKAGE STREQUAL "dynamic") - set(VCPKG_CRT_LINK_FLAG_PREFIX "/MD") - elseif(VCPKG_CRT_LINKAGE STREQUAL "static") - set(VCPKG_CRT_LINK_FLAG_PREFIX "/MT") - else() - message(FATAL_ERROR "Invalid setting for VCPKG_CRT_LINKAGE: \"${VCPKG_CRT_LINKAGE}\". It must be \"static\" or \"dynamic\"") - endif() - - set(CHARSET_FLAG "/utf-8") - if (NOT VCPKG_SET_CHARSET_FLAG OR VCPKG_PLATFORM_TOOLSET MATCHES "v120") - # VS 2013 does not support /utf-8 - set(CHARSET_FLAG) - endif() - - set(MP_BUILD_FLAG "") - if(NOT (CMAKE_CXX_COMPILER MATCHES "clang-cl.exe")) - set(MP_BUILD_FLAG "/MP") - endif() - - set(CMAKE_CXX_FLAGS " /nologo /DWIN32 /D_WINDOWS /W3 ${CHARSET_FLAG} /GR /EHsc ${MP_BUILD_FLAG} ${VCPKG_CXX_FLAGS}" CACHE STRING "") - set(CMAKE_C_FLAGS " /nologo /DWIN32 /D_WINDOWS /W3 ${CHARSET_FLAG} ${MP_BUILD_FLAG} ${VCPKG_C_FLAGS}" CACHE STRING "") - - if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64ec") - string(APPEND CMAKE_CXX_FLAGS " /arm64EC /D_AMD64_ /DAMD64 /D_ARM64EC_ /DARM64EC") - string(APPEND CMAKE_C_FLAGS " /arm64EC /D_AMD64_ /DAMD64 /D_ARM64EC_ /DARM64EC") - endif() - set(CMAKE_RC_FLAGS "-c65001 /DWIN32" CACHE STRING "") - - unset(CHARSET_FLAG) - - set(CMAKE_CXX_FLAGS_DEBUG "/D_DEBUG ${VCPKG_CRT_LINK_FLAG_PREFIX}d /Z7 /O2 ${VCPKG_CXX_FLAGS_DEBUG}" CACHE STRING "") - set(CMAKE_C_FLAGS_DEBUG "/D_DEBUG ${VCPKG_CRT_LINK_FLAG_PREFIX}d /Z7 /O2 ${VCPKG_C_FLAGS_DEBUG}" CACHE STRING "") - set(CMAKE_CXX_FLAGS_RELEASE "${VCPKG_CRT_LINK_FLAG_PREFIX} /O2 /Oi /Gy /DNDEBUG /Z7 ${VCPKG_CXX_FLAGS_RELEASE}" CACHE STRING "") - set(CMAKE_C_FLAGS_RELEASE "${VCPKG_CRT_LINK_FLAG_PREFIX} /O2 /Oi /Gy /DNDEBUG /Z7 ${VCPKG_C_FLAGS_RELEASE}" CACHE STRING "") - - string(APPEND CMAKE_STATIC_LINKER_FLAGS_RELEASE_INIT " /nologo ") - set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "/nologo /DEBUG /INCREMENTAL:NO /OPT:REF /OPT:ICF ${VCPKG_LINKER_FLAGS} ${VCPKG_LINKER_FLAGS_RELEASE}" CACHE STRING "") - set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "/nologo /DEBUG /INCREMENTAL:NO /OPT:REF /OPT:ICF ${VCPKG_LINKER_FLAGS} ${VCPKG_LINKER_FLAGS_RELEASE}" CACHE STRING "") - set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/nologo /DEBUG /INCREMENTAL:NO /OPT:REF /OPT:ICF ${VCPKG_LINKER_FLAGS} ${VCPKG_LINKER_FLAGS_RELEASE}" CACHE STRING "") - - string(APPEND CMAKE_STATIC_LINKER_FLAGS_DEBUG_INIT " /nologo ") - string(APPEND CMAKE_MODULE_LINKER_FLAGS_DEBUG_INIT " /nologo ${VCPKG_LINKER_FLAGS} ${VCPKG_LINKER_FLAGS_DEBUG} ") - string(APPEND CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT " /nologo ${VCPKG_LINKER_FLAGS} ${VCPKG_LINKER_FLAGS_DEBUG} ") - string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT " /nologo ${VCPKG_LINKER_FLAGS} ${VCPKG_LINKER_FLAGS_DEBUG} ") -endif() -endif() +if(NOT _VCPKG_WINDOWS_TOOLCHAIN) + set(_VCPKG_WINDOWS_TOOLCHAIN 1) + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>$<$:DLL>" CACHE STRING "") + set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "") + + if(POLICY CMP0056) + cmake_policy(SET CMP0056 NEW) + endif() + if(POLICY CMP0066) + cmake_policy(SET CMP0066 NEW) + endif() + if(POLICY CMP0067) + cmake_policy(SET CMP0067 NEW) + endif() + if(POLICY CMP0137) + cmake_policy(SET CMP0137 NEW) + endif() + list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES + VCPKG_CRT_LINKAGE VCPKG_TARGET_ARCHITECTURE VCPKG_SET_CHARSET_FLAG + VCPKG_C_FLAGS VCPKG_CXX_FLAGS + VCPKG_C_FLAGS_DEBUG VCPKG_CXX_FLAGS_DEBUG + VCPKG_C_FLAGS_RELEASE VCPKG_CXX_FLAGS_RELEASE + VCPKG_LINKER_FLAGS VCPKG_LINKER_FLAGS_RELEASE VCPKG_LINKER_FLAGS_DEBUG + VCPKG_PLATFORM_TOOLSET + ) + + set(CMAKE_SYSTEM_NAME Windows CACHE STRING "") + + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + set(CMAKE_SYSTEM_PROCESSOR x86 CACHE STRING "") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + set(CMAKE_SYSTEM_PROCESSOR AMD64 CACHE STRING "") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm") + set(CMAKE_SYSTEM_PROCESSOR ARM CACHE STRING "") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + set(CMAKE_SYSTEM_PROCESSOR ARM64 CACHE STRING "") + endif() + + if(DEFINED VCPKG_CMAKE_SYSTEM_VERSION) + set(CMAKE_SYSTEM_VERSION "${VCPKG_CMAKE_SYSTEM_VERSION}" CACHE STRING "" FORCE) + endif() + + if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") + if(CMAKE_SYSTEM_PROCESSOR STREQUAL CMAKE_HOST_SYSTEM_PROCESSOR) + set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") + elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86") + # any of the four platforms can run x86 binaries + set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") + elseif(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "ARM64") + # arm64 can run binaries of any of the four platforms after Windows 11 + set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") + endif() + + if(NOT DEFINED CMAKE_SYSTEM_VERSION) + set(CMAKE_SYSTEM_VERSION "${CMAKE_HOST_SYSTEM_VERSION}" CACHE STRING "") + endif() + endif() + + if(VCPKG_CRT_LINKAGE STREQUAL "dynamic") + set(VCPKG_CRT_LINK_FLAG_PREFIX "/MD") + elseif(VCPKG_CRT_LINKAGE STREQUAL "static") + set(VCPKG_CRT_LINK_FLAG_PREFIX "/MT") + else() + message(FATAL_ERROR "Invalid setting for VCPKG_CRT_LINKAGE: \"${VCPKG_CRT_LINKAGE}\". It must be \"static\" or \"dynamic\"") + endif() + + set(CHARSET_FLAG "/utf-8") + if (NOT VCPKG_SET_CHARSET_FLAG OR VCPKG_PLATFORM_TOOLSET MATCHES "v120") + # VS 2013 does not support /utf-8 + set(CHARSET_FLAG "") + endif() + + set(MP_BUILD_FLAG "") + if(NOT (CMAKE_CXX_COMPILER MATCHES "clang-cl.exe")) + set(MP_BUILD_FLAG "/MP ") + endif() + + set(CMAKE_CXX_FLAGS " /nologo /DWIN32 /D_WINDOWS ${CHARSET_FLAG} /GR /EHsc ${MP_BUILD_FLAG}${VCPKG_CXX_FLAGS}" CACHE STRING "") + set(CMAKE_C_FLAGS " /nologo /DWIN32 /D_WINDOWS ${CHARSET_FLAG} ${MP_BUILD_FLAG}${VCPKG_C_FLAGS}" CACHE STRING "") + + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64ec") + string(APPEND CMAKE_CXX_FLAGS " /arm64EC /D_AMD64_ /DAMD64 /D_ARM64EC_ /DARM64EC") + string(APPEND CMAKE_C_FLAGS " /arm64EC /D_AMD64_ /DAMD64 /D_ARM64EC_ /DARM64EC") + endif() + set(CMAKE_RC_FLAGS "/c65001 /DWIN32" CACHE STRING "") + + set(CMAKE_CXX_FLAGS_DEBUG "${VCPKG_CRT_LINK_FLAG_PREFIX}d /Z7 /O2 /Oi ${VCPKG_CXX_FLAGS_DEBUG}" CACHE STRING "") + set(CMAKE_C_FLAGS_DEBUG "${VCPKG_CRT_LINK_FLAG_PREFIX}d /Z7 /O2 /Oi ${VCPKG_C_FLAGS_DEBUG}" CACHE STRING "") + set(CMAKE_CXX_FLAGS_RELEASE "${VCPKG_CRT_LINK_FLAG_PREFIX} /O2 /Oi /Gy /DNDEBUG /Z7 ${VCPKG_CXX_FLAGS_RELEASE}" CACHE STRING "") + set(CMAKE_C_FLAGS_RELEASE "${VCPKG_CRT_LINK_FLAG_PREFIX} /O2 /Oi /Gy /DNDEBUG /Z7 ${VCPKG_C_FLAGS_RELEASE}" CACHE STRING "") + + string(APPEND CMAKE_STATIC_LINKER_FLAGS_RELEASE_INIT " /nologo ") + set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "/nologo /DEBUG /INCREMENTAL:NO /OPT:REF /OPT:ICF ${VCPKG_LINKER_FLAGS} ${VCPKG_LINKER_FLAGS_RELEASE}" CACHE STRING "") + set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "/nologo /DEBUG /INCREMENTAL:NO /OPT:REF /OPT:ICF ${VCPKG_LINKER_FLAGS} ${VCPKG_LINKER_FLAGS_RELEASE}" CACHE STRING "") + set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/nologo /DEBUG /INCREMENTAL:NO /OPT:REF /OPT:ICF ${VCPKG_LINKER_FLAGS} ${VCPKG_LINKER_FLAGS_RELEASE}" CACHE STRING "") + + string(APPEND CMAKE_STATIC_LINKER_FLAGS_DEBUG_INIT " /nologo ") + string(APPEND CMAKE_MODULE_LINKER_FLAGS_DEBUG_INIT " /nologo ${VCPKG_LINKER_FLAGS} ${VCPKG_LINKER_FLAGS_DEBUG} ") + string(APPEND CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT " /nologo ${VCPKG_LINKER_FLAGS} ${VCPKG_LINKER_FLAGS_DEBUG} ") + string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT " /nologo ${VCPKG_LINKER_FLAGS} ${VCPKG_LINKER_FLAGS_DEBUG} ") + + set(CMAKE_MSVC_RUNTIME_CHECKS "") + + unset(CHARSET_FLAG) + unset(MP_BUILD_FLAG) + unset(VCPKG_CRT_LINK_FLAG_PREFIX) +endif() diff --git a/windows/icu-easyrpg/cleanup_msvc.patch b/windows/icu-easyrpg/cleanup_msvc.patch deleted file mode 100644 index 6e8a43328..000000000 --- a/windows/icu-easyrpg/cleanup_msvc.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/source/config/mh-msys-msvc b/source/config/mh-msys-msvc -index 6f50798ebf..2f1a2d6e69 100644 ---- a/source/config/mh-msys-msvc -+++ b/source/config/mh-msys-msvc -@@ -90,10 +90,10 @@ LIBSICU = $(STATIC_PREFIX)$(ICUPREFIX) - A = lib - - # Cygwin's ar can't handle Win64 right now. So we use Microsoft's tool instead. --AR = LIB.EXE#M# --ARFLAGS := -nologo $(ARFLAGS:r=)#M# -+AR := $(AR)#M# -+ARFLAGS := $(ARFLAGS)#M# - RANLIB = ls -s#M# - AR_OUTOPT = -OUT:#M# - - ## An import library is needed for z-OS, MSVC and Cygwin - IMPORT_LIB_EXT = .lib diff --git a/windows/icu-easyrpg/disable-escapestr-tool.patch b/windows/icu-easyrpg/disable-escapestr-tool.patch deleted file mode 100644 index 5c42e56e7..000000000 --- a/windows/icu-easyrpg/disable-escapestr-tool.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/source/tools/Makefile.in b/source/tools/Makefile.in -index e0896f1..5ead980 100644 ---- a/source/tools/Makefile.in -+++ b/source/tools/Makefile.in -@@ -19,9 +19,9 @@ SUBDIRS = toolutil ctestfw makeconv genrb genbrk \ - gencnval gensprep icuinfo genccode gencmn icupkg pkgdata \ - gentest gennorm2 gencfu gendict icuexportdata - --ifneq (@platform_make_fragment_name@,mh-cygwin-msvc) --SUBDIRS += escapesrc --endif -+#ifneq (@platform_make_fragment_name@,mh-cygwin-msvc) -+#SUBDIRS += escapesrc -+#endif - - ## List of phony targets - .PHONY : all all-local all-recursive install install-local \ diff --git a/windows/icu-easyrpg/fix-extra.patch b/windows/icu-easyrpg/fix-extra.patch deleted file mode 100644 index 935dfd775..000000000 --- a/windows/icu-easyrpg/fix-extra.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --urN a/source/extra/Makefile.in b/source/extra/Makefile.in ---- a/source/extra/Makefile.in -+++ b/source/extra/Makefile.in -@@ -23,7 +23,7 @@ - ## Files to remove for 'make clean' - CLEANFILES = *~ - --SUBDIRS = scrptrun uconv -+SUBDIRS = uconv - - ## List of phony targets - .PHONY : all all-local all-recursive install install-local \ - diff --git a/windows/icu-easyrpg/fix-win-build.patch b/windows/icu-easyrpg/fix-win-build.patch deleted file mode 100644 index 0c2e46cfb..000000000 --- a/windows/icu-easyrpg/fix-win-build.patch +++ /dev/null @@ -1,35 +0,0 @@ -diff --git a/source/configure.ac b/source/configure.ac -index 425fdc7..97210f8 100644 ---- a/source/configure.ac -+++ b/source/configure.ac -@@ -114,6 +114,15 @@ AC_ARG_ENABLE([icu-config], - esac], [enable_icu_config=true]) - AC_SUBST(INSTALL_ICU_CONFIG, [$enable_icu_config]) - -+AC_ARG_ENABLE([icu-build-win], -+ AS_HELP_STRING([--enable-icu-build-win], [install icu-build-win]), -+ [case "${enableval}" in -+ yes) enable_icu_build_win=true ;; -+ no) enable_icu_build_win=false ;; -+ *) AC_MSG_ERROR([bad value '${enableval}' for --enable-icu-build-win]) ;; -+ esac], [enable_icu_build_win=true]) -+AC_SUBST(INSTALL_ICU_BUILD_WIN, [$enable_icu_build_win]) -+ - # Check whether to build debug libraries - AC_MSG_CHECKING([whether to build debug libraries]) - enabled=no -@@ -263,12 +272,14 @@ ICU_CHECK_MH_FRAG - # Checks for libraries and other host specific stuff - # On HP/UX, don't link to -lm from a shared lib because it isn't - # PIC (at least on 10.2) -+if test "$enable_icu_build_win" = no; then - case "${host}" in - *-*-hpux*) AC_CHECK_LIB(m, floor, LIB_M="-lm") ;; - - *) AC_CHECK_LIB(m, floor) - LIB_M="" ;; - esac -+fi - AC_SUBST(LIB_M) - - # Check whether to build shared libraries diff --git a/windows/icu-easyrpg/fix_bsd_and_solaris.patch b/windows/icu-easyrpg/fix_bsd_and_solaris.patch new file mode 100644 index 000000000..5490a641b --- /dev/null +++ b/windows/icu-easyrpg/fix_bsd_and_solaris.patch @@ -0,0 +1,19 @@ +diff --git a/source/configure b/source/configure +index d1b5812..7b93221 100755 +--- a/source/configure ++++ b/source/configure +@@ -7008,12 +7008,12 @@ printf %s "checking for genccode assembly... " >&6; } + # Check to see if genccode can generate simple assembly. + GENCCODE_ASSEMBLY= + case "${host}" in +-*-linux*|*-kfreebsd*-gnu*|i*86-*-*bsd*|i*86-pc-gnu) ++*-linux*|*-kfreebsd*-gnu*|*86*-*bsd*|*86*-pc-gnu) + if test "$GCC" = yes; then + # We're using gcc, and the simple -a gcc command line works for genccode + GENCCODE_ASSEMBLY="-a gcc" + fi ;; +-i*86-*-solaris*) ++*86*-solaris*) + if test "$GCC" = yes; then + # When using gcc, look if we're also using GNU as. + # When using GNU as, the simple -a gcc command line works for genccode. diff --git a/windows/icu-easyrpg/darwin-rpath.patch b/windows/icu-easyrpg/mh-darwin.patch similarity index 100% rename from windows/icu-easyrpg/darwin-rpath.patch rename to windows/icu-easyrpg/mh-darwin.patch diff --git a/windows/icu-easyrpg/mingw-dll-install.patch b/windows/icu-easyrpg/mh-mingw.patch similarity index 100% rename from windows/icu-easyrpg/mingw-dll-install.patch rename to windows/icu-easyrpg/mh-mingw.patch diff --git a/windows/icu-easyrpg/mh-msys-msvc.patch b/windows/icu-easyrpg/mh-msys-msvc.patch new file mode 100644 index 000000000..4b49bb0a9 --- /dev/null +++ b/windows/icu-easyrpg/mh-msys-msvc.patch @@ -0,0 +1,22 @@ +diff --git a/source/config/mh-msys-msvc b/source/config/mh-msys-msvc +index 6f50798..2a669b3 100644 +--- a/source/config/mh-msys-msvc ++++ b/source/config/mh-msys-msvc +@@ -54,7 +54,7 @@ endif + # -D_CRT_SECURE_NO_DEPRECATE is needed to quiet warnings about using standard C functions. + # -utf-8 set source file encoding to utf-8. + CFLAGS+=-GF -nologo -utf-8 +-CXXFLAGS+=-GF -nologo -EHsc -Zc:wchar_t -utf-8 ++CXXFLAGS+=-GF -nologo -EHsc -Zc:wchar_t -utf-8 -std:c++17 + CPPFLAGS+=-D_CRT_SECURE_NO_DEPRECATE + DEFS+=-DWIN32 -DCYGWINMSVC + LDFLAGS+=-nologo +@@ -90,8 +90,6 @@ LIBSICU = $(STATIC_PREFIX)$(ICUPREFIX) + A = lib + + # Cygwin's ar can't handle Win64 right now. So we use Microsoft's tool instead. +-AR = LIB.EXE#M# +-ARFLAGS := -nologo $(ARFLAGS:r=)#M# + RANLIB = ls -s#M# + AR_OUTOPT = -OUT:#M# + diff --git a/windows/icu-easyrpg/mingw-strict-ansi.diff b/windows/icu-easyrpg/mingw-strict-ansi.diff deleted file mode 100644 index ea6de18bd..000000000 --- a/windows/icu-easyrpg/mingw-strict-ansi.diff +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/source/common/putil.cpp b/source/common/putil.cpp -index ab25f3b..94782f8 100644 ---- a/source/common/putil.cpp -+++ b/source/common/putil.cpp -@@ -48,7 +48,6 @@ - - #if U_PLATFORM == U_PF_MINGW && defined __STRICT_ANSI__ - /* tzset isn't defined in strict ANSI on MinGW. */ --#undef __STRICT_ANSI__ - #endif - - /* diff --git a/windows/icu-easyrpg/portfile.cmake b/windows/icu-easyrpg/portfile.cmake index 27395e249..4a59243b0 100644 --- a/windows/icu-easyrpg/portfile.cmake +++ b/windows/icu-easyrpg/portfile.cmake @@ -1,36 +1,30 @@ -string(REGEX MATCH "^[0-9]*" ICU_VERSION_MAJOR "${VERSION}") -string(REPLACE "." "_" VERSION2 "${VERSION}") -string(REPLACE "." "-" VERSION3 "${VERSION}") - vcpkg_download_distfile( ARCHIVE - URLS "https://github.com/unicode-org/icu/releases/download/release-${VERSION3}/icu4c-${VERSION2}-src.tgz" - FILENAME "icu4c-${VERSION2}-src.tgz" - SHA512 e6c7876c0f3d756f3a6969cad9a8909e535eeaac352f3a721338b9cbd56864bf7414469d29ec843462997815d2ca9d0dab06d38c37cdd4d8feb28ad04d8781b0 + URLS "https://github.com/unicode-org/icu/releases/download/release-${VERSION}/icu4c-${VERSION}-sources.tgz" + FILENAME "icu4c-${VERSION}-sources.tgz" + SHA512 92feddfe81c57336f386c7cbc9f6d976bf349db148a77a247c4559676f51116115c8c52c4d907feb50933f72ab75fd8e48be092bf9c8ca33a3e8fabc9372a5d6 ) vcpkg_extract_source_archive(SOURCE_PATH ARCHIVE "${ARCHIVE}" PATCHES - disable-escapestr-tool.patch - remove-MD-from-configure.patch - fix_parallel_build_on_windows.patch - fix-extra.patch - mingw-dll-install.patch disable-static-prefix.patch # https://gitlab.kitware.com/cmake/cmake/-/issues/16617; also mingw. - fix-win-build.patch + fix_bsd_and_solaris.patch + fix_parallel_build_on_windows.patch + mh-darwin.patch + mh-mingw.patch + mh-msys-msvc.patch + subdirs.patch vcpkg-cross-data.patch - darwin-rpath.patch - mingw-strict-ansi.diff # backport of https://github.com/unicode-org/icu/pull/3003 - cleanup_msvc.patch ) # EASYRPG CUSTOM +string(REGEX MATCH "^[0-9]+" ICU_VERSION_MAJOR "${VERSION}") vcpkg_download_distfile( ARCHIVE URLS "https://easyrpg.org/downloads/icudata/icudata${ICU_VERSION_MAJOR}.tar.gz" FILENAME "icudata.tar.gz" - SHA512 3e08025e81111113397ec60b8622b0cd3413393b81030d7dc687c92fc2531be16249569257a65435526284b986372f569d52ff97bca7f37aa73ca343ed10f3e4 + SHA512 43817ee31c0f13d539e572261e996a4dbe9ef0e23f9724970b4a0c4d8d056ebb9257fb1601566d9b2afa6ad0239565bc50ef6b45fc41589bc52417746be53974 ) vcpkg_extract_source_archive( ARCHIVE_SOURCE @@ -48,7 +42,7 @@ vcpkg_list(SET CONFIGURE_OPTIONS) vcpkg_list(SET BUILD_OPTIONS) if(VCPKG_TARGET_IS_EMSCRIPTEN) - vcpkg_list(APPEND CONFIGURE_OPTIONS --disable-extras) + vcpkg_list(APPEND CONFIGURE_OPTIONS --disable-extras icu_cv_host_frag=mh-linux) vcpkg_list(APPEND BUILD_OPTIONS "\"PKGDATA_OPTS=--without-assembly -O ../data/icupkg.inc\"") elseif(VCPKG_TARGET_IS_UWP) vcpkg_list(APPEND CONFIGURE_OPTIONS --disable-extras ac_cv_func_tzset=no ac_cv_func__tzset=no) @@ -62,8 +56,8 @@ elseif(VCPKG_TARGET_IS_OSX AND VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") endif() endif() -if(VCPKG_TARGET_IS_WINDOWS) - list(APPEND CONFIGURE_OPTIONS --enable-icu-build-win) +if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) + list(APPEND CONFIGURE_OPTIONS ac_cv_lib_m_floor=no) endif() # EASYRPG CUSTOM @@ -87,7 +81,7 @@ endif() vcpkg_make_configure( SOURCE_PATH "${SOURCE_PATH}/source" - AUTORECONF + # AUTORECONF # needs Autoconf version 2.72 OPTIONS ${CONFIGURE_OPTIONS} --disable-samples @@ -140,28 +134,47 @@ file(REMOVE_RECURSE file(GLOB CROSS_COMPILE_DEFS "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/config/icucross.*") file(INSTALL ${CROSS_COMPILE_DEFS} DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}/config") -file(GLOB RELEASE_DLLS "${CURRENT_PACKAGES_DIR}/lib/*icu*${ICU_VERSION_MAJOR}.dll") -file(COPY ${RELEASE_DLLS} DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin") +if(VCPKG_TARGET_IS_WINDOWS) + string(REGEX MATCH "^[0-9]*" ICU_VERSION_MAJOR "${VERSION}") + file(GLOB RELEASE_DLLS "${CURRENT_PACKAGES_DIR}/lib/*icu*${ICU_VERSION_MAJOR}.dll") + file(COPY ${RELEASE_DLLS} DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin") + + # copy dlls + file(GLOB RELEASE_DLLS "${CURRENT_PACKAGES_DIR}/lib/*icu*${ICU_VERSION_MAJOR}.dll") + file(COPY ${RELEASE_DLLS} DESTINATION "${CURRENT_PACKAGES_DIR}/bin") + if(NOT VCPKG_BUILD_TYPE) + file(GLOB DEBUG_DLLS "${CURRENT_PACKAGES_DIR}/debug/lib/*icu*${ICU_VERSION_MAJOR}.dll") + file(COPY ${DEBUG_DLLS} DESTINATION "${CURRENT_PACKAGES_DIR}/debug/bin") + endif() -# copy dlls -file(GLOB RELEASE_DLLS "${CURRENT_PACKAGES_DIR}/lib/*icu*${ICU_VERSION_MAJOR}.dll") -file(COPY ${RELEASE_DLLS} DESTINATION "${CURRENT_PACKAGES_DIR}/bin") -if(NOT VCPKG_BUILD_TYPE) - file(GLOB DEBUG_DLLS "${CURRENT_PACKAGES_DIR}/debug/lib/*icu*${ICU_VERSION_MAJOR}.dll") - file(COPY ${DEBUG_DLLS} DESTINATION "${CURRENT_PACKAGES_DIR}/debug/bin") -endif() + # remove any remaining dlls in /lib + file(GLOB DUMMY_DLLS "${CURRENT_PACKAGES_DIR}/lib/*.dll" "${CURRENT_PACKAGES_DIR}/debug/lib/*.dll") + if(DUMMY_DLLS) + file(REMOVE ${DUMMY_DLLS}) + endif() -# remove any remaining dlls in /lib -file(GLOB DUMMY_DLLS "${CURRENT_PACKAGES_DIR}/lib/*.dll" "${CURRENT_PACKAGES_DIR}/debug/lib/*.dll") -if(DUMMY_DLLS) - file(REMOVE ${DUMMY_DLLS}) + vcpkg_copy_pdbs() endif() -vcpkg_copy_pdbs() vcpkg_fixup_pkgconfig() +set(cxx_link_libraries "") +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + block(PROPAGATE cxx_link_libraries) + vcpkg_cmake_get_vars(cmake_vars_file) + include("${cmake_vars_file}") + list(REMOVE_ITEM VCPKG_DETECTED_CMAKE_CXX_IMPLICIT_LINK_LIBRARIES ${VCPKG_DETECTED_CMAKE_C_IMPLICIT_LINK_LIBRARIES}) + list(TRANSFORM VCPKG_DETECTED_CMAKE_CXX_IMPLICIT_LINK_LIBRARIES REPLACE "^([^/]+)\$" "-l\\1") + string(JOIN " " cxx_link_libraries ${VCPKG_DETECTED_CMAKE_CXX_IMPLICIT_LINK_LIBRARIES}) + endblock() + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/icu-uc.pc" "baselibs = " "baselibs = ${cxx_link_libraries} ") + if(NOT VCPKG_BUILD_TYPE) + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/icu-uc.pc" "baselibs = " "baselibs = ${cxx_link_libraries} ") + endif() +endif() +# EASYRPG EDIT: Replace /icu/ with /${PORT}/ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin/icu-config" "${CURRENT_INSTALLED_DIR}" "`dirname $0`/../../../" IGNORE_UNCHANGED) vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin/icu-config" "${CURRENT_HOST_INSTALLED_DIR}" "`dirname $0`/../../../../${_HOST_TRIPLET}/" IGNORE_UNCHANGED) -file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") +configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-cmake-wrapper.cmake" @ONLY) vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") diff --git a/windows/icu-easyrpg/subdirs.patch b/windows/icu-easyrpg/subdirs.patch new file mode 100644 index 000000000..9832fadfe --- /dev/null +++ b/windows/icu-easyrpg/subdirs.patch @@ -0,0 +1,25 @@ +diff --git a/source/extra/Makefile.in b/source/extra/Makefile.in +index 2e48dba..3bbae74 100644 +--- a/source/extra/Makefile.in ++++ b/source/extra/Makefile.in +@@ -23,7 +23,7 @@ subdir = extra + ## Files to remove for 'make clean' + CLEANFILES = *~ + +-SUBDIRS = scrptrun uconv ++SUBDIRS = uconv + + ## List of phony targets + .PHONY : all all-local all-recursive install install-local \ +diff --git a/source/tools/Makefile.in b/source/tools/Makefile.in +index e0896f1..d009382 100644 +--- a/source/tools/Makefile.in ++++ b/source/tools/Makefile.in +@@ -20,7 +20,6 @@ gencnval gensprep icuinfo genccode gencmn icupkg pkgdata \ + gentest gennorm2 gencfu gendict icuexportdata + + ifneq (@platform_make_fragment_name@,mh-cygwin-msvc) +-SUBDIRS += escapesrc + endif + + ## List of phony targets diff --git a/windows/icu-easyrpg/vcpkg-cmake-wrapper.cmake b/windows/icu-easyrpg/vcpkg-cmake-wrapper.cmake index 512966f53..2132129e6 100644 --- a/windows/icu-easyrpg/vcpkg-cmake-wrapper.cmake +++ b/windows/icu-easyrpg/vcpkg-cmake-wrapper.cmake @@ -1,8 +1,134 @@ -cmake_policy(PUSH) -cmake_policy(SET CMP0057 NEW) -if(NOT "COMPONENTS" IN_LIST ARGS) - _find_package(${ARGS} COMPONENTS data) -else() - _find_package(${ARGS}) -endif() -cmake_policy(POP) +set(z_vcpkg_icu_fixup "") +set(z_vcpkg_icu_config_mode_args "${ARGS}") +list(FILTER z_vcpkg_icu_config_mode_args INCLUDE REGEX "^(CONFIGS?|HINTS|NAMES|NO_MODULE|PATH_SUFFIXES|PATHS)\$") +if(z_vcpkg_icu_config_mode_args STREQUAL "") + cmake_policy(PUSH) + cmake_policy(SET CMP0057 NEW) + if("@VCPKG_LIBRARY_LINKAGE@" STREQUAL "static") + # Fix problem: Static link libraries, ordered for traditional linker + if("io" IN_LIST ARGS AND NOT TARGET ICU::io) + if("in" IN_LIST ARGS) + list(APPEND z_vcpkg_icu_fixup "io->in") + list(REMOVE_ITEM ARGS in) + list(APPEND ARGS COMPONENTS in) + else() + list(APPEND z_vcpkg_icu_fixup "io->i18n") + list(REMOVE_ITEM ARGS i18n) + list(APPEND ARGS COMPONENTS i18n) + endif() + endif() + if("i18n" IN_LIST ARGS AND NOT TARGET ICU::i18n) + list(APPEND z_vcpkg_icu_fixup "i18n->uc") + list(REMOVE_ITEM ARGS uc) + list(APPEND ARGS COMPONENTS uc) + endif() + if("in" IN_LIST ARGS AND NOT TARGET ICU::in) + list(APPEND z_vcpkg_icu_fixup "in->uc") + list(REMOVE_ITEM ARGS uc) + list(APPEND ARGS COMPONENTS uc) + endif() + if("uc" IN_LIST ARGS AND NOT TARGET ICU::uc) + if("dt" IN_LIST ARGS) + list(APPEND z_vcpkg_icu_fixup "uc->dt") + list(REMOVE_ITEM ARGS dt) + list(APPEND ARGS COMPONENTS dt) + else() + list(APPEND z_vcpkg_icu_fixup "uc->data") + list(REMOVE_ITEM ARGS data) + list(APPEND ARGS COMPONENTS data) + endif() + # Fix problem: C++ linkage + add_library(ICU::uc STATIC IMPORTED) + list(APPEND z_vcpkg_icu_fixup "uc->c++") + endif() + endif() + # Fix problem: Find debug variant without 'd' suffix + # Fix problem: Apply NAMES_PER_DIR + if("data" IN_LIST ARGS) + find_library(ICU_DATA_LIBRARY_RELEASE NAMES icudata icudt NAMES_PER_DIR PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib" NO_DEFAULT_PATH REQUIRED) + find_library(ICU_DATA_LIBRARY_DEBUG NAMES icudatad icudtd icudata icudt NAMES_PER_DIR PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib" NO_DEFAULT_PATH) + endif() + if("dt" IN_LIST ARGS) + find_library(ICU_DT_LIBRARY_RELEASE NAMES icudata icudt NAMES_PER_DIR PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib" NO_DEFAULT_PATH REQUIRED) + find_library(ICU_DT_LIBRARY_DEBUG NAMES icudatad icudtd icudata icudt NAMES_PER_DIR PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib" NO_DEFAULT_PATH) + endif() + if("i18n" IN_LIST ARGS) + find_library(ICU_I18N_LIBRARY_RELEASE NAMES icui18n icuin NAMES_PER_DIR PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib" NO_DEFAULT_PATH REQUIRED) + find_library(ICU_I18N_LIBRARY_DEBUG NAMES icui18nd icuind icui18n icuin NAMES_PER_DIR PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib" NO_DEFAULT_PATH) + endif() + if("in" IN_LIST ARGS) + find_library(ICU_IN_LIBRARY_RELEASE NAMES icui18n icuin NAMES_PER_DIR PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib" NO_DEFAULT_PATH REQUIRED) + find_library(ICU_IN_LIBRARY_DEBUG NAMES icui18nd icuind icui18n icuin NAMES_PER_DIR PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib" NO_DEFAULT_PATH) + endif() + if("io" IN_LIST ARGS) + find_library(ICU_IO_LIBRARY_RELEASE NAMES icuio NAMES_PER_DIR PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib" NO_DEFAULT_PATH REQUIRED) + find_library(ICU_IO_LIBRARY_DEBUG NAMES icuiod icuio NAMES_PER_DIR PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib" NO_DEFAULT_PATH) + endif() + if("tu" IN_LIST ARGS) + # optional, subject to icu[tools]. + find_library(ICU_TU_LIBRARY_RELEASE NAMES icutu NAMES_PER_DIR PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib" NO_DEFAULT_PATH) + find_library(ICU_TU_LIBRARY_DEBUG NAMES icutud icutu NAMES_PER_DIR PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib" NO_DEFAULT_PATH) + endif() + if("uc" IN_LIST ARGS) + find_library(ICU_UC_LIBRARY_RELEASE NAMES icuuc NAMES_PER_DIR PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib" NO_DEFAULT_PATH REQUIRED) + find_library(ICU_UC_LIBRARY_DEBUG NAMES icuucd icuuc NAMES_PER_DIR PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib" NO_DEFAULT_PATH) + endif() + cmake_policy(POP) +endif() + +_find_package(${ARGS}) + +if(ICU_FOUND AND NOT z_vcpkg_icu_fixup STREQUAL "") + cmake_policy(PUSH) + cmake_policy(SET CMP0057 NEW) + if("uc->c++" IN_LIST z_vcpkg_icu_fixup) + list(REMOVE_ITEM z_vcpkg_icu_fixup "uc->c++") + if(ICU_INCLUDE_DIR) + set_target_properties(ICU::uc PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${ICU_INCLUDE_DIR}") + endif() + if(EXISTS "${ICU_UC_LIBRARY}") + set_target_properties(ICU::uc PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_LOCATION "${ICU_UC_LIBRARY}") + endif() + if(EXISTS "${ICU_UC_LIBRARY_RELEASE}") + set_property(TARGET ICU::uc APPEND PROPERTY + IMPORTED_CONFIGURATIONS RELEASE) + set_target_properties(ICU::uc PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" + IMPORTED_LOCATION_RELEASE "${ICU_UC_LIBRARY_RELEASE}") + endif() + if(EXISTS "${ICU_UC_LIBRARY_DEBUG}") + set_property(TARGET ICU::uc APPEND PROPERTY + IMPORTED_CONFIGURATIONS DEBUG) + set_target_properties(ICU::uc PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX" + IMPORTED_LOCATION_DEBUG "${ICU_UC_LIBRARY_DEBUG}") + endif() + endif() + if("i18n->uc" IN_LIST z_vcpkg_icu_fixup) + list(REMOVE_ITEM z_vcpkg_icu_fixup "i18n->uc") + set_target_properties(ICU::i18n PROPERTIES INTERFACE_LINK_LIBRARIES ICU::uc) + endif() + if("in->uc" IN_LIST z_vcpkg_icu_fixup) + list(REMOVE_ITEM z_vcpkg_icu_fixup "in->uc") + set_target_properties(ICU::in PROPERTIES INTERFACE_LINK_LIBRARIES ICU::uc) + endif() + if("uc->data" IN_LIST z_vcpkg_icu_fixup) + list(REMOVE_ITEM z_vcpkg_icu_fixup "uc->data") + set_target_properties(ICU::uc PROPERTIES INTERFACE_LINK_LIBRARIES ICU::data) + endif() + if("uc->dt" IN_LIST z_vcpkg_icu_fixup) + list(REMOVE_ITEM z_vcpkg_icu_fixup "uc->dt") + set_target_properties(ICU::uc PROPERTIES INTERFACE_LINK_LIBRARIES ICU::dt) + endif() + if(NOT z_vcpkg_icu_fixup STREQUAL "") + message(WARNING "Missing fixup handler for ${z_vcpkg_icu_fixup}.") + endif() + cmake_policy(POP) +endif() + +if(TARGET ICU::uc) + target_compile_features(ICU::uc INTERFACE cxx_std_17) +endif() diff --git a/windows/icu-easyrpg/vcpkg-cross-data.patch b/windows/icu-easyrpg/vcpkg-cross-data.patch index 7ca87fb93..36f2dd3a9 100644 --- a/windows/icu-easyrpg/vcpkg-cross-data.patch +++ b/windows/icu-easyrpg/vcpkg-cross-data.patch @@ -1,13 +1,13 @@ -diff --git a/source/configure.ac b/source/configure.ac -index 1bd5871..c508f48 100644 ---- a/source/configure.ac -+++ b/source/configure.ac -@@ -1151,7 +1151,7 @@ AC_ARG_ENABLE(fuzzer, - fuzzer=false) - ICU_CONDITIONAL(FUZZER, test "$fuzzer" = true) +diff --git a/source/configure b/source/configure +index d1b5812..1dfbf59 100755 +--- a/source/configure ++++ b/source/configure +@@ -8063,7 +8063,7 @@ fi --ICU_CONDITIONAL(DATA, test "$tools" = true || test "$cross_compiling" = "yes") -+ICU_CONDITIONAL(DATA, test "$tools" = true || test "$cross_compiling" = "yes" || test -n "$cross_buildroot") - AC_ARG_WITH(data-packaging, - [ --with-data-packaging specify how to package ICU data. Possible values: + +-if test "$tools" = true || test "$cross_compiling" = "yes"; then ++if true; then + DATA_TRUE= + U_HAVE_DATA=1 + else diff --git a/windows/icu-easyrpg/vcpkg.json b/windows/icu-easyrpg/vcpkg.json index 7573c117e..1a454788f 100644 --- a/windows/icu-easyrpg/vcpkg.json +++ b/windows/icu-easyrpg/vcpkg.json @@ -1,7 +1,6 @@ { "name": "icu-easyrpg", - "version": "74.2", - "port-version": 5, + "version": "78.2", "description": "Mature and widely used Unicode and localization library.", "homepage": "https://icu.unicode.org/home", "license": "ICU", @@ -13,6 +12,10 @@ "tools" ] }, + { + "name": "vcpkg-cmake-get-vars", + "host": true + }, { "name": "vcpkg-make", "host": true