1 #//%LICENSE////////////////////////////////////////////////////////////////
3 #// Licensed to The Open Group (TOG) under one or more contributor license
4 #// agreements. Refer to the OpenPegasusNOTICE.txt file distributed with
5 #// this work for additional information regarding copyright ownership.
6 #// Each contributor licenses this file to you under the OpenPegasus Open
7 #// Source License; you may not use this file except in compliance with the
10 #// Permission is hereby granted, free of charge, to any person obtaining a
11 #// copy of this software and associated documentation files (the "Software"),
12 #// to deal in the Software without restriction, including without limitation
13 #// the rights to use, copy, modify, merge, publish, distribute, sublicense,
14 #// and/or sell copies of the Software, and to permit persons to whom the
15 #// Software is furnished to do so, subject to the following conditions:
17 #// The above copyright notice and this permission notice shall be included
18 #// in all copies or substantial portions of the Software.
20 #// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
21 #// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 #// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23 #// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
24 #// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
25 #// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
26 #// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28 #//////////////////////////////////////////////////////////////////////////
29 # Pegasus top level make file
30 # see the usage rule for options
34 include $(ROOT)/env_var.status
35 include $(ROOT)/mak/config.mak
37 ## Include mu in the clean structure
38 ## This required because mu is not part of the hiearchial build
39 ##structure. It is built with the buildmu target. Adding this
40 ## variable allows it to be cleaned with the normal clean target.
41 RECURSE_EXTRA_CLEAN_DIRS += src/utils/mu
43 # This is a recurse make file
44 # Defines subdirectories to go to recursively
50 # Define the inclusion of the recurse.mak file to execute the next
51 # level of makefiles defined by the DIRS variable
53 defaultrule: all setupdevserver
55 include $(ROOT)/mak/recurse.mak
63 $(USAGE)"Makefile targets:"
65 $(USAGE)"Recursive rules - These are the primatives that traverse the tree"
66 $(USAGE)"invoking the specified command in each subdirectory directory."
67 $(USAGE)"NOTE: all is special, it specifies no target and therefore invokes"
68 $(USAGE)"the default rule for that directory."
69 $(USAGE)"all - recursive DEFAULT rule"
70 $(USAGE)"clean - recursive clean"
71 $(USAGE)"depend - buildmu recursive depend"
72 $(USAGE)"messages - rootbundle recursive messages"
73 $(USAGE)"tests - recursive tests"
74 $(USAGE)"poststarttests - recursive poststarttests"
76 $(USAGE)"Combinational rules - Combine other rules to achieve results"
77 $(USAGE)"DEFAULT RULE - all, setupdevserver"
78 $(USAGE)"new - clean repositoryclean"
79 $(USAGE)"build - depend all, setupdevserver"
80 $(USAGE)"world - build unittests servertests"
82 $(USAGE)"Functional rules - Other rules to achieve specified results"
83 $(USAGE)"clobber -removes objects built during compile"
84 $(USAGE)" specifically the following directories are removed:"
85 $(USAGE)" $(PEGASUS_HOME)/bin"
86 $(USAGE)" $(PEGASUS_HOME)/lib"
87 $(USAGE)" $(PEGASUS_HOME)/obj"
88 $(USAGE)"buildmu - builds the mu utility"
89 $(USAGE)"setupdevserver - setup the development server env"
90 $(USAGE)"cleandevserver - cleans the development server env"
91 $(USAGE)"repository - builds the base repository. Does not remove other"
92 $(USAGE)" namespaces than the base namespaces."
93 $(USAGE)"testrepository - builds items for the test suites into the repository"
94 $(USAGE)"repositoryclean - removes the complete repository"
95 $(USAGE)"listplatforms - List all valid platforms"
97 $(USAGE)"Test rules (accessable here but implemented in TestMakefile)"
98 $(USAGE)"alltests - unittests and servertests"
99 $(USAGE)"unittests - runs the unit functional test"
100 $(USAGE)"servertests - runs basic server tests"
101 $(USAGE)"perftests - runs basic server performance tests"
102 $(USAGE)"standardtests - runs server extended tests"
103 $(USAGE)"testusage - TestMakefile usage"
104 $(USAGE)"testusage2 - TestMakefile usage2"
105 $(USAGE)"stresstests - Runs the default stresstests"
107 $(USAGE)"--------------------"
108 $(USAGE)"Quick start:"
109 $(USAGE)" After checkout of new tree:"
110 $(USAGE)" use \"make listplatforms\" to view a list of platforms"
111 $(USAGE)" set PEGASUS_PLATFORM=<your platofrm>"
112 $(USAGE)" set PEGASUS_ROOT=<location of your pegasus source>"
113 $(USAGE)" set PEGASUS_HOME=<build output location"
114 $(USAGE)" make world"
116 $(USAGE)" This will build everthing with a default configuration"
117 $(USAGE)" and run the automated tests."
119 $(USAGE)"--------------------"
121 $(USAGE)" After \"cvs checkout\" of new tree: make world"
123 $(USAGE)" After changes to include files: make"
125 $(USAGE)" After changes to the files included: make build"
127 $(USAGE)" After \"cvs update\" or to start over: make new world"
132 $(USAGE)"The $(words $(VALID_PLATFORMS)) valid platforms are:"
133 $(USAGE)" $(foreach w, $(VALID_PLATFORMS), " $w ")"
137 #########################################################################
138 # This section defines any prerequisites that are required by the
141 # NOTE: You can add prerequisties for the recursive rules but you cannot
142 # add any commands to run as part of the rule. You can define them
143 # and make will quietly ignore them and they will not be run either
144 # before or after the recursive rule.
151 #########################################################################
152 # This section defines combinational rules
154 #-----------------------
155 # build target: builds all source
157 build: depend all setupdevserver
159 #------------------------
160 # rebuild target is being deprecated instead use "make new build"
163 @$(ECHO) "==============================================================================="
164 @$(ECHO) "Makefile: The rebuild target is being deprecated."
165 @$(ECHO) " Use \"make usage\" for a description of the usage model."
166 @$(ECHO) " Consider using \"make new world\" ."
167 @$(ECHO) " Invoking the old rebuild rule now."
168 @$(ECHO) "==============================================================================="
170 rebuild: rebuild_msg shortsleep new build s_unittests repository
172 #-----------------------
173 # new target: cleans everthing
175 # This can be combined on the command line with other rules like:
180 new: clean repositoryclean
182 #-----------------------
183 # world targets: builds everything and dependent on which target may do testing
185 # Typically used after a fresh checkout from CVS
187 world: build s_unittests servertests
190 ############################
192 # rules defined in TestMakefile that are repeated here for convenience
195 @$(MAKE) -f TestMakefile shortsleep
198 @ $(MAKE) -f TestMakefile servertests
201 @ $(MAKE) -f TestMakefile perftests
204 @ $(MAKE) -f TestMakefile -s unittests
207 @ $(MAKE) -f TestMakefile unittests
210 @ $(MAKE) -f TestMakefile standardtests
213 @ $(MAKE) -f TestMakefile alltests
216 @ $(MAKE) -f TestMakefile usage
219 @ $(MAKE) -f TestMakefile usage2
222 @$(ECHO) "Running OpenPegasus StressTests"
223 @$(MAKE) -f TestMakefile stresstests
224 @$(ECHO) "+++++ OpenPegasus StressTests complete"
226 ##########################################################################
228 # This section defines functional rules
230 #---------------------
231 # buildmu target: build mu the make utility that among other things
232 # includes a depend implementation. This is a separate target because
233 # it must be build before anything else and before the depend target is used
234 # on some platforms. Note that mu is not used on all platforms.
237 $(MAKE) --directory=$(PEGASUS_ROOT)/src/utils/mu -f Makefile
239 #----------------------
240 # setupdevserver and cleandevserver are used to setup and clear the
241 # server configuration files needed to run the server in a development
244 setupdevserver: FORCE
245 $(MAKE) --directory=$(PEGASUS_ROOT)/src/Server -f Makefile install_run
246 @$(ECHO) "PEGASUS Development Server Runtime Environment configured "
248 cleandevserver: FORCE
249 $(MAKE) --directory=$(PEGASUS_ROOT)/src/Server -f Makefile install_run_clean
252 - $(RMDIRHIER) $(PEGASUS_HOME)/bin
253 - $(RMDIRHIER) $(PEGASUS_HOME)/lib
254 - $(RMDIRHIER) $(PEGASUS_HOME)/obj
257 #---------------------
258 # The repository target removes the entire repository and rebuilds the Pegasus
259 # namespaces. The repositoryServer target does not remove the repository
260 # before building the Pegasus namespaces. (The repositoryServer target in
261 # TestMakefile *does* remove the repository first.)
263 # Note: Arguments must be quoted to preserve upper case characters in VMS.
264 repository: repositoryclean
265 @ $(MAKE) "-SC" Schemas/Pegasus repository
267 repositoryclean: FORCE
268 @ $(RMREPOSITORY) $(REPOSITORY_ROOT)
270 repositoryServer: FORCE
271 @ $(MAKE) "-SC" Schemas/Pegasus repositoryServer
273 #---------------------
274 # The testrepository and testrepositoryServer targets build the Pegasus test
275 # namespaces. A pre-existing repository is not removed.
277 testrepository: FORCE
278 @ $(MAKE) "-SC" src/Providers/sample/Load repository
279 @ $(MAKE) "-SC" test/wetest repository
280 @ $(MAKE) "-SC" src/Clients/benchmarkTest/Load repository
281 @ $(MAKE) "-SC" src/Pegasus/CQL/CQLCLI repository
282 @ $(MAKE) "-SC" src/Pegasus/Query/QueryExpression/tests repository
283 @ $(MAKE) "-SC" src/Providers/TestProviders/Load repository
284 ifeq ($(PEGASUS_ENABLE_CQL),true)
285 @ $(MAKE) "-SC" src/Pegasus/ControlProviders/QueryCapabilitiesProvider/tests repository
287 ifeq ($(PEGASUS_ENABLE_JMPI_PROVIDER_MANAGER), true)
288 @ $(MAKE) "-SC" src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/tests repository
290 @ $(MAKE) --directory=$(PEGASUS_ROOT)/src/Clients/cimsub/tests/testscript \
291 -f Makefile repository
293 testrepositoryServer: FORCE
294 @ $(MAKE) "-SC" src/Providers/sample/Load repositoryServer
295 @ $(MAKE) "-SC" test/wetest repositoryServer
296 @ $(MAKE) "-SC" src/Clients/benchmarkTest/Load repositoryServer
297 @ $(MAKE) "-SC" src/Pegasus/CQL/CQLCLI repositoryServer
298 @ $(MAKE) "-SC" src/Pegasus/Query/QueryExpression/tests repositoryServer
299 @ $(MAKE) "-SC" src/Providers/TestProviders/Load repositoryServer
300 ifeq ($(PEGASUS_ENABLE_CQL),true)
301 @ $(MAKE) "-SC" src/Pegasus/ControlProviders/QueryCapabilitiesProvider/tests repositoryServer
303 ifeq ($(PEGASUS_ENABLE_JMPI_PROVIDER_MANAGER), true)
304 @ $(MAKE) "-SC" src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/tests repositoryServer
306 @ $(MAKE) --directory=$(PEGASUS_ROOT)/src/Clients/cimsub/tests/testscript \
307 -f Makefile repositoryServer
310 @ $(ROOT)/SetConfig_EnvVar
313 $(MAKE) --directory=$(PEGASUS_ROOT)/src/utils/cnv2rootbundle -f Makefile