Avoid wrong use of popular but ambiguous variables (`WIN32` etc.) in
scripts and portfiles by detection in CI.
Sometimes the variables are used wrongly, and sometimes this isn't
caught in PR review. This PR tries to catch those variables (when in the
active code path in script mode). [This can happen to every
contributor](https://github.com/microsoft/vcpkg/pull/34356#discussion_r1360074122),
even if he/she knows the rules ... vcpkg is raising the bar higher than
usual, having to deal with targets and hosts even in script mode.
(`b2-options.cmake` (boost fragment) shows where we get if we don't pay
attention: the same code being used in script mode (`WIN32` meaning
host) and in project mode (`WIN32` meaning target).)
The new check doesn't break any user builds because it relies on command
line options. However it changes the ABI hashes.
Pass `share/pkgconfig` instead of `debug/share/pkgconfig`: The `share`
location is for config-independent data.
Integrate `CURRENT_PACKAGES_DIR` locations.
Change the function interface to take a CONFIG parameter instead of
prefix list (suggested below).
Use `z_vcpkg_setup_pkgconfig_path` also for `vcpkg_fixup_pkgconfig`
(which already had proper handling of `CURRENT_PACKAGES_DIR` and
`share`).
Remove redundant trailing slash.
Extend unit test.
Fixes consuming `wayland-protocols` and similar.
* Fix mingw
* Remove invalid transformation
Co-authored-by: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com>
Co-authored-by: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com>
Co-authored-by: Billy Robert O'Neal III <bion@microsoft.com>
* test osx stuff
* deactivate most of ci
* get trace output
* add required flags to the linker flags
* also look for --sysroot
* Link_args are always shared
* fix ar flags
* setup FOR_BUILD vars.
* try tricking the build.... but man configure scripts are stupid sometimes...
* try 2
* major meson rewrite
* fix duplicates
* revert --trace-expand
* update port version
* revert pipeline changes
* v db
* bump version
* v db
* set flags for rc compilers
* a few more ios fixes.
* v db
* fix osx/ios logic
* documentation and don't fatal_error in build/host machine entry calculation.
* add android/compiler target stuff from #26570
* remove extra endif
* v db
* add target param to linker flags.
* target in cpp flags
* Make vcpkg-cmake-get-vars more ios compatible
* Update scripts/get_cmake_vars/CMakeLists.txt
Co-authored-by: Matthias Kuhn <matthias@opengis.ch>
* More ios fixes
* fix target adding
* Fix broken loop
* v db
* v db
* bump date
* v db
* v db
* v db
* remove port-version 1
* v db
Co-authored-by: JackBoosY <yuzaiyang@beyondsoft.com>
Co-authored-by: Matthias Kuhn <matthias@opengis.ch>
* [scripts] fixes for armv7l host builds
* [scripts] fix meson for 32-bit arm
* [scripts] replaced EXEC_PROGRAM with execute_process in ninja and pathelf paths in vcpkg_find_acquire_program
* pixman: add missing include and fix clang-cl builds
* v db
* use correct <> isntead of ""
* v db
* make the patch depend on _MSC_VER
* v db
* fix bug in vcpkg_configure_meson not linking WindowsApp.lib
fix another bug that system=windowsstore which meson doesn recognize
* bump port version
* v db
* Add support for loongarch64 cpu.
* update ci.baseline.txt
* Revert "update ci.baseline.txt"
This reverts commit 0b3f4851bc.
* Allow user to add additional options for meson within custom triplet.
Co-authored-by: Jamlys Lee <jamlys_lee@163.com>
* [docs] Delete embedded documentation in favor of docs/
Drive-by for the helper ports:
1. "documentation": "https://vcpkg.io/en/docs/README.html"
2. "license": "MIT"
3. Use `include_guard(GLOBAL)` in all script files
4. Make sure any persistent variables are saved to the cache
* [docs] Restore empty regenerate.ps1 to satisfy Azure Pipelines
* [docs] PR comments
* put default generator and toolchain selection into a function
* update version-date of script
* version stuff
* restore PREFER_NINJA behavior on windows
use elseif instead of else
* cr ws change
* missing ,
* version stuff
* CR scripts/cmake/vcpkg_configure_cmake.cmake
Co-authored-by: nicole mazzuca <mazzucan@outlook.com>
* CR changes
* revert baseline
* update version
* bump version
* version stuff
* ci retrigger
Co-authored-by: Alexander Neumann <you@example.com>
Co-authored-by: nicole mazzuca <mazzucan@outlook.com>
* [get_cmake_vars] add -isysroot flag independednt of crosscompiling
Even without crosscompiling it is possible to specify a VCPKG_OSX_SYSROOT or
a SDKROOT this should be popagated to autotools and meson builds as well.
* [meson] add -arch and -isysroot to linker flags in case of osx crosscompile
* [meson] avoid DEPRECATION warning about flags in the [properties] section
* [meson] don't set OSXROOT evironment varibale
* [meson] don't set MACOSX_DEPLOYMENT_TARGET environment variable
cmake appends the -mmacosx-version-min flag c/cxx flags, overriding the
value set via VCPKG_C_FLAGS. By setting the environment variable, the
VCPKG_C_FLAGS value was used for meson builds. Now the same value is
taken for both.
* [meson/make] Add CMAKE_OSX_DEPLOYMENT_TARGET to VCPKG_DETECTED_CMAKE_C_FLAGS
This is done in the same way in CMake internally
* fix meson linker detection .....
* bit of code cleanup in vcpkg_configure_meson
* forgot the version stuff
* put cmake back on path because meson is buggy as hell
* update meson to 0.60.1
* add port vcpkg-tool-meson for consistency deprecate usage of tool-meson
* [skip actions] make every port using meson depend on vcpkg-tool-meson
(except pkgconf for now.)
* fix subtle bugs in vcpkg_find_acquire_program
make the port install meson if the system does not provide it.
* make pkgconf depend on meson
* restore old vcpkg_find_acquire_program behavior for versioning
* Update ports/gstreamer/vcpkg.json
remove duplicated dependency
* remove invalid option in glib
* [skip actions] fix ci failures?
* remove invalid option in gstreamer
* try without cmake
* get more logs from meson configure.
* update glib to 2.70.1
* fix typo
* fix pc file of flac
* update meson to 0.60.2
* try the patch from the other pr.
* patch meson .....
* version stuff
* fix port version
* fix gstreamer version
* remove version
* format-manifest
* version stuff
* format manifest again
* revert version stuff
* remove outdated gtk options
* version stuff
* pango version stuff
* correct baseline lost in merge
* Fix fontconfig version db
Co-authored-by: Billy Robert O'Neal III <bion@microsoft.com>
* [vcpkg/script/meson] add option NO_PKG_CONFIG to skip pkg-config setup
* [vcpkg/script/pkgconfig] move vcpkg_find_acquire_program(PKGCONFIG) into the check section where it is used
* [pkgconf] Update to 1.8.0
* version stuff
* remove unused patch.
* (CR) quote string
* version update.
* [meson] fix cross compiling from linux to windows
* Fix mingw system name
* Omit empty fields from standard libraries
* Use VCPKG_CROSSCOMPILING
* vcpkg_configure_meson: do not double escape include paths
* vcpkg_configure_meson: set winres instead of rc
* vcpkg_configure_meson: do not always cross build
* Apply suggestions from code review
* fix the issue I made
* [meson] error when gcc uses a different linker executeable
* [meson] apply code review from strega-nil
* [meson] more verbose error messages
* [meson] remove wrong check
Co-authored-by: Kai Pastor <dg0yt@darc.de>
Co-authored-by: nicole mazzuca <83086508+strega-nil-ms@users.noreply.github.com>
Co-authored-by: nicole mazzuca <mazzucan@outlook.com>
* [vcpkg_install_meson] add bin to path to run code generators
* [vcpkg_configure_meson]
deactivate native compiler in cross builds
make x86 on x86_x64 a native instead of a cross build
(as long as we are not building for UWP)
* remove double spaces in _FLAGS
remove unnecessary comments
* change regex to take double - into account.
* add missing removal of multiple spaces back into the regex
* remove ws diff change
* remove ws to reduce diff
* Change macro to function
Co-authored-by: Robert Schumacher <roschuma@microsoft.com>
* UWP is cross target.
Co-authored-by: Robert Schumacher <roschuma@microsoft.com>
* [vcpkg] vcpkg_configure_meson: cross-compile fixes
This change includes two fixes to the meson cross-compile config.
The first change fixes the regex used to partition linker flag
options so that it supports double-hyphen prefixes.
The second change ensures that the cross file is always generated
when the target platform is either Android or iOS, even if the
host and target CPU architectures are the same.
* Use helper function instead of regex replace
Use vcpkg_internal_meson_convert_compiler_flags_to_list to partition
compiler flags into a list, instead of string(REGEX REPLACE ...).
* vcpkg_configure_meson: Support macOS cross-compile
* Update scripts/cmake/vcpkg_configure_meson.cmake
Co-authored-by: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com>
* Use adapted regex instead, utilize for native file config as well
Co-authored-by: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com>
Co-authored-by: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com>
* [mesa] new port
* make mesa build more.
* more fine tuning
* fix x86
* add supports.
* comment about EGL feature.
* apply suggestion from CR.
added opengl feature.
error on disabled shared glapi if multiple GL APIs are selected.
* fix boolean option
* make sharedgl-api=true the hardcoded default
* add suggestion from CR
* add mesa:x64-windows-static=fail to ci.baseline.txt due to static crt and parts being a dynamic library.
* apply CR sugesstion
Co-authored-by: PhoebeHui <20694052+PhoebeHui@users.noreply.github.com>
* [vcpkg docs] Change how documenting port functions works
Instead of using `##`, use comment blocks for documentation.
Also, add some minor docs and change RST -> MD
so we actually get docs generated.
* add CI stuff
* regenerate docs
* fix vcpkg_find_acquire_program to not use _execute_process
* Update meson to a recent commit to fix a bug with 0.56
* rename static libraries built by meson by default on windows
* apply cmake variables detection to meson.
use native/cross files
make arm builds work.
* update munit
* fix fribidi
* fix _FLAGS variables
* set env SDKROOT and MACOSX_DEPLOYMENT_TARGET in configure_meson
* need osx env while building and configuring
* - remove unused env backup functions
- rename internal functions to be prefixed with _vcpkg_
- fix VCPKG_CHAINLOAD_TOOLCHAIN_FILE for ios/freebsd
* replace _vcpkg with vcpkg since _ has special meaning in functions
* rename functions to vcpkg_internal_meson_generate
* update control tool-meson
* fix configure meson for non windows builds.
* change to the two ports using meson
* fix passing of empty compiler arguments.
* dont transform / into - for all flags
* copy meson logs into the buildtree to better diagnose CI errors of meson ports
* another change to the two ports to actually force a CI rebuild
* add missing /pkgconfig dir to PKG_CONFIG_PATH
* fix pkgconfig setup
* add share/pkgconfig to PKG_CONFIG_PATH
* Add CMake path to PATH for meson
* add share folder to prefix for meson
* remove double message
* add libdir so that meson does not install into architecture folder in linux
and make prefix path target dependent. (Or should it be host dependent?)
* bump controls
* update toolchain selector to use VCPKG_TARGET_IS_<paltform>.
* change pkgconfig prefix and path.....
meson is not correctly handling native windows paths and eating "\"
PKG_CONFIG_PATH also nees : to correctly separate paths
Prefix still must be near to native path but with / instead of \ C:/somepath/
Removing the compiler flag /Oi (Generate Intrinsic Functions) allows
meson to detect functions like memmove, memset correctly. This is
relevant to meson configure for fribidi (see fribidi/meson.build).
This fixes the following "issues" (from fribidi meson-log.txt):
testfile.c(17): error C2168: 'memmove': too few actual parameters for
intrinsic function
Checking for function "memmove" : NO
testfile.c(17): error C2168: 'memset': too few actual parameters for
intrinsic function
Checking for function "memset" : NO
And enables detection of the functions:
Checking for function "memmove" : YES
Checking for function "memset" : YES