Commit graph

112 commits

Author SHA1 Message Date
Maarten Bent
d8d393e4b8
CMake: Link thread library only when necessary
Use CMAKE_THREAD_LIBS_INIT instead of always linking -pthread.
2024-02-25 14:57:37 +01:00
Maarten Bent
f0061b3c04
CMake: Only keep unicode definitions on Windows 2024-02-04 18:03:06 +01:00
Maarten Bent
966c39802e
CMake: Throw a more descriptive error when submodule files do not exist
Instead of having a long list of files that cannot be found, create an
error message that mentions that the git submodule should be checked out.
2024-01-28 18:26:25 +01:00
Maarten Bent
590e033344
CMake: Keep UNICODE defines
So these defines are exported and used by libraries importing wxWidgets.
And also Visual Studio will show the actual character set that is being used.
2024-01-28 18:24:29 +01:00
Vadim Zeitlin
d69ddb8656 Revert all recent wxUSE_DPI_AWARE_MANIFEST-related changes
This reverts 5d630caabd (Make it enough to predefine only
wxUSE_DPI_AWARE_MANIFEST, 2023-08-23) and all the commits which tried to
fix the breakage caused by it.

While the original change had merit, it seems to be too difficult to fix
all our build systems to avoid embedding manifest when defining this in
the code, like samples/sample.rc does, so revert this change for now.

Maybe it can be reintroduced in the future after switching to some other
build system.
2023-08-25 00:03:47 +02:00
Maarten Bent
026528f861
Fix CMake build issues after enabling manifest from rc file 2023-08-24 16:26:47 +02:00
Vadim Zeitlin
e6ad7bc077 Fix non-breakable spaces accidentally committed in parent commit
Replace them with normal spaces to prevent CMake from giving an
incomprehensible error.
2023-08-24 13:25:29 +02:00
Maarten Bent
570af08ea1 Fix manifest in MSW CMake build after recent changes
Don't embed the manifests explicitly when wxUSE_DPI_AWARE_MANIFEST is
set any more, as this is done by wx/msw/wx.rc after the changes of
5d630caabd (Make it enough to predefine only wxUSE_DPI_AWARE_MANIFEST,
2023-08-23).
2023-08-24 13:09:13 +02:00
Maarten Bent
e1f0a938f6
CMake: Fix using Cotire for precompiled headers
Cotire doesn't work when $<COMPILE_LANGUAGE:CXX> is used.
2023-06-13 21:19:44 +02:00
Vadim Zeitlin
19100f63ca Merge branch 'cmake-large-files' of https://github.com/MaartenBent/wxWidgets
CMake: Enable large file support and other fixes.

See #23336.
2023-03-12 14:01:39 +01:00
Tobias Taschner
41194a7b2a CMake: silence shorten-64-to-32 warnings on macOS
See #23331.

Closes #23329.
2023-03-12 13:47:56 +01:00
Maarten Bent
865f7aced2
CMake: Apply no-RTTI compile options directly to targets
Don't set global compile options or defines.
2023-03-10 00:04:51 +01:00
Maarten Bent
1051dfd141
CMake: Enable large file support
Define HAVE_LARGEFILE_SUPPORT and add '_FILE_OFFSET_BITS=64' compile definition.
Make it a PUBLIC definition so it is part of the interface, and defined when importing a target.

Check if fseeko is available, which is used in the large file code.
Also add the compile definition to wxconfig's cppflags, because configure does this too.

Large file support can be disabled with the wxBUILD_LARGEFILE_SUPPORT option, similar to configure's --disable-largefile.

Fixes #22750
2023-03-09 23:55:19 +01:00
Vadim Zeitlin
ebf790f76e Restrict arch suffix for DLLs to MSVC in CMake builds
Amend the changes of edcfeab29d (Include arch-specific suffix in the DLL
names in CMake builds too, 2022-12-23) to only do it when using MSVC but
not the other compilers as this would make CMake incompatible with what
makefile.gcc does.
2022-12-29 18:38:05 +01:00
Maarten Bent
edcfeab29d Include arch-specific suffix in the DLL names in CMake builds too
Make the x64 DLL names consistent with the DLLs produced by the MSVS
projects and/or nmake makefiles.

See #23053.

