Fossil

Check-in [d3252d74]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Started the process of modifying the build system to permit more flexible and reliable cross-platform support. Currently the build system is set up for Linux (GCC or CLANG as the compiler) and for MinGW32 (GCC as the compiler). Of these, only the Linux builds have been tested so far and confirmed to work as expected. The way to use this new system is as follows:
make

Builds the default platform and compiler (linux and gcc).

PLATFORM=mingw32 make

Builds the mingw32 build (untested!) using the default compiler (gcc).

COMPILER=clang make

Builds the default platform (linux) using the clang compiler.

Other platform and compiler fragment files can be added in the ./make directory based on the models already there.

Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | newbuild | ttmrichter
Files: files | file ages | folders
SHA1:d3252d7488f229438cea881d99a8bac0e05251f3
User & Date: michael 2010-07-09 16:23:38
Context
2010-07-09
16:25
Merged main trunk into private branch. check-in: 1c28a41c user: michael tags: newbuild, ttmrichter
16:23
Started the process of modifying the build system to permit more flexible and reliable cross-platform support. Currently the build system is set up for Linux (GCC or CLANG as the compiler) and for MinGW32 (GCC as the compiler). Of these, only the Linux builds have been tested so far and confirmed to work as expected. The way to use this new system is as follows:
make

Builds the default platform and compiler (linux and gcc).

PLATFORM=mingw32 make

Builds the mingw32 build (untested!) using the default compiler (gcc).

COMPILER=clang make

Builds the default platform (linux) using the clang compiler.

Other platform and compiler fragment files can be added in the ./make directory based on the models already there. check-in: d3252d74 user: michael tags: newbuild, ttmrichter

2010-07-07
07:44
Update private branch to latest trunk. check-in: a87fbd33 user: michael tags: ttmrichter
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to Makefile.

1
2




















3
4
5
6
7
8
9
10
11

12
13
14
15
16
17
18
19
20
21

22
23
24

25

26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57

58
59
60
61
62
63

#!/usr/bin/make
#




















#### The toplevel directory of the source tree.  Fossil can be built
#    in a directory that is separate from the source tree.  Just change
#    the following to point from the build directory to the src/ folder.
#
SRCDIR = ./src

#### The directory into which object code files should be written.
#
#

OBJDIR = ./obj

#### C Compiler and options for use in building executables that
#    will run on the platform that is doing the build.  This is used
#    to compile code-generator programs as part of the build process.
#    See TCC below for the C compiler for building the finished binary.
#
#BCC = gcc -g -O2
BCC = clang -g -O2


#### The suffix to add to executable files.  ".exe" for windows.
#    Nothing for unix.
#

E =


#### C Compile and options for use in building executables that 
#    will run on the target platform.  This is usually the same
#    as BCC, unless you are cross-compiling.  This C compiler builds
#    the finished binary for fossil.  The BCC compiler above is used
#    for building intermediate code-generator tools.
#
#TCC = gcc -O6
#TCC = gcc -g -O0 -Wall -fprofile-arcs -ftest-coverage
#TCC = gcc -g -Os -Wall
TCC = clang -g -Os -Wall

# To add support for HTTPS
TCC += -DFOSSIL_ENABLE_SSL

#### Extra arguments for linking the finished binary.  Fossil needs
#    to link against the Z-Lib compression library.  There are no
#    other dependencies.  We sometimes add the -static option here
#    so that we can build a static executable that will run in a
#    chroot jail.
#
LIB = -lz $(LDFLAGS)
# If you're on OpenSolaris:
# LIB += lsocket
# Solaris 10 needs:
# LIB += -lsocket -lnsl
# My assumption is that the Sol10 flags will work for Sol8/9 and possibly 11.
# 
# If using HTTPS:
LIB += -lcrypto -lssl

#### Tcl shell for use in running the fossil testsuite.

#
TCLSH = tclsh

# You should not need to change anything below this line
###############################################################################
include $(SRCDIR)/main.mk



>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>






|

<
>
|

|
|
|
|
|
|
|
<
>
|
<
|
>
|
>
|
<
|
|
|
|
|
<
<
<
<
<
<
<
<
<
<
<
<
<
|
<
<
<
<
<
<
|
<
<
<
<
>






>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

31
32
33
34
35
36
37
38
39
40

41
42

43
44
45
46
47

48
49
50
51
52













53






54




55
56
57
58
59
60
61
62
#!/usr/bin/make
#
#### The directory in which Makefile fragments are stored.
#
MAKEDIR = ./make

#### Set up our compiler if it hasn't already been defined.

