38 Commits

Author SHA1 Message Date
Allan Odgaard
19c2271434 Update ./configure script to write rudimentary ‘local.rave’ file
If user does not have dependencies in /usr/local then they must edit the file themselves.
2021-05-26 14:45:28 +02:00
Allan Odgaard
128d7ddca9 Update ./configure to use new build system 2021-02-15 16:01:50 +01:00
Allan Odgaard
4606fdefff Create default bundles archive in ninja file and store in build dir
Previously we would download and archive the default bundles as part of ./configure and place the result in our source directory, this however both pollutes the source directory with generated files, but also had the ./configure step actually do a partial build, since we need to build the ‘bl’ executable to download bundles.
2021-01-16 19:14:22 +01:00
Allan Odgaard
e06109a3b5 Remove dependency on libressl 2020-12-28 10:24:04 +01:00
Allan Odgaard
3cf526fe34 Do not make software update fixtures in ./configure file
These fixtures were removed in cfb523e713
2020-09-18 09:27:18 +02:00
Allan Odgaard
51b5c992bd Remove unused test flags from configure script 2019-06-26 23:32:54 +02:00
Allan Odgaard
92f4a91cca Remove required OS version as a ./configure option
The code is written with a certain OS target in mind, so it makes sense to have this explicitly stated.
2019-06-26 23:32:54 +02:00
Allan Odgaard
9f6781ec3f Get rid of the APP_NAME variable 2019-06-26 23:32:54 +02:00
Allan Odgaard
412e6798ca Update build generator script
This changes a bunch of things:

1. Each framework now creates its own include directory for exported headers, and any target linking with this framework, gets that directory added to its include search path. This ensures deterministic behavior, unlike previously where a single shared directory was used, so even if target A did not explicitly link with target B, there was a reasonable chance that target B’s headers would be available when target A was built.

2. There is a new IMPORT keyword to indicate that a target depends on the headers of another framework but does not want to link with it. For example the `commit` shell command imports headers from the CommitWindow framework (related to their communications protocol) but linking with the CommitWindow framework would not be practical (as that would bring in all the resources of the CommitWindow).

3. All embedded targets are signed before being copied to their destination.

4. A new CS_ENTITLEMENTS keyword allows specifying `codesign` entitlements. Currently the hardened runtime is enabled, although this does make development problematic, as modifying files of a running instance (as done during rebuild) can cause TextMate to crash with EXC_BAD_ACCESS (Code Signature Invalid). Worse though, it seems the system has a cache of blacklisted executables indexed by inode. So if e.g. the embedded `mate` executable gets blacklisted, one has to manually remove and rebuild it, before it gets possible to use it again (by default, rebuilding causes the inode to be re-used, but I may change the build system to unlink before copy).

5. The build file no longer contains rules related to deployment. Instead variables are declared that a user build file can reference to extend the build with notarization/deployment rules (without having to hardcode build directory paths).

6. The code has been made modular with a Compiler super class that is subclassed to add support for file transformations (xib, ragel, asset catalogs, etc.) and a transformed file can have its own settings.

7. If target A links with target B, the linker flags of target B will now be included when linking target A.

8. Currently no indexing of help books. Unsure if this is actually useful.

9. Previously it was possible to have umbrella targets that would not generate any output, but just change settings for their sub-targets. This is no longer supported, as the implementation was arcane. I would like to introduce a different system for managing sectioned settings. Related to this; settings in target files are now always merged, regardless of whether using ‘=’ or ‘+=’.
2019-06-26 23:32:19 +02:00
Allan Odgaard
7b2ef3d616 Bump minimum OS to 10.10 2018-10-28 00:28:02 +07:00
Ronald Wampler
fb2775b0a3 Set minimum OS to 10.9 2017-05-31 10:03:40 +02:00
Allan Odgaard
e2be8a104d Set minimum OS to 10.8
You need to re-run ./configure or edit $builddir/build.ninja before this has effect.
2016-06-22 20:43:28 +02:00
Allan Odgaard
0a9c70e7cb Fix bad indent (was using spaces instead of tabs) 2016-05-17 10:59:15 +02:00
Martin Kühl
597a49015d Run tests synchronously by default
Running tests in parallel (which is the default)
results in spurious failures in the `scm` git tests,
probably due to an undiagnosed race condition.

This change lets tests run serially by default,
but provides a flag `-p` (or `--parallel`)
which enables running them in parallel again.

It also adds a variable `test_flags`
which is passed to each test run,
and which can be set by running

    env test="-v" ./configure
