1 arta 1.1 # This is used to jump from a source directory to a target directory.
2
3 .SUFFIXES:
4
5
6 # Find the target directory(ies).
7 #
8 ifndef JSOC_MACHINE
9 JSOC_MACHINE := $(shell build/jsoc_machine.csh)
10 export JSOC_MACHINE
11 endif
12
|
13 arta 1.13 ifeq ($(MACH),)
14 MACH = $(JSOC_MACHINE)
15 endif
16
17 OBJDIR := _$(MACH)
|
18 arta 1.5 PROJOBJDIR := $(OBJDIR)/proj
|
19 arta 1.1
20 all: $(PROJOBJDIR) $(OBJDIR)
21
22 # Define the rules to build in the target subdirectories.
23 #
|
24 arta 1.17 MAKETARGET = $(MAKE) --no-print-directory -C $@ -f $(WORKINGDIR)/Makefile \
|
25 jsoc 1.11 SRCDIR=$(WORKINGDIR) $(MAKECMDGOALS)
|
26 arta 1.1
|
27 arta 1.34 .PHONY: $(PROJOBJDIR) $(OBJDIR)
28
29 $(PROJOBJDIR)::
30 +@[ -d $@ ] || mkdir -p $@
|
31 arta 1.1
32 # Create the project-specific directories too, if they exist.
|
33 arta 1.34 # This supplementary target.mk file is built by the configure script, using either
|
34 arta 1.27 # configsdp.txt (for a JSOC-SDP checkout) or a custom configuration file as input.
|
35 arta 1.34 PATH_FILES := $(shell find $(WORKINGDIR)/proj -name paths.mk -printf "%p ")
36 -include $(PATH_FILES)
|
37 arta 1.1
38 $(OBJDIR):
|
39 arta 1.13 +@[ -d bin/$(MACH) ] || mkdir -p bin/$(MACH)
40 +@[ -d lib/$(MACH) ] || mkdir -p lib/$(MACH)
|
41 arta 1.1 +@[ -d $@ ] || mkdir -p $@
|
42 arta 1.5 +@[ -d $@/base/drms/apps ] || mkdir -p $@/base/drms/apps
|
43 arta 1.32 +@[ -d $@/base/drms/apps/test ] || mkdir -p $@/base/drms/apps/test
|
44 arta 1.5 +@[ -d $@/base/drms/libs/api/client ] || mkdir -p $@/base/drms/libs/api/client
45 +@[ -d $@/base/drms/libs/api/server ] || mkdir -p $@/base/drms/libs/api/server
|
46 arta 1.33 +@[ -d $@/base/drms/libs/api/server-fpic ] || mkdir -p $@/base/drms/libs/api/server-fpic
|
47 arta 1.5 +@[ -d $@/base/drms/libs/main/c ] || mkdir -p $@/base/drms/libs/main/c
48 +@[ -d $@/base/drms/libs/main/f ] || mkdir -p $@/base/drms/libs/main/f
49 +@[ -d $@/base/drms/libs/main/idl ] || mkdir -p $@/base/drms/libs/main/idl
50 +@[ -d $@/base/drms/libs/meta ] || mkdir -p $@/base/drms/libs/meta
|
51 arta 1.33 +@[ -d $@/base/drms/libs/py ] || mkdir -p $@/base/drms/libs/py
|
52 arta 1.22 +@[ -d $@/base/export/apps ] || mkdir -p $@/base/export/apps
53 +@[ -d $@/base/export/libs/util ] || mkdir -p $@/base/export/libs/util
|
54 arta 1.26 +@[ -d $@/base/export/libs/exportDRMS ] || mkdir -p $@/base/export/libs/exportDRMS
|
55 arta 1.31 +@[ -d $@/base/libs/cjson ] || mkdir -p $@/base/libs/cjson
|
56 arta 1.18 +@[ -d $@/base/libs/cmdparams/test ] || mkdir -p $@/base/libs/cmdparams/test
|
57 arta 1.5 +@[ -d $@/base/libs/db/client ] || mkdir -p $@/base/libs/db/client
58 +@[ -d $@/base/libs/db/server ] || mkdir -p $@/base/libs/db/server
|
59 arta 1.33 +@[ -d $@/base/libs/db/server-fpic ] || mkdir -p $@/base/libs/db/server-fpic
|
60 arta 1.10 +@[ -d $@/base/libs/defs/fpic ] || mkdir -p $@/base/libs/defs/fpic
|
61 arta 1.5 +@[ -d $@/base/libs/dstruct/fpic ] || mkdir -p $@/base/libs/dstruct/fpic
|
62 arta 1.22 +@[ -d $@/base/libs/json ] || mkdir -p $@/base/libs/json
|
63 arta 1.29 +@[ -d $@/base/libs/jsmn ] || mkdir -p $@/base/libs/jsmn
|
64 arta 1.5 +@[ -d $@/base/libs/inthandles ] || mkdir -p $@/base/libs/inthandles
|
65 arta 1.19 +@[ -d $@/base/libs/qdecoder/md5 ] || mkdir -p $@/base/libs/qdecoder/md5
|
66 arta 1.5 +@[ -d $@/base/libs/threads/fpic ] || mkdir -p $@/base/libs/threads/fpic
67 +@[ -d $@/base/libs/timeio/fpic ] || mkdir -p $@/base/libs/timeio/fpic
68 +@[ -d $@/base/libs/misc/fpic ] || mkdir -p $@/base/libs/misc/fpic
|
69 arta 1.6 +@[ -d $@/base/libs/fitsrw/fpic ] || mkdir -p $@/base/libs/fitsrw/fpic
|
70 arta 1.8 +@[ -d $@/base/libs/errlog ] || mkdir -p $@/base/libs/errlog
|
71 arta 1.5 +@[ -d $@/base/local/libs/dsds ] || mkdir -p $@/base/local/libs/dsds
72 +@[ -d $@/base/local/libs/soi ] || mkdir -p $@/base/local/libs/soi
73 +@[ -d $@/base/sums/apps ] || mkdir -p $@/base/sums/apps
74 +@[ -d $@/base/sums/libs/api ] || mkdir -p $@/base/sums/libs/api
75 +@[ -d $@/base/sums/libs/pg ] || mkdir -p $@/base/sums/libs/pg
76 +@[ -d $@/base/util/apps ] || mkdir -p $@/base/util/apps
|
77 arta 1.1 +@$(MAKETARGET)
78
79 # These rules keep make from trying to use the match-anything rule below to
80 # rebuild the makefiles--ouch! Obviously, if you don't follow my convention
81 # of using a `.mk' suffix on all non-standard makefiles you'll need to change
82 # the pattern rule.
83 #
84 Makefile : ;
85 %.mk :: ;
86
87
88 # Anything we don't know how to build will use this rule. The command is a
89 # do-nothing command, but the prerequisites ensure that the appropriate
90 # recursive invocations of make will occur.
91 #
92 % :: $(PROJOBJDIR) $(OBJDIR) ; :
93
94
95 # The clean rule is best handled from the source directory: since we're
96 # rigorous about keeping the target directories containing only target files
97 # and the source directory containing only source files, `clean' is as trivial
98 arta 1.1 # as removing the target directories!
99 #
100 .PHONY: clean
101 clean:
|
102 arta 1.13 rm -rf $(OBJDIR); rm -rf bin/$(MACH); rm -rf lib/$(MACH)
|