ifndef COMPILER
  COMPILER = gcc
endif

#### Set up our platform if it hasn't already been defined.
#
ifndef PLATFORM
  # We default to Linux.
  # TODO: Figure out how to reliably identify the platform from Make.  Sadly the
  #       OSTYPE environment variable isn't carried through into GNU Make, so we
  #       can't do this the obvious way.
  PLATFORM = linux
endif

#### The toplevel directory of the source tree.  Fossil can be built
#    in a directory that is separate from the source tree.  Just change
#    the following to point from the build directory to the src/ folder.
#
SRCDIR = ./src

#### Include the fragments we need from our specific environment.
#

include $(MAKEDIR)/$(PLATFORM)-fragment.mk
include $(MAKEDIR)/$(COMPILER)-fragment.mk

#### Include a locale-specific configuration make fragment if present.
#    Any modification to the platforms' generic setups should be made in this
#    file where possible.
-include config.mk

#### The following section beginning after #+++ and ending before #--- is used
#    inside the $(PLATFORM)-fragment.mk files to turn on the features required

#    or desired by builds on that platform.  They are replicated here for
#    documentation purposes only and should not be set in this file.

#+++
#### The following variable definitions decide which features are turned on or
#    of when building Fossil.  Comment out the features which are not needed by
#    this platform.
#

#ENABLE_STATIC = 1	# we want a static build
#ENABLE_SSL = 1		# we are using SSL
#ENABLE_SOCKET = 1	# we are using libsocket (OpenSolaris and Solaris)
#ENABLE_NSL = 1		# we are using libnsl library (Solaris)
#ENABLE_I18N = 1	# we are using i18n settings













#---











#### The Tcl shell to run for test suites.
#
TCLSH = tclsh

# You should not need to change anything below this line
###############################################################################
include $(SRCDIR)/main.mk

Deleted Makefile.w32.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/usr/bin/make
#
#### The toplevel directory of the source tree.  Fossil can be built
#    in a directory that is separate from the source tree.  Just change
#    the following to point from the build directory to the src/ folder.
#
SRCDIR = ./src
OBJDIR = ./wobj

#### C Compiler and options for use in building executables that
#    will run on the platform that is doing the build.  This is used
#    to compile code-generator programs as part of the build process.
#    See TCC below for the C compiler for building the finished binary.
#
BCC = gcc -g -O2

#### The suffix to add to executable files.  ".exe" for windows.
#    Nothing for unix.
#
E = .exe

#### Enable HTTPS support via OpenSSL (links to libssl and libcrypto)
#
# FOSSIL_ENABLE_SSL=1

#### Enable HTTPS support via OpenSSL (links to libssl and libcrypto)
#
# FOSSIL_ENABLE_SSL=1

#### C Compile and options for use in building executables that 
#    will run on the target platform.  This is usually the same
#    as BCC, unless you are cross-compiling.  This C compiler builds
#    the finished binary for fossil.  The BCC compiler above is used
#    for building intermediate code-generator tools.
#
#TCC = gcc -O6
#TCC = gcc -g -O0 -Wall -fprofile-arcs -ftest-coverage
#TCC = gcc -g -Os -Wall
#TCC = gcc -g -Os -Wall -DFOSSIL_I18N=0 -L/usr/local/lib -I/usr/local/include
TCC = gcc -Os -Wall -DFOSSIL_I18N=0 -L/mingw/lib -I/mingw/include

# With HTTPS support
ifdef FOSSIL_ENABLE_SSL
TCC += -DFOSSIL_ENABLE_SSL=1
endif

#### Extra arguments for linking the finished binary.  Fossil needs
#    to link against the Z-Lib compression library.  There are no
#    other dependencies.  We sometimes add the -static option here
#    so that we can build a static executable that will run in a
#    chroot jail.
#
#LIB = -lz
#LIB = -lz -lws2_32
LIB = -lmingwex -lz -lws2_32
# OpenSSL:
ifdef FOSSIL_ENABLE_SSL
LIB += -lcrypto -lssl
endif

#### Tcl shell for use in running the fossil testsuite.
#
TCLSH = tclsh

#### Include a configuration file that can override any one of these settings.
#
-include config.w32

# You should not need to change anything below this line
###############################################################################
include $(SRCDIR)/main.mk
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<














































































































































Added make/clang-fragment.mk.











































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#### C Compiler and options for use in building executables that
#    will run on the platform that is doing the build.  This is used
#    to compile code-generator programs as part of the build process.
#    See TCC below for the C compiler for building the finished binary.
#
BCC = clang -g -O2