Closes #23071.
2022-12-25 03:15:04 +01:00
PB
48434622c6 Always use vendor in CMake-built DLLs regardless of version
The vendor string was ignored for the stable wxWidgets versions (e.g.,
3.2). However, vendor should be always used when available, regardless
of wxWidgets version. The only case when vendor should not be used is
when creating official builds (currently not done with CMake).

Closes #22931.
2022-11-08 18:17:52 +01:00
Vadim Zeitlin
c78b0d652b Remove UNICODE build option, hardcode its value as 1
Also hardcode "u" suffix for the library names -- it doesn't make sense
any longer, but we need to keep it for compatibility.
2022-10-27 19:43:59 +02:00
Vadim Zeitlin
6e8290a9ce Stop defining _UNICODE in makefiles
This shouldn't be necessary any longer, so don't do it.
2022-10-27 19:43:30 +02:00
Vadim Zeitlin
885ab36c11 Remove wxUSE_UNICODE option from CMake too
Keep it in build.cfg just in case it's needed for compatibility, but
always define it as 1.
2022-10-27 19:43:30 +02:00
Vadim Zeitlin
b2050fcb6f Update to Catch v2
Use Catch2 public header instead of using internal Catch v1 headers: we
can do this now because Catch2 supports (albeit in a rather ugly way)
being used with PCH.
2022-10-18 18:39:13 +02:00
Vadim Zeitlin
097abf20b9 Stop disabling deprecation warnings when compiling wxGTK
Don't use blanket warning suppression, as this suppresses even warnings
about using our own deprecated API which is undesirable.
2022-09-25 01:11:55 +02:00
Maarten Bent
9861386fef
CMake: Don't enable CXX warnings for C files
Move the warning definitions inside the if-statements.
Don't use -Wno-ctor-dtor-privacy and -Woverloaded-virtual for C files, to fix
'is valid for C++/ObjC++ but not for C' warning.

See #22696
2022-08-05 18:54:36 +02:00
Maarten Bent
9ffe6f5575 CMake: Use correct INSTALL_INTERFACE include directory on Linux
The headers are installed in 'include/wx-3.1/', so also use this in the INSTALL_INTERFACE.
Determine wxINSTALL_INCLUDE_DIR only once and reuse it in install.cmake.
2022-06-18 16:08:35 +02:00
Maarten Bent
efa5cfcaa9 CMake: Prevent double directory separators 2022-06-18 15:37:52 +02:00
Maarten Bent
603c13aaba CMake: Add support for external NanoSVG library 2022-05-11 01:54:03 +02:00
Maarten Bent
4fa3b8c276 CMake: Fix the minimum supported version
Change the minimum version to 3.0. Version 2.8.12 has never worked,
because it does not support the VERSION parameter in project().

Replace GREATER_EQUAL comparisons, these are only supported since 3.7.

Move PCH related code to a separate file, and include it after
options.cmake and init.cmake. Because only then the wxBUILD_PRECOMP
variable is fully initialized.

Closes #22312.
2022-04-16 15:35:49 +02:00
Maarten Bent
039f0a924a CMake: Create only one target file
Put the target file in lib/cmake/wxWidgets directory.
2022-04-12 22:08:46 +02:00
Maarten Bent
797df0530d CMake: Fix different identifier warning when building with XCode
Add plist file to the Resource group.
2022-04-12 22:08:46 +02:00
Maarten Bent
681e32f521 CMake: Add IS_MONO option to wx_add_library and wx_set_target_properties
Use this instead of checking for the target name.
2022-04-12 22:08:45 +02:00
Maarten Bent
323e6e8320 CMake: Fix using precompiled headers with Objective-C++ files
Compiling .mm files gives error 'Objective C file was disabled in PCH but is currently enabled'.

Enable the OBJCXX language so the Objective-C++ compiler will be detected and used for .mm files instead of the c++ compiler.
Detect if there are .mm files and enable PCH for them too.

