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