Commit Graph

744 Commits

Author SHA1 Message Date
Nirbheek Chauhan 1e3d03cc09 ninja: Fix C file name for generated Vala sources
The Vala compiler preserves the path components of a Vala source file if
the source file is in a subdir.

Fixes https://github.com/mesonbuild/meson/issues/815
2016-10-02 00:50:45 +05:30
Nirbheek Chauhan 9d1aeebc27 ninja: Don't add every CustomTarget to 'all'
Otherwise they are built regardless of whether they are actually used by
anything else. Only build them if they're going to be installed or
always-built.

Ideally, we should also do this with all BuildTargets, and provide
a mechanism for people to specify which targets they want built with
'all', and a way for people to add them to custom targets.. Without
this, things like tests and examples are *always* built with no way to
turn that off.

For now, we just do this because it also with tests that check for
dependency issues. Including all CustomTargets in `all` results in
dangling targets to also be built, which hides the problem and makes it
racy.
2016-10-02 00:48:12 +05:30
Nirbheek Chauhan e713aca1d1 backends: Remove self.dep_rules dead code
self.dep_rules is not set anywhere by anything, so this code always
results in a no-op. If it didn't result in a no-op, it would need to be
seriously rewritten because it has bitrotten and makes no sense anymore.
2016-10-02 00:48:12 +05:30
Sam Thursfield 24e50b2697 Fix missing comma in backend.Backend.dedup_arguments()
This error meant that -I flags passed to the compiler were never
actually deduplicated.
2016-10-01 15:09:25 -04:00
Jussi Pakkanen 295b67df51 Merge pull request #814 from centricular/heavy-cleanup-compilers-buildtargets
Heavy cleanup in compilers and BuildTarget
2016-09-30 15:30:57 -04:00
Jussi Pakkanen 154763f81b Deduplicate command line arguments. Slight improvement to #671. 2016-09-28 16:18:08 -04:00
Nirbheek Chauhan 89753ecc27 Use per-target compilers while generating targets
This is definitely more correct since it takes into account the
cross-compilation status. We also now do the Java and CSharp sanity
checks on the BuildTarget level instead of in the Ninja backend.
2016-09-27 00:27:38 +05:30
Nirbheek Chauhan f85415f0d4 ninjabackend: Remove duplicate vala compiler usage 2016-09-27 00:27:38 +05:30
Nirbheek Chauhan f5caf40f66 ninja: Also add generated sources to the source list
The generated sources should also be used for determining the linker
2016-09-26 23:48:11 +05:30
Nirbheek Chauhan cfbffc6ba1 ninja: Fix header deps of generated source compiles
Because we were iterating over all generated sources of a target in one
go, we weren't adding the correct header_deps for generated source
compiles. We need to aggregate the header_deps first before generating
source compile targets for generated source files.
2016-09-26 23:48:11 +05:30
Nirbheek Chauhan ca507cdcdf ninja: Add a str and repr methods for RawFilename
This aids debugging immensely
2016-09-26 23:44:38 +05:30
Jussi Pakkanen e23e5c48d7 Use custom target outputs to determine linker. Closes #786. 2016-09-25 19:20:26 +03:00
Nirbheek Chauhan cb2eff8440 ninja: Fix checking of exe_wrapper for CustomTargets (#806)
It was making a trivially incorrect check
2016-09-25 19:06:04 +03:00
Jussi Pakkanen 49583ccfab Revert #737. Closes #773. 2016-09-12 21:54:49 +03:00
Jussi Pakkanen c334eeda76 Merge pull request #684 from mesonbuild/pdb
Create pdb files with MSVC
2016-09-11 13:04:55 +03:00
Nirbheek Chauhan 0840a908f2 ninjabackend: Add support for installing .pdb files
.pdb files are files created by MSVC which have debug symbols. These are
created when /ZI or /Zi is passed to the compiler and /DEBUG to the
linker.
2016-09-11 10:10:47 +05:30
Jussi Pakkanen c7e5e558f9 More PDB explanation. 2016-09-10 13:26:37 +03:00
Jussi Pakkanen 19ecad5b24 Mark all dependencies for run targets. 2016-09-09 02:02:23 +03:00
Jussi Pakkanen d26ab47072 Can use custom targets as executables to run in a run_target. 2016-09-07 23:14:14 +03:00
Jussi Pakkanen 9235fd4ec1 Permit use of file objects in run targets. 2016-09-07 23:04:11 +03:00
Jussi Pakkanen a9da6c5132 Moved targets with same name into subdirs to make all tests pass. 2016-09-02 22:52:37 +03:00
Jussi Pakkanen cdf0c4f1a9 Merge branch 'QuLogic-context-managers' 2016-09-01 23:12:06 +03:00
Elliott Sales de Andrade 389259c229 Stop "fixing" command line in CustomTargets. (#737) 2016-09-01 22:10:33 +03:00
Jussi Pakkanen fa59fa55e2 Use absolute paths for dep files in Visual Studio. 2016-09-01 21:58:41 +03:00
Elliott Sales de Andrade 6475bdbe20 Properly handle Files used in CustomTarget commands. 2016-08-29 04:29:49 -04:00
Elliott Sales de Andrade cd03df4a4c Fix CustomTargets used as input to CustomTargets. (#727) 2016-08-28 21:14:15 +03:00
Elliott Sales de Andrade 4c71695e41 Use context manager for file I/O.
There are a few cases where a context manager cannot be used, such as
the logger.
2016-08-27 18:29:55 -04:00
Jussi Pakkanen b7392bb290 Merge pull request #696 from mesonbuild/depfile
Add support for dependency files in custom targets.
2016-08-27 16:43:14 +03:00
Elliott Sales de Andrade a2321b24f6 Flatten isinstance calls. (#715)
That is, isinstance(x, y) or isinstance(x, z) can be flattened with a
tuple to isinstance(x, (y, z)).
2016-08-27 15:47:29 +03:00
Elliott Sales de Andrade 70d94a5550 Allow capturing command output of a custom target.
For commands that always output to stdout and don't have a "-o" or
"--output" or some other similar option, this 'capture' setting allows
the build to capture the result and place it in the output file.
2016-08-26 20:46:42 -04:00
Elliott Sales de Andrade dcaf2d7b3d Accept string exe with Backend.serialise_executable.
Normally, this accepts a build.Executable, but it accept
build.BuildTarget and build.CustomTarget as well. Now it will also
accept a string path.
2016-08-26 20:46:42 -04:00
Jussi Pakkanen c02a175d52 Add depfile support to generators. 2016-08-21 00:12:56 +03:00
Jussi Pakkanen 3ae918a463 Add support for dependency files in custom targets. 2016-08-20 21:01:49 +03:00
Matthias Klumpp 56823272ab Implement D support
This patch adds support for the D programming language[1] to Meson.

The following compilers are supported:
* LDC
* GDC
* DMD

[1]: http://dlang.org/
2016-08-19 03:02:51 +02:00
Jussi Pakkanen 36870ace0f Document pdb insanity a bit. 2016-08-18 23:15:54 +03:00
Jussi Pakkanen 1bed33fba2 Create pdbs that work when using pch or doing extract object (sadly not both). 2016-08-18 22:56:14 +03:00
Jussi Pakkanen ccda29794b Make pdb work with pch. 2016-08-18 00:12:54 +03:00
Jussi Pakkanen b08581d394 Generate pdb files during linking. 2016-08-17 23:50:50 +03:00
Jussi Pakkanen 5e047d9c91 Write pdb info to a specific file. 2016-08-17 23:28:35 +03:00
Jussi Pakkanen 1d36f68629 Merge pull request #660 from mesonbuild/libdirfix
Fix library directory handling
2016-07-30 20:09:49 +03:00
Nirbheek Chauhan bfa25fc1d3 ninja: Add escaping for backslash in -D arguments
This is only needed for defines. Other arguments such as -I and /Fa that
also take arguments with spaces and backslashes don't need it at all.
2016-07-29 19:51:11 +05:30
Nirbheek Chauhan 2d05008956 vs: Fix quoting and escaping of compiler options
Target-specific compiler options should be split into pre-processor
defines, include directories, and additional options, then
escaped/quoted and added to the appropriate portions of the project
file.

The "115 spaces backslash" test now checks that backslashes and spaces
now work properly in all three places.
2016-07-29 19:51:10 +05:30
Nirbheek Chauhan 6d7b020aa2 ninja: Fix static library installation dir
Trivially correct typo fix. Didn't actually break anything because the
fallback is libdir anyway, and we always install static libraries to
libdir.

Pointed out by Zhe Wang (0x1997).
2016-07-27 14:39:32 +05:30
Nirbheek Chauhan 88aafd363e Normalize the path of a configured file to avoid dupes (#640) 2016-07-19 20:10:57 +03:00
Nirbheek Chauhan 129ce6800c vs: Fix visual studio version in solution file (#648) 2016-07-18 23:59:09 +03:00
Nirbheek Chauhan 5351b091a8 ninja: Remove duplicated if check (#637)
Trivially correct
2016-07-15 17:52:14 +03:00
Jussi Pakkanen 64919b1c74 Merge pull request #417 from nirbheek/dll-paths
Fix filenames and paths used in DLL shared library generation
2016-07-13 22:18:50 +03:00
Nirbheek Chauhan 6660837953 vs: Target platform is not always Win32
It depends on the target machine. Without this building for 64-bit fails
when using external dependencies.
2016-07-11 17:11:49 +05:30
Jussi Pakkanen a0666ebf9c Gcc versions older than 4.9 do not support color output. 2016-07-01 23:38:25 +03:00
Jussi Pakkanen 4f2b663928 Unify common code in run_target and custom_target. 2016-07-01 22:12:15 +03:00
Nirbheek Chauhan 6bb9805749 vs: Don't re-add pre-existing include dirs
Reduces noise in the vcxproj files
2016-07-01 20:50:47 +05:30
Nirbheek Chauhan afca987e94 vs: Fix usage of mesonlib.File.rel_to_builddir with generated files
It should always be passed build_to_src otherwise the path for generated
files will always be wrong. Passing the vcxproj path as the build_to_src
only works for files in the source tree.
2016-07-01 20:50:47 +05:30
Nirbheek Chauhan 2535364751 vs: Explain path-conversion variables
It's not easy to understand what these variables mean and what they're
used for without some comments
2016-07-01 20:50:47 +05:30
Nirbheek Chauhan 761ac8d8c4 vs: Add support for the 'vs_module_defs' shared_library kwarg 2016-07-01 20:50:47 +05:30
Nirbheek Chauhan f54e07bcd8 vs: Fix the path of customtarget generated sources
The path is relative to the vcxproj file, not relative to the build root
2016-07-01 20:50:47 +05:30
Nirbheek Chauhan 23d29ffb14 vs: Set all compiler/linker options correctly
These need to be set via XML tags and not passed directly as
AdditionalOptions. Otherwise the project will end up with inconsistent
compiler options and the build will fail.

Since Meson internals assume that these will be set via a command-line
invocation, we need to detect the presence of various flags in
buildtype_args and buildtype_link_args and set the correct options in
the vcxproj file.

Note that this means different configurations (debug/release/etc) cannot
be enumerated in the vcxproj/sln files and chosen by the user at build
time because arbitrary build characteristics can depend on that. The
only way to support that is by doing a full parse and conversion of
Meson build files (for all build options) to vcxproj files.
2016-07-01 20:50:47 +05:30
Nirbheek Chauhan 2f8eaa6ed4 vs: Fix paths of internal library dependencies
They are relative to the path of the vcxproj file, not relative to build root
2016-07-01 20:50:47 +05:30
Nirbheek Chauhan 1481715618 vs: Add libraries, library paths, and link args needed by dependencies
The link arguments for each dependency are split into these three and
added to the vcxproj file. Without this targets cannot find the external
dependencies.
2016-07-01 20:50:47 +05:30
Nirbheek Chauhan f564bf9af0 vs: Add include dirs required by dependencies
Also ensure that they're translated from UNIX to native as required
2016-07-01 20:50:47 +05:30
Nirbheek Chauhan 80486563bf vs: Set TargetName/TargetExt correctly
Without this the filename set by the user and Meson is completely ignored
2016-07-01 20:50:47 +05:30
Nirbheek Chauhan 64cb70441b CustomTarget: Use mesonlib.File objects as-is in the command to be run
This allows us to output either the relative or absolute path as
requested. Fixes usage of configure_file inside CustomTarget commands
with the VS backends.
2016-07-01 20:50:47 +05:30
Nirbheek Chauhan 2e986ae30d backend: Raise a RuntimeError if an unknown object is added to the command list
This allows us to catch these errors early and print a useful message
2016-07-01 20:50:47 +05:30
Nirbheek Chauhan 0143c32c7c Overhaul versioning and naming of libraries
This commit contains several changes to the naming and versioning of
shared and static libraries. The details are documented at:
https://github.com/mesonbuild/meson/pull/417

Here's a brief summary:

* The results of binary and compiler detection via environment functions
  are now cached so that they can be called repeatedly without
  performance penalty. This is necessary because every
  build.SharedLibrary object has to know whether the compiler is MSVC or
  not (output filenames depend on that), and so the compiler detection
  has to be called for each object instantiation.

* Linux shared libraries don't always have a library version. Sometimes
  only soversions are specified (and vice-versa), so support both.

* Don't use versioned filenames when generating DLLs, DLLs are never
  versioned using the suffix in the way that .so libraries are. Hence,
  they don't use "aliases". Only Linux shared libraries use those.

* OS X dylibs do not use filename aliases at all. They only use the
  soversion in the dylib name (libfoo.X.dylib), and that's it. If
  there's no soversion specified, the dylib is called libfoo.dylib.
  Further versioning in dylibs is supposed to be done with the
  -current_version argument to clang, but this is TBD.

  https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/DynamicLibraryDesignGuidelines.html#//apple_ref/doc/uid/TP40002013-SW23

* Install DLLs into bindir and import libraries into libdir

* Static libraries are now always called libfoo.a, even with MSVC

* .lib import libraries are always generated when building with MSVC

* .dll.a import libraries are always generated when building with
  MinGW/GCC or MinGW/clang

* TODO: Use dlltool if available to generate .dll.a when .lib is
  generated and vice-versa.

* Library and executable suffix/prefixes are now always correctly
  overriden by the values of the 'name_prefix' and 'name_suffix' keyword
  arguments.
2016-07-01 20:50:47 +05:30
Jussi Pakkanen 0733c0f9a1 Changed run_target to take command as kwarg and add depends. This makes it behave the same as custom_target. 2016-06-24 23:07:57 +03:00
Jussi Pakkanen ea4fe8e417 Run_target can run binaries obtained with find_program. 2016-06-24 15:02:43 +03:00
Nirbheek Chauhan 50fef89218 ninjabackend: Add subdir includes before external dep includes
Fixes https://github.com/mesonbuild/meson/issues/604
2016-06-21 01:53:26 +05:30
Nirbheek Chauhan b1077dded7 vs backends: Translate unix link and compile flags (#603) 2016-06-17 22:24:43 +03:00
Jussi Pakkanen 68dbbeb78f Octopus merged cross fixes and genetor custom because why not. 2016-06-16 21:03:57 +03:00
Noam Meltzer 038e575d78 determine_linker(): choose static cross linker for cross compiling
somewhere after 0.29.0 a bug was introduced where the LINK_ARGS of the
native static linker were used instead of the cross static linker
2016-06-16 20:52:03 +03:00
Sam Thursfield a661708b54 Use target name to decide generated Vala .h & .vapi filenames
Previously Meson would use the name of the first .vala source file. This
doesn't work for some projects. Tracker is one example: it has
several libraries that mix Vala and C code. In such cases, none of the
.vala files tend to bear the name of the library we actually want to
generate.
2016-06-15 15:15:58 +01:00
Jussi Pakkanen 475175f4b5 Can use generator outputs in custom targets. Closes #587. 2016-06-13 21:17:13 +03:00
Martin Hostettler 7bd424fea6 ninjabackend: Add missing ninja_quote for cross compilation rule. 2016-06-13 00:12:15 +02:00
Hemmo Nieminen 1f76b76a84 Add support for running specific test suites with valgrind. 2016-06-06 10:28:00 +03:00
Hemmo Nieminen fac6f869e0 Change test suite separator character from '-' to ':'.
This allows defining test suites for test-valgrind target without the risk
of e.g. being unable to differentiate the targets test-valgrind (testing
with valgrind) from test-valgrind (testing the valgrind subproject).
2016-06-06 10:28:00 +03:00
Jussi Pakkanen 0bc0056064 Merge pull request #577 from nioncode/vs2015
Implement vs2015 backend
2016-06-05 13:00:57 +03:00
Jussi Pakkanen 0482635c12 Handle case of install_subdirring a subdir. 2016-05-30 23:08:24 +03:00
Nicolas Schneider fba749fcb7 extract vs2015backend into own file 2016-05-30 22:00:20 +02:00
Nicolas Schneider d34d85b0f5 vs2015: fix object generators 2016-05-30 21:49:37 +02:00
Nicolas Schneider 3bedca0257 add vs2015 backend 2016-05-30 21:49:35 +02:00
Jussi Pakkanen 8e734a8c9f Set Gnu fortran type based on platform. 2016-05-30 22:42:11 +03:00
Jussi Pakkanen beb6827413 Installing subdirs now merges with existing files in the target dir. 2016-05-30 21:48:03 +03:00
Jussi Pakkanen 16e032c289 Fix installing manpages from subdirs. 2016-05-30 20:26:31 +03:00
Jussi Pakkanen c2082146ab Merge branch 'nioncode-vs-generator' 2016-05-28 23:09:59 +03:00
Jussi Pakkanen 4377f773e0 Can set global linker arguments. Closes #536. 2016-05-28 21:31:59 +03:00
Nicolas Schneider a29d9c2c33 vs: fix generators that use indexed output replacements (like @OUTPUT0@) 2016-05-26 13:08:33 +02:00
Nirbheek Chauhan eb181485d0 ninja: Fix cross-build when using the compiler's stdlib
Logic was reversed. We want to pass -nostdinc when there's no c_stdlib specified
in the cross-info file.
2016-05-26 06:21:08 +05:30
Jussi Pakkanen df03f849a8 Merge pull request #542 from mesonbuild/ownstdlib
Build transparently with a custom standard library
2016-05-25 23:44:24 +03:00
Jussi Pakkanen babdb27570 Merge pull request #479 from mesonbuild/i18n
Moved gettext into i18n module.
2016-05-25 17:53:35 +03:00
Jussi Pakkanen 1a0938cc25 Automagic scan-build support. 2016-05-22 19:24:59 +03:00
Jussi Pakkanen afe7252476 Can specify a stdlib subproject that is used implicitly on all targets with said language. 2016-05-21 21:46:03 +03:00
Jussi Pakkanen dc148e0702 Remove all special casing for gettext and use elementary operations instead. 2016-05-21 18:21:23 +03:00
Jussi Pakkanen 8d73d3023a Better error message when compdb generation fails. 2016-05-03 21:53:36 +03:00
Jussi Pakkanen 46ce7a9d4b Merge pull request #516 from centricular/cross-compile_32bit-x86_on_64bit-x86_exe-wrapper
Special-case the 32-bit executable on 64-bit x86 case while cross-compiling
2016-05-01 18:56:07 +03:00
Jussi Pakkanen 2e2df70dd0 Merge branch 'centricular-customtarget-path-windows' 2016-05-01 18:39:45 +03:00
Hemmo Nieminen 1d7201dd35 Move all coverage reporting related files under $BUILD_DIR/meson-logs. 2016-05-01 18:22:47 +03:00
Jussi Pakkanen e8f3e1ef3a Merge branch 'nioncode-vs-manygen'. 2016-04-21 22:41:00 +03:00
Hemmo Nieminen c95b0a6c17 Fix a bug in coverage reporting.
The directory from where the source files are sought when producing a
coverage report in text or XML format should not be the build directory
but the source directory instead.
2016-04-21 22:32:26 +03:00
Nicolas Schneider 985ea50944 vs2010: add object files from custom_target to project
Object files from a custom_target are like external objects and must be
added to the project.
Object files from a generator are automatically used by MSBuild, since they
are part of the CustomBuildStep and thus part of the same project as the
current build target.
2016-04-19 23:25:45 +02:00
Nicolas Schneider 060f195fe0 vs2010: add generated libs as link dependencies 2016-04-19 23:25:45 +02:00
Nicolas Schneider 1ccb4b3a51 vs2010: add dirs of custom_target generated files to include dirs 2016-04-19 23:25:45 +02:00
Nirbheek Chauhan 86aa51232e backends: Don't duplicate test setup data file name
Instead, return the values of the test and benchmark setup data files so
that the ninja/osx/vs backends can use those filenames instead of
hard-coding them.
2016-04-15 05:49:42 +05:30
Nirbheek Chauhan e3bc2e5c68 ninja: Set PATH for CustomTargets with built EXEs on Windows
When a CustomTarget is run with a command that is an executable built
by the project which also has a DLL built in the same project as a
dependency, the EXE can't run on Windows because the DLL can't be found.
On UNIX-like systems, we set the RPATH using the linker so these
dependencies can be found, but on Windows the only way is to set the
PATH environment variable.

The same problem exists for tests, so we reuse that infrastructure by
creating a new meson_exe.py script that can be used as a wrapper to run
CustomTarget commands on Windows. This can later also be extended to add
support for setting an environment while calling the command needed to
generate a CustomTarget: https://github.com/mesonbuild/meson/issues/266
2016-04-15 05:49:42 +05:30
Nirbheek Chauhan c0765b0e8d Don't require an exe_wrapper when cross-compiling 32-bit on 64-bit
Almost all 64-bit x86 OSes can run 32-bit x86 binaries natively. Detect
that case and don't require an exe wrapper.
2016-04-15 00:25:34 +05:30
Jussi Pakkanen 48e678db76 Strip leading source tree dir name from install files if it exists. 2016-04-09 12:04:06 +03:00
Jussi Pakkanen cab5ce4fc0 Merge pull request #438 from trhd/testing_options
New options for controlling test output.
2016-04-06 23:10:20 +03:00
Nicolas Schneider 536edb65d6 vs2010: replace " with \" in /D command line args
The /D switch strips any quotes except when they are escaped.
2016-04-06 22:10:29 +03:00
Hemmo Nieminen 2eb392cdc0 Implement errorlogs builtin option. 2016-04-04 02:52:30 +03:00
Hemmo Nieminen 7fb04c207b Implement stdsplit builtin option. 2016-04-04 02:52:30 +03:00
Jussi Pakkanen 16b3e22016 Removed lingering coverage flags. 2016-04-04 01:41:56 +03:00
Jussi Pakkanen 873ffe782c Merge pull request #390 from nirbheek/msvc-module-defs
Add support for passing a module definitions file for exporting symbols while linking
2016-04-03 18:12:18 +03:00
Jussi Pakkanen 4352398caf Fix output dir of coverage-html. 2016-04-03 17:27:14 +03:00
Jussi Pakkanen 6291fb4056 Put buildtype flags to vala compiles. 2016-04-03 16:44:18 +03:00
Hemmo Nieminen 336904b553 Move MesonException from coredata to mesonlib. 2016-04-01 00:52:45 +03:00
Jussi Pakkanen 5bb94b901d Merge pull request #486 from nioncode/vs-transitivedeps
vs2010: fix transitive dependencies
2016-03-31 22:20:19 +03:00
Jussi Pakkanen 02277c9ddb Merge pull request #488 from nioncode/vs-extrafiles
vs2010: add extra_files to project
2016-03-31 22:20:05 +03:00
Jussi Pakkanen 519df3defa Only check cl banner string on Windows. Closes #491. 2016-03-31 21:46:26 +03:00
Jussi Pakkanen 67377e69b5 Invoke depfixer in-process to make it faster. Closes #480. 2016-03-30 22:09:36 +03:00
Jussi Pakkanen 74265135bd Add global arguments to vala compilations. 2016-03-30 21:27:02 +03:00
Nirbheek Chauhan 1713fa0297 Add shared_library argument for a Visual Studio module definitions file
On MSVC, shared libraries only export symbols that have been explicitly exported
either as part of the symbol prototype or via a module definitions file.

On compilers other than MSVC, all symbols are exported in the shared library by
default and the format for the list of symbols to export is different, so this
is only used with the VisualStudio compiler.

The module defs file path can either be relative to the current source directory
or an absolute path using meson.source_root() + '/some/path'
2016-03-30 16:24:35 +05:30
Nicolas Schneider b970ef692f vs2010: add extra_files to project 2016-03-30 12:38:28 +02:00
Nicolas Schneider 33e842e50a vs2010: fix transitive dependencies 2016-03-30 00:35:07 +02:00
Jussi Pakkanen f3386d10c3 Merge branch 'vs-privinc' 2016-03-29 22:50:15 +03:00
Jussi Pakkanen 833520afb5 Merge branch 'vs-fixinclude' 2016-03-29 22:45:45 +03:00
Jussi Pakkanen 1d89d091f8 Merge branch 'vs-extraargs' 2016-03-29 22:32:48 +03:00
Jussi Pakkanen 5ea24bafdd Merge branch 'samename' 2016-03-29 22:25:16 +03:00
Nicolas Schneider a33d9d56cf vs2010: support EXTRA_ARGS for generators 2016-03-29 12:08:34 +02:00
Nicolas Schneider c2a9f81b68 vs2010: fix generated files' path
Generated files should always come with the correct relative path set,
so we don't have to modify it at all.
2016-03-29 12:08:34 +02:00
Nicolas Schneider ba8b650cda vs2010: fix relative path to target private dir for generators
backend.get_target_private_dir() includes the target directory in the path.
However, we want to treat all paths relative from the target directory,
because that's where our VS project file lives in.
2016-03-29 12:08:34 +02:00
Nicolas Schneider 330be891c1 vs2010: fix generator command
A shebang line on Windows will be resolved to [binary, script_path].
Thus, we need to use both instead of just taking the first element of the
command.
2016-03-29 12:08:09 +02:00
Nicolas Schneider 30e2a5feae vs2010: fix include directories
Everything in the VS project file is relative to the project file itself.
The project file gets put in the target.subdir, so to include files from
there we just need to use '.'. To include from the private dir, we
need to use the relative path from the target dir to the target private
dir.
2016-03-29 11:50:50 +02:00
Nicolas Schneider 9c17f0cd93 vs2010: support private include dirs 2016-03-29 11:49:40 +02:00
Jussi Pakkanen 12a4e7d7e7 Moved gettext into i18n module. 2016-03-28 20:15:16 +03:00
Nicolas Schneider fd8180ddcb move source file conflict detection into Vs2010 backend 2016-03-28 14:42:52 +02:00
Nicolas Schneider 84804fc531 vs2010: use copy of buildtype_args to not change global state
We do not want the modifications of general_args to propagate to the
global buildtype_args.
2016-03-25 11:01:07 +01:00
Nicolas Schneider 8787ec3ea2 vs2010: fix object extraction with same source file name
This also refactors determine_ext_objs() to use inheritance instead of a
method flag for determining the object output name.
2016-03-25 09:49:30 +01:00
Nicolas Schneider 0c4aab6eed vs2010: support same source file names in different subdirs 2016-03-24 23:44:44 +01:00
Jussi Pakkanen d87eb7d290 Merge branch 'base_options'. 2016-03-20 22:04:24 +02:00
Jussi Pakkanen 9071c8fc45 Merge branch 'Custom target absolute paths'. 2016-03-20 21:39:49 +02:00
Jussi Pakkanen c1a0bd9a52 Merge pull request #441 from nioncode/vs-compile-args
vs2010: fix compile args
2016-03-20 21:24:48 +02:00
Jussi Pakkanen 79de463993 Converted precompiled headers into a base option. 2016-03-20 19:35:42 +02:00
Jussi Pakkanen 0c63f75aaf Converted coverage into a base option. 2016-03-20 19:16:49 +02:00
Jussi Pakkanen a3d49ca1ce Merge pull request #453 from nioncode/vs-customTargetDependencies
vs2010: fix dependencies of CustomTarget
2016-03-20 18:49:53 +02:00
Jussi Pakkanen b5c7cca0dc Works when mixing Java and C. 2016-03-17 21:24:13 +02:00
Nicolas Schneider 147b7aa356 vs2010: add explicit objects as 'Object' ItemGroup instead of link dependency
This has two effects:
1. It makes targets with only object files work (test case 88).
2. It adds the object files to the project in the VS IDE.
2016-03-17 13:13:28 +01:00
Nicolas Schneider d72cc6e6f8 vs2010: fix object extraction
1. Dependencies must be set up with the target's id instead of its
basename.
2. Extracted object output file names must not include the directory
prefix, because MSBuild puts all object files into the same directory
and names them srcfilename.obj instead of dir/filename.obj or
dir_filename.obj.
2016-03-17 12:37:38 +01:00
Jussi Pakkanen 19046fd854 Added new base options and some sample opts for gcc. 2016-03-16 21:55:03 +02:00
Nicolas Schneider 4d9db21039 vs2010: fix dependencies of CustomTarget 2016-03-16 00:00:39 +01:00
Nicolas Schneider 3871f22cc3 remove unnecessary os.path.join() calls
ofilenames and srcs are already absolute paths.
2016-03-15 23:37:50 +01:00
Nicolas Schneider e067c4a79d fix eval_custom_target_command() to use absolute paths for output files 2016-03-15 23:26:12 +01:00
Nicolas Schneider 2761f96fe9 vs2010: give each target an own temp dir
The 'Rebuild' target fails in mysterious ways if multiple targets use
the same directories because of output files being deleted between two
build steps (e.g. test case 78 fails on Rebuild, whereas Clean + Build
work just fine).
2016-03-14 09:56:42 +01:00
Nicolas Schneider 2511ff0970 check is_header() first, since it is a subset of is_source() 2016-03-14 00:03:16 +01:00
Nicolas Schneider 1f907e75da add everything that is not an object or source file to headers list 2016-03-13 23:08:37 +01:00
Nicolas Schneider c72cefaac4 only include known source file extensions into sources list 2016-03-13 19:07:44 +01:00
Nicolas Schneider baa639031b not all dependencies have a compile_args attribute 2016-03-13 19:01:46 +01:00
Nicolas Schneider e366631e9e don't fail if we don't compile anything (we might just bundle object files) 2016-03-13 18:58:41 +01:00
Nicolas Schneider 5503939866 only guess language for source files, not for header or object files 2016-03-13 18:03:14 +01:00
Nicolas Schneider 8eac78b861 vs2010: support language specific extra_args 2016-03-13 17:08:30 +01:00
Jussi Pakkanen 0d5eaa2721 Merge pull request #442 from nioncode/vs-linker-args
vs2010: fix linker args
2016-03-12 16:44:33 +02:00
Nicolas Schneider 17f1323aca vs2010: fix linker args 2016-03-12 14:18:51 +01:00
Nicolas Schneider 49418cfe8a vs2010: support multiple precompiled headers (one per language)
This creates the PrecompiledHeader properties for every source file in the
project if multiple languages are present. Otherwise, the global pch
settings are used.
The pch to use is determined by checking the suffix of the source file.
2016-03-12 02:02:36 +01:00
Nicolas Schneider 5ba7680a0d vs2010: fail on multiple precompiled headers 2016-03-12 00:41:04 +01:00
Nicolas Schneider 18ae344be4 vs2010: support precompiled headers 2016-03-11 19:33:53 +01:00
Jussi Pakkanen 79537b54db Implicit include directories go first. 2016-03-11 00:03:55 +02:00
Nicolas Schneider 749aeefe0c pass meson source and build dirs as env variables for postconf scripts 2016-03-03 22:28:56 +01:00
Nicolas Schneider 9f9f73fa52 add args support for add_postconf_script 2016-03-01 14:31:37 +01:00
Nicolas Schneider 92187501ed Can add postconfigure script. 2016-03-01 14:07:38 +01:00
Jussi Pakkanen 2d32c39471 Handle built targets in custom rules. Closes #411. 2016-02-29 20:51:25 +02:00
Jussi Pakkanen 97c22fadbe Merged XCode fix. 2016-02-26 22:05:47 +02:00
Nicolas Schneider 40a7287a59 vs2010: properly check whether solution needs to be regenerated 2016-02-25 23:13:29 +01:00
Nicolas Schneider bffc84e77e vs2010: write regen.rule in gen_regenproj 2016-02-25 23:13:14 +01:00
Nicolas Schneider 4651ec8f77 vs2010: fix REGEN project input files 2016-02-25 23:12:56 +01:00
Rogiel Sulzbach f98dc48a8d Fix Xcode backend
This makes the following changes:
 * Explicitly closes the file for force flushing (this fixes an issue on which the last 2 or 3 lines weren't being written to disk)
 * Adds another check on the PBXBuildFile stage to get the file name if the returned source type is a File instead of a string

Fixes issue #337
2016-02-25 18:32:26 -03:00
Jussi Pakkanen 003696fc27 Merge VS2010 path fix branch. 2016-02-25 22:49:44 +02:00
Nicolas Schneider c5001a3a5a call os.path.normpath before splitting a file path into its components
This makes sure that any '/' are converted to native directory separators
on Windows.
2016-02-25 21:36:57 +01:00
Jussi Pakkanen 7d516ee9b1 Merge pull request #408 from nioncode/fixGeneratorTest
Fix generator test
2016-02-24 21:02:47 +02:00
Minijackson 3b688c6114 Create directories of unity temporary files 2016-02-24 15:07:43 +01:00
Nicolas Schneider 6de2fd6ab5 vs2010: fix target_to_build_root method
Python's os.path.split() does not split the path into its components.
Instead, split the path with str.split() using the OS's file system
separator.
2016-02-24 00:40:14 +01:00
Nicolas Schneider 78551ae242 vs2010: do not add generated object files to project
MSBuild automatically includes the output objects of the CustomBuildStep
in the link command. If the objects are additionally added to the project,
they will be put twice on the linker command, which leads to LNK4042
warning.
2016-02-23 23:46:34 +01:00
Nicolas Schneider 2dcac38624 vs2010: write CustomBuildStep only if there is at least 1 command to be run 2016-02-23 22:55:13 +01:00
Nicolas Schneider ed6c0e1fa6 vs2010: merge all generators into single command invocation
MSBuild does not allow multiple CustomBuildStep elements. Therefore, all
input / output files and generator commands must be concatenated and put
into a single CustomBuildStep.
2016-02-23 01:04:27 +01:00
Nicolas Schneider d79f402769 vs2010: fix including a precompiled / generated object file in compilation
MSBuild uses the <Object Include='FILE'/> syntax to add prebuilt object
files to the project.
2016-02-23 01:04:27 +01:00
Nicolas Schneider c2e406295e vs2010: fix wrong generator command concatenation 2016-02-23 01:03:52 +01:00
Martin Ejdestig 47db4e3d53 Pass warning arguments to compiler even if buildtype is plain
Noticed when trying to pass custom optimization flags, and hence setting
buildtype to plain, that warnings for different levels were not passed to
compiler.

This was a bit confusing since mesonconf still displayed "warning_level=3"
and -Werror was passed correctly due to "werror=true". So this change
aligns warning_level behavior with werror. That is, heed what is in
project() in meson.build but user can still override if necessary.
2016-02-22 18:57:07 +01:00
Jussi Pakkanen 560d9d7375 Merge pull request #398 from nirbheek/target-link-implib
Re-introduce patch to fix linking with MSVC by linking with import library.
2016-02-21 13:25:51 +02:00
Nirbheek Chauhan 81544feffe Explicitly use the import library while generating link args for a target 2016-02-20 02:17:51 +05:30
Jussi Pakkanen 25e39f7fb1 A few win fixes. 2016-02-17 23:22:25 +02:00
Jussi Pakkanen aaf6075c89 Reverted implib patch as it broke mingw completely. 2016-02-17 23:09:39 +02:00
Nirbheek Chauhan deff35eef6 Filter out UNIX flags from external deps when using the MSVC compiler
This is very useful to prevent compiler noise about invalid cflags; particularly
for the -mms-bitfields cflag which most libraries send to the mingw-gcc
compiler. More can be added later.
2016-02-17 20:22:34 +02:00
Nirbheek Chauhan 440d73902d Explicitly use the import library while generating link args for a target 2016-02-17 20:13:24 +02:00
Nirbheek Chauhan e31b6e4a7b ninjabackend: Try symlinking and ignore if it doesn't work
Instead of checking if we're on Windows and not even trying, try to symlink and
if that fails due to insufficient privileges, then just continue. This allows
people who know what they're doing to allow users other than Administrators to
make symlinks on Windows, or allows them to just run Meson as an Administrator.
2016-02-17 20:01:31 +02:00
Nirbheek Chauhan 8bd0f432a0 backends: Clarify the reason behind a grotesque hack 2016-02-17 15:03:54 +05:30
Jussi Pakkanen 4b3c43649e Put internal include dirs at the beginning so they override ones coming from the system. Closes #372. 2016-02-01 21:42:00 +11:00
Jussi Pakkanen 9496637a70 Removed need to call check_outputs manually so you can not forget to do it. 2016-01-30 15:52:32 +02:00
Jussi Pakkanen 7435df8399 Moved backends to their own module. 2016-01-23 20:02:52 +02:00