Don't set COTIRE_UNITY_SOURCE_EXCLUDE_EXTENSIONS when cotire is not used.
2022-04-12 22:08:45 +02:00
Maarten Bent
d61c9ee4bf CMake: Apply source groups using a function
This will add source groups to all projects, not only libraries.
And there is no need anymore to include it in every project file.
2022-04-11 23:18:58 +02:00
Maarten Bent
7683219f90 CMake: Remove duplicate and unused defines
Remove unused CMake code to get number of mono source files.
wxUSE_BASE=1 is also defined in wx_set_target_properties.
There seems no reason to define _LIB and DLL_EXPORTS, wx does not use it. They
were probably added because the vcxproj files have them.
2022-04-10 23:44:59 +02:00
Maarten Bent
4999c1c84b CMake: Export WXUSINGDLL for shared builds
Always define WXUSINGDLL for plugins.
2022-04-10 23:41:49 +02:00
Maarten Bent
13a82b3d67 CMake: Fix building tests and sample after making target includes private 2022-04-10 23:41:44 +02:00
Maarten Bent
f00e7ced27 CMake: Fix monolithic build
Don't target net and webview libraries directly, but use the wx_ function that will add it to the mono library when applicable.
2022-04-10 21:00:39 +02:00
Maarten Bent
0125a52376 CMake: Improve handling plugin in wx_set_target_properties
Don't link with toolkit or wx libraries, and set the correct defines.
2022-04-10 21:00:39 +02:00
Maarten Bent
f4367b3fee CMake: Use target_precompile_headers when available
Keep using cotire for CMake versions older than 3.16, or when user specifies wxBUILD_PRECOMP=COTIRE.
The scintilla headers need to be specified for target_precompile_headers to work.
Enable it when the target has at least 2 source files (same as cotire does).
2022-04-10 20:46:56 +02:00
Maarten Bent
614d58bf38 CMake: Set precompiled headers when adding libraries
Combine the three pch related functions into one.
2022-04-10 20:46:56 +02:00
JackBoosY
e2a02d4206 CMake: Export target files 2022-04-10 20:46:56 +02:00
Maarten Bent
affbbce1a3 CMake: Make all target_compile_definitions private
It is only used to build scintilla, no need to expose these definitions to external projects.
2022-04-10 20:46:53 +02:00
Maarten Bent
de495c19a3 CMake: Make all target_include_directories private
There is no need to expose them to external projects.
2022-04-10 20:46:26 +02:00
PB
77d8926126 Simplify Windows application manifests
In section "dependency" use "*" in processorArchitecture instead of specifying
the concrete architecture such as "amd64" or "x86". This allows to have just one
manifest for all architectures instead of having them for all supported architectures
individually differing in just processorArchitecture.
2021-12-17 16:57:45 +01:00
Maarten Bent
4f0d9d3346 CMake: Fix library directory when using MinGW
This was broken in b102afc316 (CMake: Don't include generator expression in
wxPLATFORM_LIB_DIR, 2021-10-17).
And for clarity, always add a '/' after directories.

Closes #19305
2021-10-27 21:27:41 +02:00
Maarten Bent
b102afc316 CMake: Don't include generator expression in wxPLATFORM_LIB_DIR
So wxPLATFORM_LIB_DIR can be used in locations where generator expressions are not supported.
2021-10-17 11:52:30 +02:00
Maarten Bent
6d6567d41c CMake: remove duplicate install for builtin libraries 2021-10-17 11:50:34 +02:00
Maarten Bent
2e12779a21 CMake: update Info.plist variables
Use the same values as in build/bakefiles/mac_bundles.bkl.
Use the correct copyright year for in the Info.plist files.
2021-08-17 22:33:45 +02:00
Maarten Bent
4862cbd4c6 CMake: Allow to specify specific Info.plist.in file for samples 2021-08-17 21:50:48 +02:00
Vadim Zeitlin
d7e102f766 Reuse Info.plist used by configure for CMake too
The CMake-specific file is almost identical to the file used by
configure now, so don't keep both of them when just one could do.
2021-08-15 18:39:34 +02:00
Vadim Zeitlin
b7f2e4d423 Fix apparent typo in MACOSX_BUNDLE_BUNDLE_VERSION variable name
The documented name of the bundle version variable has BUNDLE twice, see

https://cmake.org/cmake/help/latest/prop_tgt/MACOSX_BUNDLE_INFO_PLIST.html

and samples/Info.plist.in uses this variable, but we set
MACOSX_BUNDLE_VERSION instead, which seems wrong, so use the apparently
correct variable name instead.
2021-08-15 16:56:24 +02:00
jolz
5a514afd34 Remove dependency on GTK from wxbase in CMake build
libwx_baseu_3.1.so should not include "-lgtk-3" during link.

See https://github.com/wxWidgets/wxWidgets/pull/2434

Closes #19224.
2021-07-24 19:19:03 +02:00