2016-01-15 12:07:16 +01:00
Ronald Wampler
5bbcf42487 Require LibreSSL instead of relying on the system provided openssl
Apple deprecated `openssl` in 10.7 and the headers are now removed in 10.11. Since we use some low level functions that are not provided in Apple's crypto frameworks, we now require are own version.
2015-10-03 17:33:21 +07:00
Joachim Mårtensson
71960834ba Setup Google's sparsehash library for use 2015-05-09 21:24:38 +02:00
Allan Odgaard
f16e83fb4f Get rid of APP_REVISION
This was just mirroring the last part of our version number so redundant and it wasn’t monotonically increasing as we switched from alpha.n → beta.1 (with n > 1), so it probably did more harm than good.
2014-10-30 20:49:10 +01:00
Allan Odgaard
9aeb528d4c Update alpha status to beta
Also add links to FAQ and hidden settings from the about page.
2014-10-16 15:18:14 +02:00
Allan Odgaard
461915cb34 Don’t perform checks to see if user’s compiler is good enough
The codebase no longer require a cutting edge compiler so we simply use clang via xcrun.
2014-09-05 14:31:05 +02:00
Allan Odgaard
e13ec4dc18 Call developer shell tools via xcrun instead of using $xcodedir 2014-09-05 14:31:05 +02:00
Allan Odgaard
ac9f64ed4a Do not specify SDK version as using ‘latest’ is generally desired
If we need to build with a specific version we can include it in CC/CXX using the --sdk argument.
2014-09-05 14:31:05 +02:00
Allan Odgaard
3bc0c65c7a Introduce variable for where cap’n’proto is installed
Set the `capnp_prefix` variable when calling ./configure.

E.g. build and install cap’n’proto in $HOME/build:

    ./configure --disable-shared --prefix="$HOME/build"
    make -j6 check && make install

Then configure TextMate to find it there:

    capnp_prefix="$HOME/build" ./configure
2014-03-30 11:18:41 +07:00
Allan Odgaard
9a6451da2c Create generated headers in configure script
Fixes #1136
2013-10-08 21:59:55 +02:00
Allan Odgaard
4909d2cf53 Remove last zero in version 2.0.0 → 2.0 2013-02-15 15:27:55 +01:00
Allan Odgaard
17bba51035 Include git commit and alpha tag in version string
This is primarily for better filtering of crash reports.
2012-09-19 00:11:11 +02:00
Allan Odgaard
2edbffcf29 Update configure script
1. Default SDK set to 10.8 (since we now use subscript operators).
3. Version is tagged (by default) with “-git”. Not too happy about this, but I need a way to filter out “build from source” when analyzing crashes and similar. I’ll revise the solution later.
2. Revision only taken from api.textmate.org (no git fallback).
4. Only multimarkdown is a valid markdown compiler (due to recent changes in `bin/gen_html`).
2012-08-30 10:17:13 +02:00
Allan Odgaard
8a5fb16367 Let configure create DefaultBundles.tbz
Motivated by a lot of “where is the syntax highlight?” questions from users that build from source, we now always create the DefaultBundles.tbz (if it doesn’t exist).
2012-08-16 11:46:15 +02:00
Adam Strzelecki
5fbf567820 When $builddir is relative path, pass absolute path to fixtures makefile. 2012-08-15 02:41:15 +02:00
Adam Strzelecki
4354febdbc Test all versions of clang for “new enough” 2012-08-15 01:18:39 +02:00
Cody Krieger
df84fa92d4 Set a blank SDK path if the 10.7 SDK isn't found.
This allows the project to build with the system default framework/include/library paths.
2012-08-13 19:36:20 +02:00
Clemens Lang
f29af22cff configure: exit with code != 0 on error
Using this allows other software to check whether configure was
successful.

This patch is public domain.
2012-08-12 22:26:59 +02:00
Fernando
a921f258e1 Don’t write to /tmp in configure
If another user (on the same system) builds TextMate then he blocks everyone else, as other users would be unable to overwrite /tmp/dummy.
2012-08-11 12:00:25 +02:00
David Caldwell
4ae46a5349 Also check for boost in $CPATH
This way it can be installed anywhere as long as the C compiler can find it.
2012-08-10 13:27:24 +02:00
Allan Odgaard
67c17d838b Move git clone + submodule update to README.
A few people were reporting build issues because they downloaded the source and thus lacked the submodules.
2012-08-10 11:01:32 +02:00
Allan Odgaard
a94ad3cc4c Also check brew for clang and boost dir.
We now prefer Apple’s clang over MacPorts/homebrew. This is because clang on Lion (with latest Xcode) should be recent enough to build TextMate.
2012-08-10 10:53:31 +02:00
Allan Odgaard
845bb96f5b Output full path to compiler used.
This should make it easier to troubleshoot when people report they have latest clang but get a “too old” failure, e.g. issue #45.
2012-08-10 10:05:23 +02:00
Allan Odgaard
767448f9e9 Use xcrun to locate Apple’s clang. 2012-08-09 19:30:21 +02:00
Allan Odgaard
9894969e67 Initial commit 2012-08-09 16:25:56 +02:00