#### C Compile and options for use in building executables that
#    will run on the target platform.  This is usually the same
#    as BCC, unless you are cross-compiling.  This C compiler builds
#    the finished binary for fossil.  The BCC compiler above is used
#    for building intermediate code-generator tools.
#
TCC = clang -g -Os -Wall

#### Compiler options.
#    The variables tested are defined in the make/PLATFORM-fragment.mk files.
#
ifdef ENABLE_SSL
  TCC += -DFOSSIL_ENABLE_SSL=1
endif
ifndef ENABLE_I18N
  TCC += -DFOSSIL_I18N=0
endif
ifdef PLATFORM_SPECIFIC_CLANG
  TCC += $(PLATFORM_SPECIFIC_CLANG)
endif

#### Linker dependencies.  Fossil only requires libz as an external dependency.
#    All other library settings are optional and toggled in platform-specific
#    make fragments.
#
LIB = -lz $(LDFLAGS)

#### Linker options.
#    The variables tested are defined in the make/PLATFORM-fragment.mk files.
#
ifdef ENABLE_STATIC
  LIB += -static
endif
ifdef ENABLE_SSL
  LIB += -lcrypto -lssl
endif
ifdef ENABLE_SOCKET
  LIB += -lsocket
endif
ifdef ENABLE_NSL
  LIB += -lnsl
endif
ifdef PLATFORM_SPECIFIC_LIB
  TCC += $(PLATFORM_SPECIFIC_LIB)
endif

Added make/gcc-fragment.mk.











































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#### C Compiler and options for use in building executables that
#    will run on the platform that is doing the build.  This is used
#    to compile code-generator programs as part of the build process.
#    See TCC below for the C compiler for building the finished binary.
#
BCC = gcc -g -O2

#### C Compile and options for use in building executables that
#    will run on the target platform.  This is usually the same
#    as BCC, unless you are cross-compiling.  This C compiler builds
#    the finished binary for fossil.  The BCC compiler above is used
#    for building intermediate code-generator tools.
#
TCC = gcc -g -Os -Wall

#### Compiler options.
#    The variables tested are defined in the make/PLATFORM-fragment.mk files.
#
ifdef ENABLE_SSL
  TCC += -DFOSSIL_ENABLE_SSL=1
endif
ifndef ENABLE_I18N
  TCC += -DFOSSIL_I18N=0
endif
ifdef PLATFORM_SPECIFIC_GCC
  TCC += $(PLATFORM_SPECIFIC_GCC)
endif

#### Linker dependencies.  Fossil only requires libz as an external dependency.
#    All other library settings are optional and toggled in platform-specific
#    make fragments.
#
LIB = -lz $(LDFLAGS)

#### Linker options.
#    The variables tested are defined in the make/PLATFORM-fragment.mk files.
#
ifdef ENABLE_STATIC
  LIB += -static
endif
ifdef ENABLE_SSL
  LIB += -lcrypto -lssl
endif
ifdef ENABLE_SOCKET
  LIB += -lsocket
endif
ifdef ENABLE_NSL
  LIB += -lnsl
endif
ifdef PLATFORM_SPECIFIC_LIB
  TCC += $(PLATFORM_SPECIFIC_LIB)
endif

Added make/linux-fragment.mk.

































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#### The suffix to add to executable files.  ".exe" for windows.
#    Nothing for unix.
#
E =

#### The directory into which object code files should be written.
#
OBJDIR = ./obj

#### The following variable definitions decide which features are turned on or
#    of when building Fossil.  Comment out the features which are not needed by
#    this platform.
#
ENABLE_SSL = 1		# we are using SSL
ENABLE_I18N = 1		# we are using i18n features

Added make/ming32-fragment.mk.

























































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#### The suffix to add to executable files.
#
E = .exe

#### The directory into which object code files should be written.
#
OBJDIR = ./wobj

#### The following variable definitions decide which features are turned on or
#    of when building Fossil.  Comment out the features which are not needed by
#    this platform.
#
ENABLE_STATIC = 1	# we want a static build

#### The following features must be added to the GCC and LD builds respectively.
#
ifndef MING32_GCC
PLATFORM_SPECIFIC_GCC = -L/mingw/lib -I/mingw/include
else
PLATFORM_SPECIFIC_GCC = $(MING32_GCC)
endif

ifndef MING32_LIB
PLATFORM_SPECIFIC_LIB = -lmingwex -lws2_32
else
PLATFORM_SPECIFIC_LIB = $(MING32_LIB)
endif