From: <sv...@op...> - 2024-07-23 08:14:22
|
Author: manx Date: Tue Jul 23 10:14:15 2024 New Revision: 21260 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21260 Log: [Imp] build: Wine Integration: Enable C++23 and C23 if available. Fixes <https://bugs.openmpt.org/view.php?id=1803> partially. Modified: trunk/OpenMPT/build/wine/native_support.mk trunk/OpenMPT/build/wine/wine_wrapper.mk Modified: trunk/OpenMPT/build/wine/native_support.mk ============================================================================== --- trunk/OpenMPT/build/wine/native_support.mk Tue Jul 23 09:20:30 2024 (r21259) +++ trunk/OpenMPT/build/wine/native_support.mk Tue Jul 23 10:14:15 2024 (r21260) @@ -79,10 +79,37 @@ MPT_TRY_PULSEAUDIO?=1 MPT_TRY_RTAUDIO?=1 -CPPFLAGS += $(MPT_ARCH_TARGET) -Icommon -Isrc -Iinclude/nlohmann-json/include -Iinclude -CXXFLAGS += $(MPT_ARCH_TARGET) -std=gnu++17 -fpermissive -fPIC -fvisibility=hidden -CFLAGS += $(MPT_ARCH_TARGET) -std=c99 -fPIC -fvisibility=hidden -LDFLAGS += $(MPT_ARCH_TARGET) +CPPFLAGS += $(MPT_ARCH_TARGET) +CXXFLAGS += $(MPT_ARCH_TARGET) +CFLAGS += $(MPT_ARCH_TARGET) +LDFLAGS += $(MPT_ARCH_TARGET) +LDLIBS += +ARFLAGS += + +ifeq ($(shell printf '\n' > build/wine/empty.cpp ; if $(CXX) -std=gnu++23 -c build/wine/empty.cpp -o build/wine/empty.out > /dev/null 2>&1 ; then echo 'gnu++23' ; fi ), gnu++23) +CXXFLAGS += -std=gnu++23 +else ifeq ($(shell printf '\n' > build/wine/empty.cpp ; if $(CXX) -std=gnu++20 -c build/wine/empty.cpp -o build/wine/empty.out > /dev/null 2>&1 ; then echo 'gnu++20' ; fi ), gnu++20) +CXXFLAGS += -std=gnu++20 +else +CXXFLAGS += -std=gnu++17 +endif + +ifeq ($(shell printf '\n' > build/wine/empty.c ; if $(CC) -std=c23 -c build/wine/empty.c -o build/wine/empty.out > /dev/null 2>&1 ; then echo 'c23' ; fi ), c23) +CFLAGS += -std=c23 +else ifeq ($(shell printf '\n' > build/wine/empty.c ; if $(CC) -std=c18 -c build/wine/empty.c -o build/wine/empty.out > /dev/null 2>&1 ; then echo 'c18' ; fi ), c18) +CFLAGS += -std=c18 +else ifeq ($(shell printf '\n' > build/wine/empty.c ; if $(CC) -std=c17 -c build/wine/empty.c -o build/wine/empty.out > /dev/null 2>&1 ; then echo 'c17' ; fi ), c17) +CFLAGS += -std=c17 +else ifeq ($(shell printf '\n' > build/wine/empty.c ; if $(CC) -std=c11 -c build/wine/empty.c -o build/wine/empty.out > /dev/null 2>&1 ; then echo 'c11' ; fi ), c11) +CFLAGS += -std=c11 +else +CFLAGS += -std=c99 +endif + +CPPFLAGS += -Icommon -Isrc -Iinclude/nlohmann-json/include -Iinclude +CXXFLAGS += -fpermissive -fPIC -fvisibility=hidden +CFLAGS += -fPIC -fvisibility=hidden +LDFLAGS += LDLIBS += -lm -lpthread ARFLAGS += Modified: trunk/OpenMPT/build/wine/wine_wrapper.mk ============================================================================== --- trunk/OpenMPT/build/wine/wine_wrapper.mk Tue Jul 23 09:20:30 2024 (r21259) +++ trunk/OpenMPT/build/wine/wine_wrapper.mk Tue Jul 23 10:14:15 2024 (r21260) @@ -76,11 +76,38 @@ MPT_ARCH_TARGET:=-m$(MPT_ARCH_BITS) endif -CPPFLAGS += $(MPT_ARCH_TARGET) -DMPT_WINEGCC -Icommon -CXXFLAGS += $(MPT_ARCH_TARGET) -std=gnu++17 -fpermissive -fPIC -fvisibility=hidden -CFLAGS += $(MPT_ARCH_TARGET) -std=gnu99 -fPIC -fvisibility=hidden -LDFLAGS += $(MPT_ARCH_TARGET) -LDLIBS += -lm +CPPFLAGS += $(MPT_ARCH_TARGET) +CXXFLAGS += $(MPT_ARCH_TARGET) +CFLAGS += $(MPT_ARCH_TARGET) +LDFLAGS += $(MPT_ARCH_TARGET) +LDLIBS += +ARFLAGS += + +ifeq ($(shell printf '\n' > build/wine/empty.cpp ; if $(WINEGXX) -std=gnu++23 -c build/wine/empty.cpp -o build/wine/empty.out > /dev/null 2>&1 ; then echo 'gnu++23' ; fi ), gnu++23) +CXXFLAGS += -std=gnu++23 +else ifeq ($(shell printf '\n' > build/wine/empty.cpp ; if $(WINEGXX) -std=gnu++20 -c build/wine/empty.cpp -o build/wine/empty.out > /dev/null 2>&1 ; then echo 'gnu++20' ; fi ), gnu++20) +CXXFLAGS += -std=gnu++20 +else +CXXFLAGS += -std=gnu++17 +endif + +ifeq ($(shell printf '\n' > build/wine/empty.c ; if $(WINEGXX) -std=gnu23 -c build/wine/empty.c -o build/wine/empty.out > /dev/null 2>&1 ; then echo 'gnu' ; fi ), gnu23) +CFLAGS += -std=gnu23 +else ifeq ($(shell printf '\n' > build/wine/empty.c ; if $(WINEGXX) -std=gnu18 -c build/wine/empty.c -o build/wine/empty.out > /dev/null 2>&1 ; then echo 'gnu18' ; fi ), gnu18) +CFLAGS += -std=gnu18 +else ifeq ($(shell printf '\n' > build/wine/empty.c ; if $(WINEGXX) -std=gnu17 -c build/wine/empty.c -o build/wine/empty.out > /dev/null 2>&1 ; then echo 'gnu17' ; fi ), gnu17) +CFLAGS += -std=gnu17 +else ifeq ($(shell printf '\n' > build/wine/empty.c ; if $(WINEGXX) -std=gnu11 -c build/wine/empty.c -o build/wine/empty.out > /dev/null 2>&1 ; then echo 'gnu11' ; fi ), gnu11) +CFLAGS += -std=gnu11 +else +CFLAGS += -std=gnu99 +endif + +CPPFLAGS += -DMPT_WINEGCC -Icommon +CXXFLAGS += -fpermissive -fPIC -fvisibility=hidden +CFLAGS += -fPIC -fvisibility=hidden +LDFLAGS += +LDLIBS += -lm ARFLAGS += CXXFLAGS += -Os |