1## Process this file with automake to produce Makefile.in 2# These are made, in order presented, from the toplevel make 3SUBDIRS = libdieharder dieharder include 4 5# These are automagically included in the make dist rule. I 6# do believe that I'm going to have to eliminate my own version 7# of this below. Sigh. Time to actually learn to use the GBT 8# properly, I suppose. 9# EXTRA_DIST = autogen.sh dieharder-config.in configure.ac \ 10# THANKS BUGS SUPPORT dieharder.spec.in dieharder.m4 test_dieharder.sh 11EXTRA_DIST = autogen.sh set_ld_library_path Copyright 12 13#======================================================================== 14# This is the toplevel Makefile for the dieharder project. It has 15# some specialized targets: 16# 17# make alone should build the entire application as usual 18# make install should install it. Use configure --prefix= to specify 19# a toplevel path other than the default /usr. 20# 21# make tgz makes $(TGZ) of entire tree for standalone or rpm build 22# make rpm makes $(RPM) packages built by dieharder.spec 23# 24#======================================================================== 25# These are targets just for me to facilitate project management. 26#======================================================================== 27# make svn does a svn commit and creates the timestamp $(SVNTIME) 28# make sync does a svn commit and syncs to list of svn-tree hosts 29# make installweb installs to project website for download 30# make installrepo installs to yum repo 31# 32#======================================================================== 33PROJECT = dieharder 34LIBRARY = libdieharder 35LIBTIME = libwulf.time 36INCTIME = include.time 37PROGRAM = dieharder 38PROGTIME = dieharder.time 39MANUAL = manual 40MANTIME = manual.time 41RDIEHARDER = RDieHarder 42 43#======================================================================== 44# Constructs used in project maintenance and installation. 45# 46# The destination on an ssh-accessible remote webserver $(WLOGIN), 47# used as: 48# $(HOME)/public_html/$(WDIR) 49#======================================================================== 50WLOGIN = ganesh.phy.duke.edu 51WDIR = General 52ABS = $(PROJECT).abs 53PHP = $(PROJECT).php 54 55 56#======================================================================== 57# This is revision information, automagically set from autoconf. The 58# actual version information is set ONLY in configure.ac 59#======================================================================== 60VERSION=@VERSION@ 61RELEASE=@RELEASE@ 62LITTLE_ENDIAN=@LITTLE_ENDIAN@ 63 64#======================================================================== 65# RPM/tarball target objects. We need rules for all of these. 66#======================================================================== 67PROJECTDIR = $(PROJECT)-$(VERSION) 68TAR = $(PROJECTDIR).tar 69TGZ = $(PROJECTDIR).tgz 70SPEC = $(PROJECT).spec 71 72#======================================================================== 73# List of variants one can make. all is the default. We always 74# presume the simplest of dependencies and remake if includes change 75# for example. 76#======================================================================== 77all: $(LIBTIME) $(PROGTIME) $(INCTIME) 78 79# This is not, actually, a particularly useful toplevel target. To 80# work correctly it also would require a full parsing of all 81# lower level dependencies. I'm leaving it in for the moment just 82# to have a default target at the toplevel that CAN be used to test. 83$(LIBTIME): 84 (cd $(LIBRARY); \ 85 make) 86 87$(INCTIME): 88 (cd include; \ 89 make) 90 91$(PROGTIME): 92 (cd $(PROGRAM); \ 93 make) 94 95$(ABS): Makefile 96 cat $(ABS) | \ 97 sed -e 's/^\(<center><H2>Version \)\(.*\)/\1$(VERSION)<\/H2><\/center>/' > /tmp/$(ABS).$$ 98 mv /tmp/$(ABS).$$ $(ABS) 99 100#======================================================================== 101# This is a required target for both its own sake and to support the 102# rpm build. It has to run unconditionally when called. Note that we 103# make PRECISELY what we need in terms of the source directories, 104# excluding all restricted material and irrelevant data. 105#======================================================================== 106tgz: Makefile COPYING Copyright NOTES README $(SPEC) $(ABS) $(PHP) 107 ( rm -rf $(TAR) $(TGZ) $(PROJECTDIR); \ 108 mkdir -p $(PROJECTDIR); \ 109 cd $(LIBRARY); \ 110 make clean; \ 111 cd ..; \ 112 cp -r $(LIBRARY) $(PROJECTDIR); \ 113 cd $(PROGRAM); \ 114 make clean; \ 115 cd ..; \ 116 cp -r $(PROGRAM) $(PROJECTDIR); \ 117 cd $(MANUAL); \ 118 make clean; \ 119 cd ..; \ 120 cp -r $(MANUAL) $(PROJECTDIR); \ 121 cp -r include $(PROJECTDIR); \ 122 cp -r m4 $(PROJECTDIR); \ 123 cp $(ABS) $(PROJECTDIR); \ 124 cp $(PHP) $(PROJECTDIR); \ 125 cp Makefile $(PROJECTDIR); \ 126 cp Makefile.am $(PROJECTDIR); \ 127 cp Makefile.in $(PROJECTDIR); \ 128 cp configure $(PROJECTDIR); \ 129 cp config.h.in $(PROJECTDIR); \ 130 cp $(SPEC).in $(PROJECTDIR); \ 131 cp dieharder_version.h.in $(PROJECTDIR); \ 132 cp dieharder.html.in $(PROJECTDIR); \ 133 cp dieharder-config.in $(PROJECTDIR); \ 134 cp autogen.sh $(PROJECTDIR); \ 135 cp missing $(PROJECTDIR); \ 136 cp aclocal.m4 $(PROJECTDIR); \ 137 cp mkinstalldirs $(PROJECTDIR); \ 138 cp ltmain.sh $(PROJECTDIR); \ 139 cp depcomp $(PROJECTDIR); \ 140 cp configure $(PROJECTDIR); \ 141 cp configure.ac $(PROJECTDIR); \ 142 cp config.guess $(PROJECTDIR); \ 143 cp config.sub $(PROJECTDIR); \ 144 cp config.status $(PROJECTDIR); \ 145 cp install-sh $(PROJECTDIR); \ 146 cp Copyright $(PROJECTDIR); \ 147 cp COPYING $(PROJECTDIR); \ 148 cp INSTALL $(PROJECTDIR); \ 149 cp AUTHORS $(PROJECTDIR); \ 150 cp NEWS $(PROJECTDIR); \ 151 cp ChangeLog $(PROJECTDIR); \ 152 cp README $(PROJECTDIR); \ 153 cp NOTES $(PROJECTDIR); \ 154 tar -cvpf $(TAR) \ 155 --exclude=.svn \ 156 --exclude=Cruft \ 157 --exclude=Exclude \ 158 --exclude=*.tar \ 159 --exclude=*.tgz \ 160 --exclude=*.rpm \ 161 ./$(PROJECTDIR); \ 162 gzip $(TAR); \ 163 mv $(TAR).gz $(TGZ); \ 164 rm -rf $(PROJECTDIR)) 165 166LIBTOOL_DEPS = @LIBTOOL_DEPS@ 167libtool: $(LIBTOOL_DEPS) 168 $(SHELL) ./config.status --recheck 169 170#======================================================================== 171# rpm target special stuff 172# 173# To work in userspace, add the following: 174# %_topdir /home/rgb/Src/redhat 175# to your personal $(HOME)/.rpmmacros after building 176# yourself a private copy of the /usr/src/redhat directory structure. 177# 178# RPM_TOPDIR=/usr/src/redhat 179RPM_TOPDIR=$(HOME)/Src/rpm_tree 180 181# This is needed to get the right library and binary rpm. 182ARCH=`uname -i` 183# ARCH=i386 184# These are the three rpms automagically built by the spec 185SSRPM = $(PROJECT)-src-$(VERSION)-$(RELEASE).src.rpm 186SRPM = $(PROJECT)-$(VERSION)-$(RELEASE).src.rpm 187LRPM = libdieharder-$(VERSION)-$(RELEASE).$(ARCH).rpm 188PRPM = dieharder-$(VERSION)-$(RELEASE).$(ARCH).rpm 189 190$(TGZ): tgz 191$(SRPM): rpm 192$(LRPM): rpm 193$(PRPM): rpm 194 195#======================================================================== 196# One stop shop. Basically we build this every time, we hope. 197rpm: Makefile $(TGZ) 198 rm -rf /var/tmp/dieharder* 199 cp $(TGZ) $(RPM_TOPDIR)/SOURCES 200 cp $(SPEC) $(RPM_TOPDIR)/SPECS 201 rpmbuild -ba --target=$(ARCH) $(RPM_TOPDIR)/SPECS/$(SPEC) 202 cp $(RPM_TOPDIR)/SRPMS/$(SSRPM) $(SRPM) 203 cp $(RPM_TOPDIR)/RPMS/$(ARCH)/$(LRPM) . 204 cp $(RPM_TOPDIR)/RPMS/$(ARCH)/$(PRPM) . 205 206# I can leave this target in here, but I have to run it BY HAND right 207# before a release build. Otherwise a src rpm rebuild can fail for 208# people without the svn repo in odd ways. 209ChangeLog: $(SVNTIME) 210 svn2cl dieharder.svn.time 211 212#======================================================================== 213# Make targets for checking in to svn, syncing svn repo from a local 214# (e.g. laptop) to one or more network/primary repos. 215#======================================================================== 216SVNTREE = $(HOME)/Src/svn-tree 217SVNPATH = $(SVNTREE)/$(PROJECT) 218SVNTIME = $(PROJECT:=.svn.time) 219 220svn: 221 echo "New Checkin `date`" >> $(SVNTIME) # Will force a commit and increment revision 222 svn commit . 223 cat $(SVNTIME) | \ 224 sed -e '/^New Checkin/d' >> $(SVNTIME).tmp 225 mv $(SVNTIME).tmp $(SVNTIME) 226 227sync: 228 echo "New Checkin `date`" >> $(SVNTIME) # Will force a commit and increment revision 229 svn commit . # Do the commit 230 rsync -avz --delete $(SVNPATH) ganesh.phy.duke.edu:/home/einstein/prof/rgb/Src/svn-tree 231 rsync -avz --delete $(SVNPATH) 209.42.212.5:$(SVNTREE) 232 cat $(SVNTIME) | \ 233 sed -e '/^New Checkin/d' >> $(SVNTIME).tmp 234 mv $(SVNTIME).tmp $(SVNTIME) 235 236installweb : $(TGZ) $(RPM) $(SRPM) $(LRPM) $(PRPM) $(MRPM) $(ABS) $(PHP) 237 (ssh $(WLOGIN) mkdir -p public_html/$(WDIR)/$(PROJECT);\ 238 rsync -avz $(TGZ) $(WLOGIN):public_html/$(WDIR)/$(PROJECT)/; \ 239 rsync -avz $(SRPM) $(WLOGIN):public_html/$(WDIR)/$(PROJECT)/; \ 240 rsync -avz $(LRPM) $(WLOGIN):public_html/$(WDIR)/$(PROJECT)/; \ 241 rsync -avz $(PRPM) $(WLOGIN):public_html/$(WDIR)/$(PROJECT)/; \ 242 rsync -avz $(MRPM) $(WLOGIN):public_html/$(WDIR)/$(PROJECT)/; \ 243 rsync -avz $(ABS) $(WLOGIN):public_html/$(WDIR)/$(PROJECT)/; \ 244 ssh $(WLOGIN) "cd public_html/$(WDIR)/$(PROJECT);ln -sf $(TGZ) $(PROJECT).tgz"; \ 245 ssh $(WLOGIN) "cd public_html/$(WDIR)/$(PROJECT);ln -sf $(SRPM) $(PROJECT).src.rpm"; \ 246 ssh $(WLOGIN) "cd public_html/$(WDIR)/$(PROJECT);rm Current*;touch Current_Is_$(VERSION)"; \ 247 rsync -avz $(PHP) $(WLOGIN):public_html/$(WDIR)/) 248 249REPOSERVER = uriel 250REPOPATH = /var/www/html/fc/6/local/ 251installrepo : $(TGZ) $(RPM) $(SRPM) $(LRPM) $(PRPM) $(MRPM) $(ABS) $(PHP) 252 (ssh $(REPOSERVER) mkdir -p $(REPOPATH);\ 253 rsync -avz $(TGZ) root@$(REPOSERVER):$(REPOPATH);\ 254 rsync -avz $(SRPM) root@$(REPOSERVER):$(REPOPATH)/SRPM;\ 255 ssh $(REPOSERVER) mkdir -p $(REPOPATH)/$(ARCH);\ 256 rsync -avz $(LRPM) root@$(REPOSERVER):$(REPOPATH)/$(ARCH);\ 257 rsync -avz $(PRPM) root@$(REPOSERVER):$(REPOPATH)/$(ARCH);\ 258 rsync -avz $(MRPM) root@$(REPOSERVER):$(REPOPATH)/$(ARCH);\ 259 ssh root@$(REPOSERVER) "cd $(REPOPATH)/$(ARCH);createrepo .") 260 261#======================================================================== 262# This target takes the dieharder sources and "magically" transforms 263# them into RDieHarder sources. 264RDHTAR=RDieHarder_@VERSION@.tar 265RDHPKG=RDieHarder_@VERSION@.tar.gz 266 267$(RDHPKG): rdhpkg 268 269rdhpkg: 270 rm -rf RDieHarder/src/*.h RDieHarder/src/*.c \ 271 RDieHarder/src/*.o RDieHarder/src/Makefile RDieHarder/src/*.so 272 cp dieharder/*.c RDieHarder/src/ 273 cp dieharder/*.h RDieHarder/src/ 274 mv RDieHarder/src/rdieharder.c RDieHarder/src/dieharder.c 275 cp dieharder/Makefile.RDH RDieHarder/src/Makefile 276 tar -cvpf $(RDHTAR) RDieHarder 277 gzip -f $(RDHTAR) 278 279# This can be run by anybody 280rdhclean: 281 rm -rf RDieHarder/src/*.h RDieHarder/src/*.c $(RDHTAR) $(RDHPKG) \ 282 RDieHarder/src/*.o RDieHarder/src/Makefile RDieHarder/src/*.so 283 284# This can be run as anybody 285rdhprep: 286 rm -rf RDieHarder/src/*.h RDieHarder/src/*.c \ 287 RDieHarder/src/*.o RDieHarder/src/Makefile RDieHarder/src/*.so 288 cp dieharder/*.c RDieHarder/src/ 289 cp dieharder/*.h RDieHarder/src/ 290 mv RDieHarder/src/rdieharder.c RDieHarder/src/dieharder.c 291 cp dieharder/Makefile.RDH RDieHarder/src/Makefile 292 293# This has to be run only as root, sorry. 294rdh: $(RDHPKG) 295 R CMD INSTALL $(RDHPKG) 296 297