[Unison-hackers] [unison-svn] r328 - in trunk: . src src/uimacnew/uimacnew.xcodeproj tools
Benjamin C. Pierce
bcpierce at seas.upenn.edu
Tue May 5 13:06:30 EDT 2009
Author: bcpierce
Date: 2009-05-05 13:06:29 -0400 (Tue, 05 May 2009)
New Revision: 328
Modified:
trunk/Makefile
trunk/src/Makefile
trunk/src/Makefile.OCaml
trunk/src/RECENTNEWS
trunk/src/mkProjectInfo.ml
trunk/src/uimacnew/uimacnew.xcodeproj/project.pbxproj
trunk/tools/Makefile
Log:
* Incorporate Makefile improvements from Martin von Gagern
Modified: trunk/Makefile
===================================================================
--- trunk/Makefile 2009-05-05 12:41:35 UTC (rev 327)
+++ trunk/Makefile 2009-05-05 17:06:29 UTC (rev 328)
@@ -13,10 +13,10 @@
-include src/Makefile.ProjectInfo
src/Makefile.ProjectInfo: src/mkProjectInfo
- src/mkProjectInfo > $@
+ $(MAKE) -C src Makefile.ProjectInfo
src/mkProjectInfo: src/mkProjectInfo.ml
- ocamlc -o $@ $^
+ $(MAKE) -C src mkProjectInfo
docs:
$(MAKE) -C src UISTYLE=text
Modified: trunk/src/Makefile
===================================================================
--- trunk/src/Makefile 2009-05-05 12:41:35 UTC (rev 327)
+++ trunk/src/Makefile 2009-05-05 17:06:29 UTC (rev 328)
@@ -37,6 +37,16 @@
all:: INSTALL
+.PHONY: all clean install doinstall installtext text \
+ setupdemo-old setupdemo modifydemo demo \
+ run runbatch runt rundebug runp runtext runsort runprefer \
+ prefsdocs runtest repeattest \
+ selftest selftestdebug selftestremote testmerge \
+ checkin installremote
+
+.DELETE_ON_ERROR:
+# to avoid problems when e.g. mkProjectInfo fails to run
+
INSTALL: $(NAME)$(EXEC_EXT)
# file isn't made for OS X, so check that it's there first
(if [ -f $(NAME) ]; then ./$(NAME) -doc install > INSTALLATION; fi)
@@ -50,11 +60,11 @@
# NAME, VERSION, and MAJORVERSION, automatically generated
-include Makefile.ProjectInfo
-Makefile.ProjectInfo: mkProjectInfo
+Makefile.ProjectInfo: mkProjectInfo $(wildcard ../.bzr/branch/last-revision)
./mkProjectInfo > $@
mkProjectInfo: mkProjectInfo.ml
- ocamlc -o $@ $^
+ ocamlc -o $@ unix.cma str.cma $^
clean::
$(RM) mkProjectInfo
Modified: trunk/src/Makefile.OCaml
===================================================================
--- trunk/src/Makefile.OCaml 2009-05-05 12:41:35 UTC (rev 327)
+++ trunk/src/Makefile.OCaml 2009-05-05 17:06:29 UTC (rev 328)
@@ -125,6 +125,7 @@
endif
endif
+.PHONY: buildexecutable
buildexecutable::
@echo NATIVE = $(NATIVE)
@echo THREADS = $(THREADS)
@@ -132,7 +133,7 @@
@echo OSTYPE = $(OSTYPE)
@echo OSARCH = $(OSARCH)
-ubase/projectInfo.ml: mkProjectInfo
+ubase/projectInfo.ml: Makefile.ProjectInfo
echo 'let myName = "'$(NAME)'";;' > $@
echo 'let myVersion = "'$(VERSION)'";;' >> $@
echo 'let myMajorVersion = "'$(MAJORVERSION)'";;' >> $@
@@ -160,6 +161,7 @@
# NOTE: the OCAMLLIBDIR is not getting passed correctly?
# The two cases for cltool are needed because Xcode 2.1+
# builds in build/Default/, and earlier versions use build/
+.PHONY: macexecutable
macexecutable: $(NAME)-blob.o
# sed -e's/@@VERSION@@/$(VERSION)/' $(UIMACDIR)/Info.plist.template > $(UIMACDIR)/Info.plist
(cd $(UIMACDIR); xcodebuild OCAMLLIBDIR="$(OCAMLLIBDIR)" SYMROOT=build)
@@ -388,6 +390,7 @@
-$(RM) -r *.obj *.lib *.exp
-$(RM) -r *.tmp *.bak?.tmp .*.bak?.tmp
+.PHONY: paths
paths:
@echo PATH = $(PATH)
@echo OCAMLLIBDIR = $(OCAMLLIBDIR)
Modified: trunk/src/RECENTNEWS
===================================================================
--- trunk/src/RECENTNEWS 2009-05-05 12:41:35 UTC (rev 327)
+++ trunk/src/RECENTNEWS 2009-05-05 17:06:29 UTC (rev 328)
@@ -1,3 +1,8 @@
+CHANGES FROM VERSION 2.33.2
+
+* Incorporate Makefile improvements from Martin von Gagern
+
+-------------------------------
CHANGES FROM VERSION 2.33.1
* Incorporate recent change from 2.32 branch.
Modified: trunk/src/mkProjectInfo.ml
===================================================================
--- trunk/src/mkProjectInfo.ml 2009-05-05 12:41:35 UTC (rev 327)
+++ trunk/src/mkProjectInfo.ml 2009-05-05 17:06:29 UTC (rev 328)
@@ -42,10 +42,47 @@
(* ---------------------------------------------------------------------- *)
(* You shouldn't need to edit below. *)
-let revisionString = "$Rev$";;
-let revision = Scanf.sscanf revisionString "$Rev: %d " (fun x -> x);;
-let pointVersion = revision - pointVersionOrigin;;
+(* run the bzr tool to get version information for bzr branches *)
+exception BzrException of Unix.process_status;;
+let bzr args =
+ let bzr = (try Sys.getenv "BZR" with Not_found -> "bzr") in
+ let cmd = bzr ^ " " ^ args in
+ let inc = Unix.open_process_in cmd in
+ let buf = Buffer.create 16 in
+ (try
+ while true do
+ Buffer.add_channel buf inc 1
+ done
+ with End_of_file -> ());
+ let status = Unix.close_process_in inc in
+ match status with
+ Unix.WEXITED 0 -> Buffer.contents buf
+ | _ -> raise (BzrException status);;
+(* extract a substring using a regular expression *)
+let extract_str re str =
+ let _ = Str.search_forward (Str.regexp re) str 0 in
+ Str.matched_group 1 str;;
+let extract_int re str = int_of_string (extract_str re str);;
+
+let revisionString = "$Rev: 327$";;
+let pointVersion = if String.length revisionString > 5
+then Scanf.sscanf revisionString "$Rev: %d " (fun x -> x) - pointVersionOrigin
+else (* Determining the pointVersionOrigin in bzr is kind of tricky:
+ - The mentioned revision number might not be part of this branch
+ - The mentioned revision number might be rhs of some merge
+ - The bzr-svn plugin might be outdated or not installed at all
+
+ On the whole, getting this to work seems too much effort for now.
+ So we'll simply use the revno as is as the point version,
+ and revisit offsetting them if unison should ever move its trunk to bzr.
+
+ let pvo = extract_int "^revno:[ \t]*\\([0-9]+\\)[ \t]*$"
+ (bzr ("log -r svn:" ^
+ string_of_int pointVersionOrigin)) in
+ *)
+ extract_int "^\\([0-9]+\\)$" (bzr "revno") (* - pvo *);;
+
Printf.printf "MAJORVERSION=%d.%d\n" majorVersion minorVersion;;
Printf.printf "VERSION=%d.%d.%d\n" majorVersion minorVersion pointVersion;;
Printf.printf "NAME=%s\n" projectName;;
@@ -107,3 +144,4 @@
+
Modified: trunk/src/uimacnew/uimacnew.xcodeproj/project.pbxproj
===================================================================
--- trunk/src/uimacnew/uimacnew.xcodeproj/project.pbxproj 2009-05-05 12:41:35 UTC (rev 327)
+++ trunk/src/uimacnew/uimacnew.xcodeproj/project.pbxproj 2009-05-05 17:06:29 UTC (rev 328)
@@ -461,7 +461,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "if [ -x /usr/libexec/path_helper ]; then\n eval `/usr/libexec/path_helper -s`\nfi\nif [ ! -x ${PROJECT_DIR}/../Makefile.ProjectInfo ]; then\n if [ ! -x ${PROJECT_DIR}/../mkProjectInfo ]; then\n cd ${PROJECT_DIR}/..; ocamlc -o mkProjectInfo mkProjectInfo.ml\n fi\n cd ${PROJECT_DIR}/..; ./mkProjectInfo > Makefile.ProjectInfo\nfi\nOCAMLLIBDIR=`ocamlc -v | tail -n -1 | sed -e 's/.* //g' | sed -e 's/\\\\\\/\\\\//g' | tr -d '\\r'`\nsource ${PROJECT_DIR}/../Makefile.ProjectInfo\necho MARKETING_VERSION = $VERSION > ${PROJECT_DIR}/ExternalSettings.xcconfig\necho OCAMLLIBDIR = $OCAMLLIBDIR >> ${PROJECT_DIR}/ExternalSettings.xcconfig";
+ shellScript = "if [ -x /usr/libexec/path_helper ]; then\n eval `/usr/libexec/path_helper -s`\nfi\nif [ ! -x ${PROJECT_DIR}/../Makefile.ProjectInfo ]; then\n if [ ! -x ${PROJECT_DIR}/../mkProjectInfo ]; then\n cd ${PROJECT_DIR}/..; ocamlc -o mkProjectInfo unix.cma str.cma mkProjectInfo.ml\n fi\n cd ${PROJECT_DIR}/..; ./mkProjectInfo > Makefile.ProjectInfo\nfi\nOCAMLLIBDIR=`ocamlc -v | tail -n -1 | sed -e 's/.* //g' | sed -e 's/\\\\\\/\\\\//g' | tr -d '\\r'`\nsource ${PROJECT_DIR}/../Makefile.ProjectInfo\necho MARKETING_VERSION = $VERSION > ${PROJECT_DIR}/ExternalSettings.xcconfig\necho OCAMLLIBDIR = $OCAMLLIBDIR >> ${PROJECT_DIR}/ExternalSettings.xcconfig";
};
2E282CBA0D9AE17300439D01 /* Run Script (make unison-blob.o) */ = {
isa = PBXShellScriptBuildPhase;
Modified: trunk/tools/Makefile
===================================================================
--- trunk/tools/Makefile 2009-05-05 12:41:35 UTC (rev 327)
+++ trunk/tools/Makefile 2009-05-05 17:06:29 UTC (rev 328)
@@ -18,7 +18,7 @@
date | ./ask
../src/Makefile.ProjectInfo: ../src/mkProjectInfo
- ../src/mkProjectInfo > $@
+ $(MAKE) -C ../src Makefile.ProjectInfo
../src/mkProjectInfo: ../src/mkProjectInfo.ml
- ocamlc -o $@ $^
+ $(MAKE) -C ../src mkProjectInfo
More information about the Unison-hackers
mailing list