Changes On Branch ben-safe-make
Not logged in

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

Changes In Branch ben-safe-make Excluding Merge-Ins

This is equivalent to a diff from 4adc11edb7 to 14d1e44957

2011-07-20
20:05
Fix the realclean target on windows makefiles to delete mkversion.exe not version.exe. Ticket [5947ace466c571d] check-in: 3ade77897f user: drh tags: trunk
09:09
Only allow the default Makefile to build fossil on platforms where it's known to work. Update the build documentation to tell the user to use the GNUmakefile explicitly, to avoid accidently building using the default makefile on non-GNU platforms. Closed-Leaf check-in: 14d1e44957 user: ben tags: ben-safe-make
2011-07-19
23:44
Update the built-in SQLite to the latest 3.7.8 alpha, for the purpose of testing SQLite. check-in: 4adc11edb7 user: drh tags: trunk
23:29
Allow the root of a check-out to be in the root of the filesystem. Ticket [675f36eac4902cf] check-in: b317471d8c user: drh tags: trunk

Changes to BUILD.txt.

     2      2   
     3      3      make
     4      4   
     5      5   If you have an unusual unix system for which the standard Makefile
     6      6   will not work, or if you want to do some non-standard options, you can
     7      7   also run:
     8      8   
     9         -   ./configure; make
            9  +   ./configure; make -f GNUmakefile
    10     10   
    11     11   The ./configure script builds GNUmakefile which will be used in place
    12     12   of Makefile.  Run "./configure --help" for a listing of the available
    13     13   options.
           14  +
           15  +You must explicitly specify that make should use GNUmakefile in case
           16  +your platform does not use GNU make.
    14     17   
    15     18   On a windows box, use one of the Makefiles in the win/ subdirectory,
    16     19   according to your compiler and environment.  If you have GCC and MSYS
    17     20   installed on your system, the consider:
    18     21   
    19     22      make -f win/Makefile.mingw
    20     23   

Changes to GNUmakefile.in.

    35     35   TCLSH = tclsh
    36     36   
    37     37   LIB =	@LDFLAGS@ @EXTRA_LDFLAGS@ @LIBS@
    38     38   TCC +=	@EXTRA_CFLAGS@ @CPPFLAGS@ @CFLAGS@ -DHAVE_AUTOCONFIG_H
    39     39   INSTALLDIR = $(DESTDIR)@prefix@/bin
    40     40   USE_SYSTEM_SQLITE = @USE_SYSTEM_SQLITE@
    41     41   
           42  +# Disable the platform check
           43  +PLATFORM_CHECK_KIND = disable
           44  +
    42     45   include $(SRCDIR)/main.mk
    43     46   
    44     47   distclean: clean
    45     48   	rm -f autoconfig.h config.log GNUmakefile

Changes to Makefile.

    68     68   
    69     69   TCC.DragonFly += -DUSE_PREAD
    70     70   TCC.FreeBSD += -DUSE_PREAD
    71     71   TCC.NetBSD += -DUSE_PREAD
    72     72   TCC.OpenBSD += -DUSE_PREAD
    73     73   TCC += $(TCC.$(HOST_OS))
    74     74   
           75  +# Platform check
           76  +PLATFORM_CHECK_KIND = Makefile
           77  +
    75     78   include $(SRCDIR)/main.mk

Added src/check-platform.sh.

            1  +#!/bin/sh
            2  +
            3  +# This script checks that the default makefile is only used on platforms where it is
            4  +# positively known to work.
            5  +#
            6  +# Building on other platforms can result in subtly broken binaries.
            7  +
            8  +HOST_OS=`uname -s`
            9  +
           10  +# Check host OS, or whether this check has been disabled because we're running through
           11  +# the autosetup GNUmakefile.
           12  +if [ $HOST_OS == Linux ] || [ $HOST_OS == Darwin ] || [ X$1 == Xdisable ]
           13  +then
           14  +    touch bld/checked-platform.$1
           15  +else
           16  +    echo
           17  +    echo The default Makefile cannot be used on this platform.
           18  +    echo
           19  +    echo Use
           20  +    echo
           21  +    echo "   ./configure; make -f GNUmakefile"
           22  +    echo
           23  +    echo to build fossil.
           24  +    echo
           25  +    exit 1
           26  +fi

Changes to src/main.mk.

   301    301   # using -lsqlite3.
   302    302   SQLITE3_OBJ.1 = 
   303    303   SQLITE3_OBJ.0 = $(OBJDIR)/sqlite3.o
   304    304   SQLITE3_OBJ.  = $(SQLITE3_OBJ.0)
   305    305   
   306    306   EXTRAOBJ =  $(SQLITE3_OBJ.$(USE_SYSTEM_SQLITE))  $(OBJDIR)/shell.o  $(OBJDIR)/th.o  $(OBJDIR)/th_lang.o
   307    307   
   308         -$(APPNAME):	$(OBJDIR)/headers $(OBJ) $(EXTRAOBJ)
          308  +$(OBJDIR)/checked-platform.$(PLATFORM_CHECK_KIND):	$(SRCDIR)/check-platform.sh
          309  +	sh $(SRCDIR)/check-platform.sh $(PLATFORM_CHECK_KIND)
          310  +
          311  +$(APPNAME):	$(OBJDIR)/checked-platform.$(PLATFORM_CHECK_KIND) $(OBJDIR)/headers $(OBJ) $(EXTRAOBJ)
   309    312   	$(TCC) -o $(APPNAME) $(OBJ) $(EXTRAOBJ) $(LIB)
   310    313   
   311    314   # This rule prevents make from using its default rules to try build
   312    315   # an executable named "manifest" out of the file named "manifest.c"
   313    316   #
   314    317   $(SRCDIR)/../manifest:	
   315    318   	# noop

Changes to src/makemake.tcl.

   202    202   
   203    203   EXTRAOBJ = \
   204    204     $(SQLITE3_OBJ.$(USE_SYSTEM_SQLITE)) \
   205    205     $(OBJDIR)/shell.o \
   206    206     $(OBJDIR)/th.o \
   207    207     $(OBJDIR)/th_lang.o
   208    208   
   209         -$(APPNAME):	$(OBJDIR)/headers $(OBJ) $(EXTRAOBJ)
          209  +$(OBJDIR)/checked-platform.$(PLATFORM_CHECK_KIND):	$(SRCDIR)/check-platform.sh
          210  +	sh $(SRCDIR)/check-platform.sh $(PLATFORM_CHECK_KIND)
          211  +
          212  +$(APPNAME):	$(OBJDIR)/checked-platform.$(PLATFORM_CHECK_KIND) $(OBJDIR)/headers $(OBJ) $(EXTRAOBJ)
   210    213   	$(TCC) -o $(APPNAME) $(OBJ) $(EXTRAOBJ) $(LIB)
   211    214   
   212    215   # This rule prevents make from using its default rules to try build
   213    216   # an executable named "manifest" out of the file named "manifest.c"
   214    217   #
   215    218   $(SRCDIR)/../manifest:	
   216    219   	# noop