makefiles.4
上传用户:xiejiait
上传日期:2007-01-06
资源大小:881k
文件大小:41k
源码类别:

SCSI/ASPI

开发平台:

MultiPlatform

  1. . " %Z%%M% %I% %E% Copyr 1996 J. Schilling
  2. . " User Manual page for makefile system
  3. . "
  4. .if t .ds a v'-0.55m'h'0.00n'z.h'0.40n'z.v'0.55m'h'-0.40n'a
  5. .if t .ds o v'-0.55m'h'0.00n'z.h'0.45n'z.v'0.55m'h'-0.45n'o
  6. .if t .ds u v'-0.55m'h'0.00n'z.h'0.40n'z.v'0.55m'h'-0.40n'u
  7. .if t .ds A v'-0.77m'h'0.25n'z.h'0.45n'z.v'0.77m'h'-0.70n'A
  8. .if t .ds O v'-0.77m'h'0.25n'z.h'0.45n'z.v'0.77m'h'-0.70n'O
  9. .if t .ds U v'-0.77m'h'0.30n'z.h'0.45n'z.v'0.77m'h'-.75n'U
  10. .if t .ds s (*b
  11. .if t .ds S SS
  12. .if n .ds a ae
  13. .if n .ds o oe
  14. .if n .ds u ue
  15. .if n .ds s sz
  16. .TH makefiles 4L "14. February 1997" "J*org Schilling" "Schily's FILE FORMATS"
  17. .".TH makefiles 4L "14. February 1997" "J*org Schilling" "GMD FOKUS FILE FORMATS"
  18. .SH NAME
  19. makefiles - users guide for compiling projects on different platforms
  20. .SH SYNOPSIS
  21. .B "make [target]
  22. .br
  23. .B "gmake [target]
  24. .br
  25. .B "smake [target]
  26. .br
  27. .PP
  28. Target may be one of:
  29. .TP 10
  30. &.help
  31. to get a list of possible targets and a short description.
  32. .TP
  33. all
  34. to make the default targets
  35. .TP
  36. install
  37. to make and install the default targets
  38. (see 
  39. .IR INS_BASE " and " INS_KBASE
  40. to learn how to modify the installation path).
  41. .TP
  42. ibins
  43. to make and install a target in 
  44. .I SRCROOT/bins
  45. .TP
  46. depend
  47. to re-make dependency rules for all default targets.
  48. Note: All dependency files will automatically remade 
  49. on the next run of make before they are included.
  50. .TP
  51. clean
  52. to remove 
  53. .I core 
  54. files and all intermediate object files.
  55. .TP
  56. clobber
  57. to remove the targets from
  58. .IR clean ,
  59. all dependency files and all final targets
  60. .TP
  61. distclean
  62. to remove the targets from
  63. .IR clean " and " clobber 
  64. and all made files for all architectures.
  65. .TP
  66. tags
  67. to make 
  68. .IR vi (1)
  69. compatible tags
  70. .TP
  71. TAGS
  72. to make 
  73. .IR emacs (1)
  74. compatible tags
  75. .TP
  76. config
  77. reserved for future use.
  78. .TP
  79. rmtarget
  80. to remove the default target
  81. .TP
  82. relink
  83. to remove the default target and remake it immediately. This can be
  84. used to change .e.g LD_RUN_PATH in the executable.
  85. .SH DESCRIPTION
  86. Makefiles is a set of rules that allows compiling of structured
  87. projects with small and uniformly structured makefiles.
  88. All rules are located in a central directory.
  89. Compiling the projects on different platforms can be done without
  90. the need to modify any of the makefiles that are located
  91. in the projects directories.
  92. .PP
  93. Three make programs are supported:
  94. .IR "Sunpro make" , 
  95. .I "GNU make"
  96. and
  97. .IR smake .
  98. .PP
  99. .I BSDmake
  100. could be supported if it supports pattern matching rules correctly.
  101. .PP
  102. The main design goal was to have a set of small and easy to read
  103. makefiles, each located in the project's leaf directory and therefore 
  104. called
  105. .IR leaf -makefile.
  106. .PP
  107. Each of these 
  108. .IR leaf -makefiles,
  109. in fact contains no rule at all. It simply defines some macros
  110. for the 
  111. .IR make -program
  112. and includes two files from a central make rule depository.
  113. The included files and the files that are recursively included 
  114. define the rules that are needed to compile the project.
  115. .PP
  116. Each 
  117. .IR leaf -makefile
  118. is formed in a really simple way:
  119. .TP
  120. (bu
  121. It first defines two macros that define the relative location
  122. of the project's root directory and the name of the directory
  123. that contains the complete set of of rules and then includes
  124. the rule file 
  125. .I rules.top
  126. from the directory that forms the central rule depository.
  127. You only have to edit the macro
  128. .I SRCROOT
  129. to reflect the relative location of the project's root directory.
  130. .TP
  131. (bu
  132. The next part of a 
  133. .IR leaf -makefile
  134. defines macros that describe the target and the source.
  135. You can only have one target per 
  136. .IR leaf -makefile.
  137. Of course, there may be many source files, that are needed to create
  138. that target.
  139. If you want to make more than one target in a specific directory,
  140. you have to put more than one makefile into that directory.
  141. This is the part of a makefile that describes a unique target.
  142. Edit this part to contain all source files, all local include files
  143. and all non global compile time flags that are needed for your target.
  144. For a typical target this is as simple as filling in a form.
  145. .TP
  146. (bu
  147. Each
  148. .IR leaf -makefile
  149. finally includes a file from the rules directory that contains
  150. rules for the appropriate type of target that is to be made
  151. from this 
  152. .IR leaf -makefile.
  153. .PP
  154. The makefile in each directory has to be called
  155. .IR Makefile .
  156. If you want to have more than one makefile in a specific directory,
  157. you have to choose different names for the other makefiles.
  158. .PP
  159. There are rules for the following type of targets:
  160. .TP 20
  161. commands
  162. The make rules for user level commands like
  163. .IR cat ", " ls 
  164. etc. are located in the file 
  165. .I rules.cmd
  166. .TP
  167. drivers
  168. The make rules for device drivers
  169. are located in the file 
  170. .I rules.drv
  171. .TP
  172. libraries
  173. The make rules for non shared libraries
  174. are located in the file 
  175. .I rules.lib
  176. .TP
  177. shared libraries
  178. The make rules for shared libraries
  179. are located in the file 
  180. .I rules.shl
  181. .TP
  182. localized files
  183. The make rules for localized files
  184. are located in the file 
  185. .I rules.loc
  186. .TP
  187. nonlocalized files
  188. The make rules for non localized files
  189. are located in the file 
  190. .I rules.aux
  191. .TP
  192. shell scripts
  193. The make rules for shell scripts (a variant of localized files)
  194. are located in the file 
  195. .I rules.scr
  196. .TP
  197. manual pages
  198. The make rules for manual pages (a variant of localized files)
  199. are located in the file 
  200. .I rules.man
  201. .TP
  202. diverted makefiles
  203. The make rules for projects that need to have more than
  204. one makefile in a specific directory
  205. are located in the file 
  206. .I rules.mks
  207. It contains a rule that diverts to the listed sub makefiles.
  208. Each sub makefile may be of any type.
  209. .TP
  210. directories
  211. The make rules for sub directories
  212. are located in the file 
  213. .I rules.dir
  214. .SH "Macros/Variables Used In Rules
  215. .PP
  216. The following is a description of the most important macros
  217. used within the make rules.
  218. .I NOTE: 
  219. not all of them might be changed in a specific makefile.
  220. Carefully read the description and change only those macros
  221. that are intended to be used to change the behavior of
  222. the compilation.
  223. .TP 13
  224. ARCHDIR
  225. contains the location where object files and make targets will be placed.
  226. A typical name would be:
  227. .I "OBJ/sparc-sunos5-cc
  228. .br
  229. Do not change this macro.
  230. .
  231. .TP
  232. ASFLAGS
  233. The flags that are used with the assembler.
  234. .br
  235. Do not change this macro.
  236. .
  237. .TP
  238. ASMFILES
  239. a list of assembler source files, to be specified in a
  240. leaf makefile.
  241. .
  242. .TP
  243. ASOPTS
  244. The internal macro that contains the flags for the assembler.
  245. Change this macro if you want to change the behavior.
  246. Use: 
  247. .B "ASOPTS= value"
  248. If you want to override the default value. If you want to
  249. override the default assembler flags from the command line
  250. call:
  251. .B "make 'ASOPTS=value'"
  252. Use: 
  253. .B "ASOPTS += value"
  254. If you want to add flags to the default value from within a makefile.
  255. .
  256. .TP
  257. ASOPTX
  258. may be used if you want to add flags to the assembler flags from the
  259. command line. Use:
  260. .B "make 'ASOPTX=value'
  261. .
  262. .TP
  263. C_ARCH
  264. this macro contains the c-compiler architecture name.
  265. .br
  266. Do not change this macro.
  267. .
  268. .TP
  269. CCOM
  270. This macro may be used from the command line to use a different
  271. c-compiler than the default.
  272. Use:
  273. .B "make 'CCOM=gcc'
  274. to use 
  275. .I gcc
  276. for the next run.
  277. Note: The value of 
  278. .I CCOM
  279. must not necessarily be identical to the real name of the c-compiler.
  280. It refers to a filename which contains the definition for that
  281. c-compiler. This hint applies as well to all other macros that deal with
  282. the name of the c-compiler.
  283. The only macro, that contains the real invocation name of the c-compiler,
  284. is 
  285. .IR CC .
  286. .I CC
  287. is set inside the machine dependent configuration file in the central
  288. rules depository and must not be changed elsewhere.
  289. .
  290. .TP
  291. CFILES
  292. a list of C source files, to be specified in a
  293. leaf makefile.
  294. .
  295. .TP
  296. CFLAGS
  297. The flags that are used with the c-compiler.
  298. Do not use flags that belong to the c-preprocessor in the 
  299. .IR COPTOPT ", " COPTS " and " COPTX
  300. macros.
  301. .br
  302. Do not change this macro.
  303. .
  304. .TP
  305. CLEAN_FILES
  306. A list of files ( besides the object files ) that will be
  307. removed with
  308. .IR "make clean" .
  309. .br
  310. Do not change this macro.
  311. .
  312. .TP
  313. CLEAN_FILEX
  314. this macro may be used to define additional files that should
  315. be removed with
  316. .IR "make clean" .
  317. .
  318. .TP
  319. CLOBBER_FILEX
  320. this macro may be used to define additional files that should
  321. be removed with
  322. .IR "make clobber" .
  323. .
  324. .TP
  325. COPTOPT
  326. The c-compiler optimization flag. This flag is intended to 
  327. be overridden either from a makefile or from command line.
  328. .
  329. .TP
  330. COPTS
  331. The internal macro that contains the flags for the c-compiler.
  332. Change this macro if you want to change the behavior.
  333. Use: 
  334. .B "COPTS= value"
  335. If you want to override the default value. If you want to
  336. override the default c-compiler flags from the command line
  337. call:
  338. .B "make 'COPTS=value'"
  339. Use: 
  340. .B "COPTS += value"
  341. If you want to add flags to the default value from within a makefile.
  342. .
  343. .TP
  344. COPTX
  345. may be used if you want to add flags to the c-compiler flags from the
  346. command line. Use:
  347. .B "make 'COPTX=value'
  348. .
  349. .TP
  350. CPPFLAGS
  351. The flags that are used with the c-preprocessor.
  352. This macro as well as:
  353. .IR CPPOPTS " and " CPPOPTX
  354. are also used when compiling c-programs.
  355. They should contain only the following flags:
  356. .IR "-Dname=value ", " -Uname " , " 
  357. .IR -Idirectory " and " -Ydirectory .
  358. .br
  359. Do not change this macro.
  360. .
  361. .TP
  362. CPPOPTS
  363. The internal macro that contains the flags for the c-preprocessor.
  364. Change this macro if you want to change the behavior.
  365. Use: 
  366. .B "CPPOPTS= value"
  367. If you want to override the default value. If you want to
  368. override the default c-preprocessor flags from the command line
  369. call:
  370. .B "make 'CPPOPTS=value'"
  371. Use: 
  372. .B "CPPOPTS += value"
  373. If you want to add flags to the default value from within a makefile.
  374. .
  375. .TP
  376. CPPOPTX
  377. may be used if you want to add flags to the c-preprocessor flags from the
  378. command line. Use:
  379. .B "make 'CPPOPTX=value'
  380. .
  381. .TP
  382. CURDIR
  383. This macro contains the name of the sub directory that is currently processed.
  384. .br
  385. Do not change this macro.
  386. .
  387. .TP
  388. DEFINSGRP
  389. this macro may be set in the projects defaults file to set up the
  390. default group id for installation 
  391. .TP
  392. DEFINSMODE
  393. this macro may be set in the projects defaults file to set up the
  394. default file permission for installation 
  395. .TP
  396. DEFINSUSR
  397. this macro may be set in the projects defaults file to set up the
  398. default user id for installation 
  399. .TP
  400. DEFUMASK
  401. this macro may be set in the projects defaults file to set up the
  402. default 
  403. .I umask
  404. value for creating sub directories
  405. .
  406. .TP
  407. DEFAULTSDIR
  408. this macro may be set from command line or from the shell environment
  409. if the user wants to use a different set of 
  410. .I Defaults
  411. files that is not located in the directory
  412. .B DEFAULTS
  413. in the source root directory.
  414. This may be used to hold two or more set of defaults that differ e.g. in the
  415. installation path or the C-compiler.
  416. .
  417. .TP
  418. DEFAULTSROOT
  419. this macro may be set in a leaf makefile, if that makefile wants to use
  420. .I Defaults
  421. file that is not located in 
  422. .I $(DEFAULTSDIR)
  423. in the source root.
  424. This may be used, if a sub tree in a big project needs a different setup.
  425. .
  426. .TP
  427. DEFLTSDIR
  428. This is an internally used macro that is set from 
  429. .I $(DEFAULTSDIR) 
  430. or from the internal defaults.
  431. .br
  432. Do not change this macro.
  433. .
  434. .TP
  435. DEFLTSROOT
  436. This is an internally used macro that is set from 
  437. .I $(DEFAULTSROOT) 
  438. or from the internal defaults.
  439. .br
  440. Do not change this macro.
  441. .
  442. .TP
  443. DEFCCOM
  444. the default name of the c-compiler. This is usually set in the file
  445. .I $(DEFLTSROOT)/$(DEFLTSDIR)/Defaults
  446. or 
  447. .IR $(DEFLTSROOT)/$(DEFLTSDIR)/Defaults.$(O_ARCH) .
  448. .
  449. .TP
  450. DEFINCDIRS
  451. a list of directories that are searched by default in addition to 
  452. the system include directories. If this macro is not set, 
  453. .I $(SRCROOT)/include
  454. is used.
  455. .
  456. .TP
  457. DIRNAME
  458. this macro needs to be set in the makefile that is located in
  459. the 
  460. .I "$(SRCROOT)
  461. directory.
  462. The value should be either set to the name of the directory
  463. where the makefile is located or to 
  464. .BR SRCROOT .
  465. The value of this macro is updated automatically 
  466. to follow the directory hierarchy.
  467. Do not change this macro in a make file other than the make file
  468. in the source root.
  469. .
  470. .TP
  471. DIRS
  472. this macro needs to be set in a makefile that is located in
  473. a directory that contains diversion directories.
  474. It must contain a list of directory names where the diversions
  475. go to e.g.
  476. .BR "DIRS= libfoo libbar libgarbage" .
  477. .
  478. .TP
  479. HFILES
  480. for normal operation, 
  481. .I makefiles 
  482. will automatically find which include files are needed
  483. for compilation.
  484. However, if you want to create a tag file that includes
  485. tags for definitions that occur within include files, 
  486. you should set 
  487. .I HFILES
  488. to be a list of include files containing such definitions.
  489. .
  490. .TP
  491. INCDIRS
  492. this macro will normally be a copy from 
  493. .IR DEFINCDIRS .
  494. You may however specify a different value in a leaf makefile
  495. or from command line. This will overwrite the defaults value.
  496. .
  497. .TP
  498. INS_BASE
  499. this macro has to be specified in the file
  500. .I $(DEFLTSROOT)/$(DEFLTSDIR)/Defaults
  501. or 
  502. .IR $(DEFLTSROOT)/$(DEFLTSDIR)/Defaults.$(O_ARCH) .
  503. It must contain the path name of the root for installing 
  504. general targets of the project.
  505. See
  506. .IR INSDIR . 
  507. .
  508. .TP
  509. INS_KBASE
  510. this macro has to be specified in the file
  511. .I $(DEFLTSROOT)/$(DEFLTSDIR)/Defaults
  512. or 
  513. .IR $(DEFLTSROOT)/$(DEFLTSDIR)/Defaults.$(O_ARCH) .
  514. It must contain the path name of the root for installing 
  515. kernel modules from the project.
  516. See
  517. .IR INSDIR .
  518. .
  519. .TP
  520. INSDIR
  521. this macro has to be specified in the leaf makefile.
  522. It must contain the path name of a directory relative to
  523. .IR INS_BASE " or " INS_KBASE .
  524. The target will be installed into
  525. .I "$(INS_BASE)/$(INSDIR)" .
  526. .
  527. .TP
  528. INSGRP
  529. this macro may be set in a leaf makefile to set up the
  530. group id for installation 
  531. .TP
  532. INSMODE
  533. this macro may be set in a leaf makefile to set up the
  534. file permission for installation 
  535. .TP
  536. INSUSR
  537. this macro may be set in a leaf makefile to set up the
  538. user id for installation 
  539. .
  540. .TP
  541. K_ARCH
  542. this macro contains the kernel/machine architecture for the
  543. target machine (e.g.
  544. .IR "sun3 sun4c sun4m sun4u 9000-725 aviion" ).
  545. It is set to the output of
  546. .I "uname -m
  547. converted to lower case.
  548. .br
  549. Do not change this macro.
  550. .
  551. .TP
  552. KARCH
  553. this macro contains the kernel/machine architecture for the
  554. target machine (e.g.
  555. .IR "sun3 sun4c sun4m sun4u 9000-725 aviion" ).
  556. It is set to the output of
  557. .I "uname -m
  558. converted to lower case.
  559. .br
  560. Do not change this macro unless you want to do a cross compilation.
  561. .
  562. .TP
  563. LDFLAGS
  564. The flags that are used with the linker.
  565. .br
  566. Do not change this macro.
  567. .
  568. .TP
  569. LDLIBS
  570. The internal macro that holds the 
  571. libraries that are used while linking the target.
  572. .br
  573. Do not change this macro.
  574. .
  575. .TP
  576. LDOPTS
  577. The internal macro that contains the flags for the linker.
  578. Change this macro if you want to change the behavior.
  579. Use: 
  580. .B "LDOPTS= value"
  581. If you want to override the default value. If you want to
  582. override the default linker flags from the command line
  583. call:
  584. .B "make 'LDOPTS=value'"
  585. Use: 
  586. .B "LDOPTS += value"
  587. If you want to add flags to the default value from within a makefile.
  588. .
  589. .TP
  590. LDOPTX
  591. may be used if you want to add flags to the linker flags from the
  592. command line. Use:
  593. .B "make 'LDOPTX=value'
  594. .
  595. .TP
  596. LDPATH
  597. the default library search path for the linker. 
  598. This is usually set in the file
  599. .I $(DEFLTSROOT)/$(DEFLTSDIR)/Defaults
  600. or 
  601. .IR $(DEFLTSROOT)/$(DEFLTSDIR)/Defaults.$(O_ARCH) .
  602. .
  603. .TP
  604. LIB_KVM
  605. a predefined macro that contains the operating system dependent
  606. name of a library
  607. that is needed by programs that read/write kernel virtual memory.
  608. Add 
  609. .I "$(LIB_KVM)
  610. to your list of libraries (e.g.
  611. .BR "LIBS= -lintl $(LIB_KVM)" ),
  612. if your target uses kvm.
  613. .
  614. .TP
  615. LIB_MATH
  616. a predefined macro that contains the operating system dependent
  617. name of a library
  618. that is needed by programs that use routines of the math library.
  619. Add 
  620. .I "$(LIB_MATH)
  621. to your list of libraries (e.g.
  622. .BR "LIBS= -lintl $(LIB_MATH)" ),
  623. if your target uses math subroutines.
  624. .
  625. .TP
  626. LIB_SOCKET
  627. a predefined macro that contains the operating system dependent
  628. name of a library
  629. that is needed by programs that use socket calls.
  630. Add 
  631. .I "$(LIB_SOCKET)
  632. to your list of libraries (e.g.
  633. .BR "LIBS= -lintl $(LIB_SOCKET)" ),
  634. if your target uses sockets. Note: this should (for portability reasons)
  635. even be done on systems that don't require a socket library because 
  636. they have the socket interface inside libc.
  637. .
  638. .TP
  639. LIBS_PATH
  640. this macro contains the path to a directory where those
  641. libraries are located, that have been build during
  642. a make run inside the current project.
  643. .br
  644. Do not change this macro.
  645. .
  646. .TP
  647. M_ARCH
  648. this macro contains the machine architecture for the
  649. target machine (e.g.
  650. .IR "sun3 sun4 ip22 i86pc i586 9000-725 aviion" ).
  651. It is set to the output of
  652. .I "arch
  653. converted to lower case.
  654. On systems, where 
  655. .I M_ARCH
  656. is not available, it is set to the content of 
  657. .IR K_ARCH .
  658. .br
  659. Do not change this macro.
  660. .
  661. .TP
  662. MK_FILES
  663. makefiles that divert into sub makes within the same directory
  664. must set 
  665. .I MK_FILES
  666. to be a list of makefile names for the sub makes.
  667. Makefile names for sub makes should have a name that is build
  668. by adding 
  669. .I .mk
  670. to the base name of the target that is defined inside the
  671. specific makefile.
  672. .
  673. .TP
  674. MAKEPROG
  675. Set this macro to the name of your make program if it does
  676. not support the macro
  677. .IR MAKE_NAME .
  678. The make program 
  679. .I smake
  680. is able to identify itself.
  681. If you want to use a make program that is not able
  682. to identify itself
  683. and it's name is not
  684. .IR make ,
  685. set 
  686. .I MAKEPROG
  687. to the name of the make program.
  688. Currently only 
  689. .I gmake
  690. is supported as alternate value for 
  691. .IR MAKEPROG .
  692. If you want to use an unsupported make program
  693. you have to check if it supports the needed features
  694. for
  695. .IR makefiles .
  696. You must write your own rule files for that make program.
  697. If you want to use 
  698. .IR gmake ,
  699. you should do
  700. .B "setenv MAKEPROG gmake
  701. before you start
  702. .I gmake
  703. or use a shell script that does this job for you.
  704. .
  705. .TP
  706. MAKE
  707. This macro is set up by the 
  708. .I make 
  709. program.
  710. It contains a path name that is sufficient to recursively
  711. call the same 
  712. .I make
  713. program again (either that last path component or the full path
  714. name of the make program).
  715. .br
  716. Do not change this macro.
  717. .
  718. .TP
  719. MAKEFLAGS
  720. This macro is set up by the 
  721. .I make 
  722. program.
  723. It contains the command line flags,
  724. .I make
  725. is called with.
  726. .br
  727. Do not change this macro.
  728. .
  729. .TP
  730. MAKE_ARCH
  731. This macro is currently set up by 
  732. .B smake 
  733. only.
  734. It contains the processor architecture of the target machine
  735. (e.g. mc68020, sparc, pentium).
  736. .br
  737. Do not change this macro.
  738. .
  739. .TP
  740. MAKE_BRAND
  741. This macro is currently set up by 
  742. .B smake 
  743. only.
  744. It contains the brand of the target machine
  745. (e.g. Sun_Microsystems(e.g. ).
  746. .br
  747. Do not change this macro.
  748. .
  749. .TP
  750. MAKE_HOST
  751. This macro is currently set up by 
  752. .B smake 
  753. only.
  754. It contains the host name of the target machine
  755. (e.g. duffy, sherwood, ghost).
  756. .br
  757. Do not change this macro.
  758. .
  759. .TP
  760. MAKE_MACH
  761. This macro is currently set up by 
  762. .B smake 
  763. only.
  764. It contains the kernel architecture of the target machine
  765. (e.g. sun3, sun4c, sun4m, sun4u).
  766. .br
  767. Do not change this macro.
  768. .
  769. .TP
  770. MAKE_MODEL
  771. This macro is currently set up by 
  772. .B smake 
  773. only.
  774. It contains the model name of the target machine
  775. (e.g. SUNW,SPARCstation-20).
  776. .br
  777. Do not change this macro.
  778. .
  779. .TP
  780. MAKE_M_ARCH
  781. This macro is currently set up by 
  782. .B smake 
  783. only.
  784. It contains the machine architecture of the target machine
  785. (e.g. sun3, sun4).
  786. .br
  787. Do not change this macro.
  788. .
  789. .TP
  790. MAKE_NAME
  791. This macro is currently set up by 
  792. .B smake 
  793. only.
  794. It contains the official name of the
  795. make program
  796. (e.g. make, smake, gmake).
  797. .br
  798. Do not change this macro.
  799. .
  800. .TP
  801. MAKE_OS
  802. This macro is currently set up by 
  803. .B smake 
  804. only.
  805. It contains the operating system name of the target machine
  806. (e.g. sunos, linux, dgux).
  807. .br
  808. Do not change this macro.
  809. .
  810. .TP
  811. MAKE_OSDEFS
  812. This macro is currently set up by 
  813. .B smake 
  814. only.
  815. It contains operating system specific defines for the compiler
  816. (e.g. -D__SVR4).
  817. .br
  818. Do not change this macro.
  819. .
  820. .TP
  821. MAKE_OSREL
  822. This macro is currently set up by 
  823. .B smake 
  824. only.
  825. It contains the operating system release name of the target machine
  826. (e.g. 5.5, 4.1.1).
  827. .br
  828. Do not change this macro.
  829. .
  830. .TP
  831. MAKE_OSVERSION
  832. This macro is currently set up by 
  833. .B smake 
  834. only.
  835. It contains the operating system version of the target machine
  836. (e.g. generic).
  837. .br
  838. Do not change this macro.
  839. .
  840. .TP
  841. MAKE_SERIAL
  842. This macro is currently set up by 
  843. .B smake 
  844. only.
  845. It contains the serial number of the target machine
  846. (e.g. 1920098175).
  847. .br
  848. Do not change this macro.
  849. .
  850. .TP
  851. MANDIR
  852. all makefiles for manual pages must set this macro to the
  853. path name relative to 
  854. .I INS_BASE
  855. where the manual page root dir for the project should be.
  856. Possible values for english manual pages are
  857. .IR man " or " share/man ,
  858. possible values for german manual pages are
  859. .IR man/de " or " share/man/de .
  860. .
  861. .TP
  862. MANFILE
  863. makefiles for manual pages set this macro to the name of the 
  864. troff source file for the manual page
  865. .
  866. .TP
  867. MANSECT
  868. makefiles for manual pages set this macro to the macro name that
  869. contains the real section name for this manual page. This is 
  870. necessary because bsd based system have different naming conventions than
  871. system V based systems. See below for a valid list of manual section
  872. macros.
  873. .TP
  874. MANSECT_ADMIN
  875. This macro contains the name of the sub directory for administrative
  876. commands and maintenance procedures.
  877. .br
  878. Do not change this macro.
  879. .TP
  880. MANSECT_CMD
  881. This macro contains the name of the sub directory for general 
  882. user commands.
  883. .br
  884. Do not change this macro.
  885. .TP
  886. MANSECT_DEMOS
  887. This macro contains the name of the sub directory for demo
  888. commands.
  889. .br
  890. Do not change this macro.
  891. .TP
  892. MANSECT_DEVICE
  893. This macro contains the name of the sub directory for 
  894. user level device interfaces.
  895. .br
  896. Do not change this macro.
  897. .TP
  898. MANSECT_DRIVER
  899. This macro contains the name of the sub directory for 
  900. kernel level device driver interfaces.
  901. .br
  902. Do not change this macro.
  903. .TP
  904. MANSECT_FILEFORM
  905. This macro contains the name of the sub directory for 
  906. file formats.
  907. .br
  908. Do not change this macro.
  909. .TP
  910. MANSECT_GAMES
  911. This macro contains the name of the sub directory for 
  912. games.
  913. .br
  914. Do not change this macro.
  915. .TP
  916. MANSECT_HDR
  917. This macro contains the name of the sub directory for 
  918. header files.
  919. .br
  920. Do not change this macro.
  921. .TP
  922. MANSECT_LIB
  923. This macro contains the name of the sub directory for 
  924. library function interfaces.
  925. .br
  926. Do not change this macro.
  927. .TP
  928. MANSECT_MACROS
  929. This macro contains the name of the sub directory for 
  930. troff macros.
  931. .br
  932. Do not change this macro.
  933. .TP
  934. MANSECT_NETWORK
  935. This macro contains the name of the sub directory for 
  936. user level network interfaces.
  937. .br
  938. Do not change this macro.
  939. .TP
  940. MANSECT_SYSCALL
  941. This macro contains the name of the sub directory for 
  942. system call interfaces.
  943. Do not change this macro.
  944. .TP
  945. MANSECT_TABLES
  946. This macro contains the name of the sub directory for 
  947. tables.
  948. Do not change this macro.
  949. .TP
  950. MANSTYLE
  951. This macro contains the name that is used to find the right
  952. ordering conventions for manual pages.
  953. Do not change this macro.
  954. .TP
  955. MANSUFFIX
  956. makefiles for manual pages set this macro to the macro name that
  957. contains the real suffix for this manual page. This is 
  958. necessary because bsd based system have different naming conventions than
  959. system V based systems. See below for a valid list of manual suffix
  960. macros.
  961. .TP
  962. MANSUFF_ADMIN
  963. This macro contains the name of the file suffix for administrative
  964. commands and maintenance procedures.
  965. .br
  966. Do not change this macro.
  967. .TP
  968. MANSUFF_CMD
  969. This macro contains the name of the file suffix for general 
  970. user commands.
  971. .br
  972. Do not change this macro.
  973. .TP
  974. MANSUFF_DEMOS
  975. This macro contains the name of the file suffix for demo
  976. commands.
  977. .br
  978. Do not change this macro.
  979. .TP
  980. MANSUFF_DEVICE
  981. This macro contains the name of the file suffix for 
  982. user level device interfaces.
  983. .br
  984. Do not change this macro.
  985. .TP
  986. MANSUFF_DRIVER
  987. This macro contains the name of the file suffix for 
  988. kernel level device driver interfaces.
  989. .br
  990. Do not change this macro.
  991. .TP
  992. MANSUFF_FILEFORM
  993. This macro contains the name of the file suffix for 
  994. file formats.
  995. .br
  996. Do not change this macro.
  997. .TP
  998. MANSUFF_GAMES
  999. This macro contains the name of the file suffix for 
  1000. games.
  1001. .br
  1002. Do not change this macro.
  1003. .TP
  1004. MANSUFF_HDR
  1005. This macro contains the name of the file suffix for 
  1006. header files.
  1007. .br
  1008. Do not change this macro.
  1009. .TP
  1010. MANSUFF_LIB
  1011. This macro contains the name of the file suffix for 
  1012. library function interfaces.
  1013. .br
  1014. Do not change this macro.
  1015. .TP
  1016. MANSUFF_MACROS
  1017. This macro contains the name of the file suffix for 
  1018. troff macros.
  1019. .br
  1020. Do not change this macro.
  1021. .TP
  1022. MANSUFF_NETWORK
  1023. This macro contains the name of the file suffix for 
  1024. user level network interfaces.
  1025. .br
  1026. Do not change this macro.
  1027. .TP
  1028. MANSUFF_SYSCALL
  1029. This macro contains the name of the file suffix for 
  1030. system call interfaces.
  1031. Do not change this macro.
  1032. .TP
  1033. MANSUFF_TABLES
  1034. This macro contains the name of the file suffix for 
  1035. tables.
  1036. Do not change this macro.
  1037. .TP
  1038. MARCH
  1039. this macro contains the machine architecture for the
  1040. target machine (e.g.
  1041. .IR "sun3 sun4 ip22 i86pc i586 9000-725 aviion" ).
  1042. It is set to the output of
  1043. .I "arch
  1044. converted to lower case.
  1045. On systems, where 
  1046. .I M_ARCH
  1047. is not available, it is set to the content of 
  1048. .IR K_ARCH .
  1049. .br
  1050. Do not change this macro unless you want to do a cross compilation.
  1051. .
  1052. .TP
  1053. O_ARCH
  1054. this macro contains the name of the operating system
  1055. converted to lower case.
  1056. It is usually the output of:
  1057. .IR "uname -s" .
  1058. It may contain a modified name if the compilation rules
  1059. for different version of the operating system differ (e.g.
  1060. on
  1061. .IR SunOS " and " Solaris ,
  1062. the official operation system name in both cases is
  1063. .IR SunOS ).
  1064. .br
  1065. Do not change this macro.
  1066. .
  1067. .TP
  1068. OARCH
  1069. this macro contains the object architecture that is used
  1070. for architecture dependent sub directories.
  1071. It is set to:
  1072. .IR "$(PARCH)-$(O_ARCH)-$(C_ARCH)" .
  1073. .br
  1074. Do not change this macro.
  1075. .
  1076. .TP
  1077. OARCHDIR
  1078. this macro contains the concatenation of 
  1079. .I OBJ/
  1080. and 
  1081. .IR "$(OARCH)" .
  1082. .br
  1083. Do not change this macro.
  1084. .
  1085. .TP
  1086. OFILES
  1087. this macro contains the list of objects that are the
  1088. the dependency list for the target.
  1089. It is constructed from the list of
  1090. assembler source files,
  1091. c source files,
  1092. lex source files and
  1093. yacc source files.
  1094. .br
  1095. Do not change this macro.
  1096. .
  1097. .TP
  1098. OINCSDIR
  1099. this macro contains the concatenation of 
  1100. .I $(SRCROOT)/incs/
  1101. and 
  1102. .IR "$(OARCH)" .
  1103. It is the location where include files that are made within a make run
  1104. and subject to global use will be placed.
  1105. .br
  1106. Do not change this macro.
  1107. .TP
  1108. OLIBSDIR
  1109. this macro contains the concatenation of 
  1110. .I $(SRCROOT)/libs/
  1111. and 
  1112. .IR "$(OARCH)" .
  1113. It is the location where libraries that are made within a make run
  1114. will be placed.
  1115. .br
  1116. Do not change this macro.
  1117. .
  1118. .TP
  1119. OSDEFS
  1120. this macro contains operating system specific c-preprocessor
  1121. definitions.
  1122. .br
  1123. Do not change this macro.
  1124. .
  1125. .TP
  1126. OSNAME
  1127. the unmodified name of the operating system converted to lower case.
  1128. See
  1129. .IR O_ARCH .
  1130. .br
  1131. Do not change this macro.
  1132. .
  1133. .TP
  1134. OSREL
  1135. the release of the operating system.
  1136. .br
  1137. Do not change this macro.
  1138. .
  1139. .TP
  1140. P_ARCH
  1141. this macro contains the processor architecture for the
  1142. target machine (e.g.
  1143. .IR "mc68020 mc88200 sparc pentium" ).
  1144. It is set to the output of
  1145. .I "uname -p
  1146. converted to lower case.
  1147. On systems, where 
  1148. .I P_ARCH
  1149. is not available, it is set to the content of 
  1150. .IR K_ARCH .
  1151. .br
  1152. Do not change this macro.
  1153. .
  1154. .TP
  1155. PARCH
  1156. this macro contains the processor architecture for the
  1157. target machine (e.g.
  1158. .IR "mc68020 mc88200 sparc pentium" ).
  1159. It is set to the output of
  1160. .I "uname -p
  1161. converted to lower case.
  1162. On systems, where 
  1163. .I P_ARCH
  1164. is not available, it is set to the content of 
  1165. .IR K_ARCH .
  1166. .br
  1167. Do not change this macro unless you want to do a cross compilation.
  1168. .
  1169. .TP
  1170. RULESDIR
  1171. the value of this macro must be set before
  1172. the rules file
  1173. .I "$(SRCROOT)/$(RULESDIR/rules.top
  1174. is included.
  1175. If you want to test the behavior of a modified version
  1176. of the
  1177. .I makefiles
  1178. in 
  1179. .IR RULESDIR ,
  1180. put a copy into an alternate directory, modify one or more
  1181. files in it and then use make with a different value of
  1182. .IR RULESDIR ,
  1183. that points to the alternate directory.
  1184. .
  1185. .TP
  1186. RUNPATH
  1187. is evaluated on systems, where 
  1188. .I LD_RUN_PATH
  1189. is supported.
  1190. It contains the default library search path for dynamic linked targets
  1191. on runtime. 
  1192. This search path will be stored inside the target.
  1193. This is usually set in the file
  1194. .I $(DEFLTSROOT)/$(DEFLTSDIR)/Defaults
  1195. or 
  1196. .IR $(DEFLTSROOT)/$(DEFLTSDIR)/Defaults.$(O_ARCH) .
  1197. Note that older systems will use 
  1198. .I LD_LIBRARY_PATH
  1199. for this purpose too.
  1200. .
  1201. .TP
  1202. SCRFILE
  1203. this macro must be set in a leaf makefile for shell scripts to define
  1204. the source for that script file.
  1205. .
  1206. .TP
  1207. SRCFILE
  1208. this macro must be set in a leaf makefile for localized files to define
  1209. the source for that file.
  1210. .
  1211. .TP
  1212. SRCROOT
  1213. this macro contains the relative position to the project's
  1214. source root directory.
  1215. The value of this macro must be set before
  1216. the rules file
  1217. .I "$(SRCROOT)/$(RULESDIR/rules.top
  1218. is included.
  1219. .I SRCROOT
  1220. should be set to
  1221. .I ../..
  1222. if the appropriate leaf makefile is located two directory
  1223. levels below the source route.
  1224. .
  1225. .TP
  1226. SUBARCHDIR
  1227. may be set to put the object files and the target into
  1228. a different directory than usual.
  1229. .I SUBARCHDIR
  1230. will modify the value of 
  1231. .IR ARCHDIR .
  1232. If you want to make a target that is compiled for 
  1233. .I dbx
  1234. you may use:
  1235. .IR "make COPTX=-g SUBARCHDIR=-dbx" .
  1236. .
  1237. .TP
  1238. TARGET
  1239. all makefiles, that are not referring to library targets or
  1240. sub makes / sub dir makes,
  1241. must define
  1242. .I TARGET
  1243. to be the output file name of the final link operation.
  1244. .
  1245. .TP
  1246. TARGETLIB
  1247. all makefiles that are used to make libraries
  1248. must define
  1249. .I TARGETLIB
  1250. to be the central part of the target library.
  1251. If you want to make e.g.
  1252. .I libfoo
  1253. define
  1254. .IR "TARGETLIB= foo" .
  1255. This is needed to allow operating systems to have different naming 
  1256. conventions for libraries.
  1257. If you are making a non shared library, the example above
  1258. would result in a filename:
  1259. .I libfoo.a
  1260. for the real target.
  1261. .
  1262. .TP
  1263. TARGETMAN
  1264. this macro must be set in a leaf makefile for manual pages to define
  1265. the base name for that manual page (not including the suffix).
  1266. .
  1267. .TP
  1268. XMK_FILE
  1269. makefiles that want to install manual pages should set 
  1270. .I XMK_FILE
  1271. to 
  1272. .B Makefile.man
  1273. to avoid having to install a diversion make file. 
  1274. The make file found in
  1275. .I XMK_FILE
  1276. will be processed only if 
  1277. .I make
  1278. is called with the target 
  1279. .IR install .
  1280. .SH "GETTING STARTED
  1281. .PP
  1282. To set up a new project, first copy the 
  1283. .IR RULES " and " TEMPLATES
  1284. directories and all its content into the project's root directory.
  1285. .PP
  1286. Then copy a top level makefile, a 
  1287. .I Defaults
  1288. file and a 
  1289. .I Targetdirs.archname
  1290. file into the project's root directory.
  1291. .PP
  1292. Then create the following directories:
  1293. .IR cmd ", " lib ", " include .
  1294. .PP
  1295. Now start creating target directories e.g below
  1296. .IR cmd " and " lib .
  1297. Don't forget to create a makefile and an appropriate
  1298. .I Targetdirs.archname 
  1299. file on each node directory.
  1300. .SH EXAMPLES
  1301. .PP
  1302. If you want to set up a private copy of parts of a project,
  1303. you should choose a directory inside your directory tree that will become
  1304. the shadow projects source root directory.
  1305. Then create symbolic links named 
  1306. .IR RULES " and " TEMPLATES
  1307. to the real source root.
  1308. If you don't want to modify the global include files,
  1309. create a symbolic link to the
  1310. .I include
  1311. directory too, else copy the include directory and its content.
  1312. copy the top level makefile, the 
  1313. .I Defaults
  1314. file and the
  1315. .I Targetdirs.archname 
  1316. file.
  1317. .PP
  1318. Finally copy the desired sub tree together with all
  1319. makefiles and the 
  1320. .I Targetdirs.archname 
  1321. files that are located in the directories above
  1322. your part of the project that you want to have separately.
  1323. .SH FILES
  1324. &.|.|./RULES/*
  1325. .br
  1326. &.|.|./DEFAULTS/*
  1327. .br
  1328. &.|.|./TARGETS/*
  1329. .br
  1330. &.|.|./TEMPLATES/*
  1331. .SH "SEE ALSO"
  1332. .BR makerules (4),
  1333. .BR make (1),
  1334. .BR gmake (1),
  1335. .BR smake (1).
  1336. .PP
  1337. If you want to know, how to add new rules or how to add support
  1338. for new operating systems or compilers look into 
  1339. .BR makerules (4).
  1340. .SH DIAGNOSTICS
  1341. Diagnostic messages depend on the make program.
  1342. Have a look at the appropriate man page.
  1343. .SH NOTES
  1344. The scope of this manual is only the usage of 
  1345. .BR "leaf makefiles" .
  1346. If you want to make changes to the 
  1347. .B make rules
  1348. have a look at
  1349. .BR makerules (4).
  1350. .PP
  1351. .I makefiles
  1352. can be used with 
  1353. .IR "Sunpro make" ", " "Gnu make"
  1354. and 
  1355. .IR smake .
  1356. Although Gnu make runs on many platforms, it has no useful debug
  1357. output.
  1358. .PP
  1359. Use
  1360. .IR "Sunpro make" " or " "smake"
  1361. if you have problems with a makefile.
  1362. .IR "Sunpro make" " and " "smake" ,
  1363. both have a -D flag, that allows you to watch the makefiles
  1364. after the first expansion. Use this option, if you are in doubt
  1365. if your makefile gets expanded the right way and if the right
  1366. rules are included.
  1367. There is also a -d option that gives debugging output while 
  1368. make is running. If you want more output, use -dd, -ddd and so on.
  1369. .PP
  1370. .I Smake
  1371. has an option -xM that shows you the include dependency for
  1372. make rules.
  1373. .PP
  1374. .ne 20
  1375. The following is a list of all macros that are used in 
  1376. .IR makefiles .
  1377. Do not use them unless their meaning has been explained
  1378. before.
  1379. .PP
  1380. .BR -O_ARCH ,
  1381. .BR .OBJDIR ,
  1382. .BR .SEARCHLIST ,
  1383. .BR ALLTARGETS ,
  1384. .BR AR ,
  1385. .BR ARCH ,
  1386. .BR ARCHDIR ,
  1387. .BR ARCHDIRX ,
  1388. .BR ARCH_DONE ,
  1389. .BR ARFLAGS ,
  1390. .BR AS ,
  1391. .BR ASFLAGS ,
  1392. .BR ASMFILES ,
  1393. .BR ASOPTS ,
  1394. .BR ASOPTX ,
  1395. .BR CC ,
  1396. .BR CCOM ,
  1397. .BR CCOM_DEF ,
  1398. .BR CFILES ,
  1399. .BR CFLAGS ,
  1400. .BR CHGRP ,
  1401. .BR CHMOD ,
  1402. .BR CHOWN ,
  1403. .BR CLEAN_FILES ,
  1404. .BR CLEAN_FILEX ,
  1405. .BR CLOBBER_FILEX ,
  1406. .BR COPTDYN ,
  1407. .BR COPTGPROF ,
  1408. .BR COPTOPT ,
  1409. .BR COPTS ,
  1410. .BR COPTX ,
  1411. .BR CPP ,
  1412. .BR CPPFLAGS ,
  1413. .BR CPPOPTS ,
  1414. .BR CPPOPTX ,
  1415. .BR CTAGS ,
  1416. .BR CURDIR ,
  1417. .BR C_ARCH ,
  1418. .BR DEFAULTSDIR ,
  1419. .BR DEFAULTSROOT ,
  1420. .BR DEFCCOM ,
  1421. .BR DEFCCOM_DEF ,
  1422. .BR DEFINCDIRS ,
  1423. .BR DEFINCDIRS_DEF ,
  1424. .BR DEFINSGRP ,
  1425. .BR DEFINSMODE ,
  1426. .BR DEFINSUSR ,
  1427. .BR DEFUMASK ,
  1428. .BR DEF_ROOT ,
  1429. .BR DEP_DEP ,
  1430. .BR DEP_FILE ,
  1431. .BR DEP_SUFFIX ,
  1432. .BR DIRNAME ,
  1433. .BR DIRS ,
  1434. .BR DYNLD ,
  1435. .BR ETAGS ,
  1436. .BR FLOAT_OPTIONS ,
  1437. .BR HFILES ,
  1438. .BR HOSTNAME ,
  1439. .BR INCDIRS ,
  1440. .BR INSDIR ,
  1441. .BR INSGRP ,
  1442. .BR INSGRP_DEF ,
  1443. .BR INSMODE ,
  1444. .BR INSMODE_DEF ,
  1445. .BR INSTALL ,
  1446. .BR INSUSR ,
  1447. .BR INSUSR_DEF ,
  1448. .BR INS_BASE ,
  1449. .BR INS_KBASE ,
  1450. .BR KARCH ,
  1451. .BR KARCH_DEF ,
  1452. .BR KDEFINES ,
  1453. .BR K_ARCH ,
  1454. .BR LD ,
  1455. .BR LDCC ,
  1456. .BR LDFLAGS ,
  1457. .BR LDLIBS ,
  1458. .BR LDOPTDYN ,
  1459. .BR LDOPTS ,
  1460. .BR LDOPTX ,
  1461. .BR LDPATH ,
  1462. .BR LIBS ,
  1463. .BR LIBS_PATH ,
  1464. .BR LIBX ,
  1465. .BR LIB_KVM ,
  1466. .BR LIB_MATH ,
  1467. .BR LIB_PREFIX ,
  1468. .BR LIB_SOCKET ,
  1469. .BR LIB_SUFFIX ,
  1470. .BR LN ,
  1471. .BR LNDYNLIB ,
  1472. .BR LOCALIZE ,
  1473. .BR LORDER ,
  1474. .BR MAKE ,
  1475. .BR MK_FILES ,
  1476. .BR MAKEPROG ,
  1477. .BR MAKE_ARCH ,
  1478. .BR MAKE_HOST ,
  1479. .BR MAKE_MACH ,
  1480. .BR MAKE_M_ARCH ,
  1481. .BR MAKE_NAME ,
  1482. .BR MAKE_OS ,
  1483. .BR MAKE_OSDEFS ,
  1484. .BR MAKE_OSREL ,
  1485. .BR MANDIR ,
  1486. .BR MANFILE ,
  1487. .BR MANSECT ,
  1488. .BR MANSECT_ADMIN ,
  1489. .BR MANSECT_CMD ,
  1490. .BR MANSECT_DEMOS ,
  1491. .BR MANSECT_DEVICE ,
  1492. .BR MANSECT_DRIVER ,
  1493. .BR MANSECT_FILEFORM ,
  1494. .BR MANSECT_GAMES ,
  1495. .BR MANSECT_HDR ,
  1496. .BR MANSECT_LIB ,
  1497. .BR MANSECT_MACROS ,
  1498. .BR MANSECT_NETWORK ,
  1499. .BR MANSECT_SYSCALL ,
  1500. .BR MANSECT_TABLES ,
  1501. .BR MANSTYLE ,
  1502. .BR MANSUFFIX ,
  1503. .BR MANSUFF_ADMIN ,
  1504. .BR MANSUFF_CMD ,
  1505. .BR MANSUFF_DEMOS ,
  1506. .BR MANSUFF_DEVICE ,
  1507. .BR MANSUFF_DRIVER ,
  1508. .BR MANSUFF_FILEFORM ,
  1509. .BR MANSUFF_GAMES ,
  1510. .BR MANSUFF_HDR ,
  1511. .BR MANSUFF_LIB ,
  1512. .BR MANSUFF_MACROS ,
  1513. .BR MANSUFF_NETWORK ,
  1514. .BR MANSUFF_SYSCALL ,
  1515. .BR MANSUFF_TABLES ,
  1516. .BR MARCH ,
  1517. .BR MARCH_DEF ,
  1518. .BR MKDEP ,
  1519. .BR MKDEP_OUT ,
  1520. .BR MKDIR ,
  1521. .BR MV ,
  1522. .BR M_ARCH ,
  1523. .BR OARCH ,
  1524. .BR OARCHDIR ,
  1525. .BR OFILES ,
  1526. .BR OINCSDIR ,
  1527. .BR OLIBSDIR ,
  1528. .BR OSDEFS ,
  1529. .BR OSNAME ,
  1530. .BR OSREL ,
  1531. .BR O_ARCH ,
  1532. .BR PALLDEP_FILE ,
  1533. .BR PARCH ,
  1534. .BR PARCH_DEF ,
  1535. .BR PASMFILES ,
  1536. .BR PDEP_FILE ,
  1537. .BR PLOFILES ,
  1538. .BR POFILES ,
  1539. .BR PTARGET ,
  1540. .BR PTARGET_BASE ,
  1541. .BR PYOFILES ,
  1542. .BR P_ARCH ,
  1543. .BR RANLIB ,
  1544. .BR RM ,
  1545. .BR RMDEP ,
  1546. .BR RMTARGET ,
  1547. .BR RM_FORCE ,
  1548. .BR RM_RECURS ,
  1549. .BR RM_RF ,
  1550. .BR RULESDIR ,
  1551. .BR RUNPATH ,
  1552. .BR SCRFILE ,
  1553. .BR SHELL ,
  1554. .BR SHL_SUFFIX ,
  1555. .BR SRCFILE ,
  1556. .BR SRCLIBS ,
  1557. .BR SRCROOT ,
  1558. .BR SUBARCH ,
  1559. .BR SUBARCHDIR ,
  1560. .BR SYMLINK ,
  1561. .BR TAGS ,
  1562. .BR TARGET ,
  1563. .BR TARGETLIB ,
  1564. .BR TARGETMAN ,
  1565. .BR TARGET_BASE ,
  1566. .BR TARGET_PATH ,
  1567. .BR TSORT ,
  1568. .BR UMASK ,
  1569. .BR UMASK_DEF ,
  1570. .BR UMASK_VAL ,
  1571. .BR XARCH ,
  1572. .BR XK_ARCH ,
  1573. .BR XMK_FILE ,
  1574. .BR XMAKEPROG ,
  1575. .BR XM_ARCH ,
  1576. .BR XP_ARCH ,
  1577. .BR _CCOM ,
  1578. .BR _DEFAULTSDIR ,
  1579. .BR _DEFCCOM ,
  1580. .BR _DEFINSGRP ,
  1581. .BR _DEFINSMODE ,
  1582. .BR _DEFINSUSR ,
  1583. .BR _DEFUMASK ,
  1584. .BR _DIRNAME ,
  1585. .BR _INCDIRS ,
  1586. .BR _MAKEPROG ,
  1587. .BR _MARCH ,
  1588. .BR _M_ARCH ,
  1589. .BR _O_ARCH ,
  1590. .BR _PARCH ,
  1591. .BR _P_ARCH ,
  1592. .BR _UNIQ ,
  1593. .BR __CCOM ,
  1594. .BR __DEFAULTSDIR ,
  1595. .BR __DEFCCOM ,
  1596. .BR __DEFINSGRP ,
  1597. .BR __DEFINSMODE ,
  1598. .BR __DEFINSUSR ,
  1599. .BR __DEFUMASK ,
  1600. .BR __DIRNAME ,
  1601. .BR __INCDIRS ,
  1602. .BR __MAKEPROG ,
  1603. .BR __MARCH ,
  1604. .BR __M_ARCH ,
  1605. .BR __PARCH ,
  1606. .BR __P_ARCH ,
  1607. .SH BUGS
  1608. .SH "Source Tree Hierarchy
  1609. .LP
  1610. The following outline gives a quick tour through a typical
  1611. source hierarchy:
  1612. .LP
  1613. .na
  1614. .nh
  1615. .PD 0
  1616. .TP
  1617. .B .../
  1618. root directory of the source tree
  1619. .
  1620. .RS
  1621. .TP
  1622. .B Makefile
  1623. the top Makefile
  1624. .TP
  1625. .B Targetdirs
  1626. a file containing a list of directories that are needed
  1627. for that project.
  1628. If the system needs different target lists depending
  1629. on the target system architecture , use target specific files in
  1630. .B .../TARGETS/
  1631. .TP
  1632. &.|.|.
  1633. .RE
  1634. .
  1635. .TP
  1636. .B .../RULES/
  1637. the location of makefiles (included rules)
  1638. .
  1639. .RS
  1640. .TP
  1641. .B rules.top
  1642. the mandatory include rules (needed to setup basic rules)
  1643. .TP
  1644. .B rules.aux
  1645. rules needed to install a non localized auxiliary file
  1646. .TP
  1647. .B rules.cmd
  1648. rules needed to make an ordinary command (like /bin/sh)
  1649. .TP
  1650. .B rules.drv
  1651. rules needed to make a device driver
  1652. .TP
  1653. .B rules.lib
  1654. rules needed to make a standard (nonshared) library
  1655. .TP
  1656. .B rules.loc
  1657. rules needed to install a localized auxiliary file
  1658. .TP
  1659. .B rules.man
  1660. rules needed to install a localized manual page
  1661. .TP
  1662. .B rules.scr
  1663. rules needed to install a localized shell script
  1664. .TP
  1665. .B rules.shl
  1666. rules needed to make a shared library
  1667. .TP
  1668. .B rules.mks
  1669. rules needed to make more than one target in a specific directory
  1670. .TP
  1671. .B rules.dir
  1672. rules needed to make targets that are located in sub directories
  1673. to the current directory
  1674. .TP
  1675. &.|.|.
  1676. .RE
  1677. .
  1678. .TP
  1679. .B .../DEFAULTS/
  1680. default definitions for various target architectures are
  1681. located in this directory. Templates for some architectures can
  1682. be found in the
  1683. .I .../TEMPLATES/
  1684. directory.
  1685. .RS
  1686. .TP
  1687. .B Defaults
  1688. default definitions for that source tree. System dependent
  1689. definitions are in 
  1690. .B .../DEFAULTS/Defaults.*
  1691. .RE
  1692. .TP
  1693. .B .../TARGETS/
  1694. target list definitions for various target architectures are
  1695. located in this directory.
  1696. .TP
  1697. .B .../TEMPLATES/
  1698. templates that should be used inside the project
  1699. (rename to Makefile, if it is the only makefile in that directory, 
  1700. rename to
  1701. .I target.mk,
  1702. if there is more than one target in that directory)
  1703. .
  1704. .RS
  1705. .TP
  1706. .B Defaults
  1707. Defaults file for the source root directory
  1708. .TP
  1709. .B Defaults.linux
  1710. Defaults file for 
  1711. .IR linux .
  1712. This should be installed in the 
  1713. .B .../DEFAULTS/
  1714. directory.
  1715. .TP
  1716. .B Makefile.root
  1717. Makefile for the source root directory
  1718. .TP
  1719. .B Makefile.aux
  1720. Makefile for a non localized auxiliary file
  1721. .TP
  1722. .B Makefile.cmd
  1723. Makefile for an ordinary command (like /bin/sh)
  1724. .TP
  1725. .B Makefile.lib
  1726. Makefile for a standard (nonshared) library
  1727. .TP
  1728. .B Makefile.loc
  1729. Makefile for a localized auxiliary file
  1730. .TP
  1731. .B Makefile.man
  1732. Makefile for a localized manual page
  1733. .TP
  1734. .B Makefile_de.man
  1735. Makefile for a localized manual page in the german locale
  1736. .TP
  1737. .B Makefile.scr
  1738. Makefile for a localized shell script
  1739. .TP
  1740. .B Makefile.shl
  1741. Makefile for a shared library
  1742. .TP
  1743. .B Makefile.drv
  1744. Makefile for a device driver
  1745. .TP
  1746. .B Makefile.mks
  1747. Makefile for more than one target in a specific directory
  1748. .TP
  1749. .B Makefile.dir
  1750. Makefile for targets that are located in sub directories
  1751. to the current directory
  1752. .TP
  1753. &.|.|.
  1754. .RE
  1755. .
  1756. .TP
  1757. .B .../cmd/
  1758. source tree for normal commands
  1759. .
  1760. .RS
  1761. .TP
  1762. .B Makefile
  1763. the makefile for the 
  1764. .I cmd 
  1765. sub directory
  1766. .TP
  1767. .B Targetdirs.sun4m
  1768. a file containing a list of directories like 
  1769. .I myprog 
  1770. (see below) that are needed
  1771. for that specific architecture.
  1772. .TP
  1773. .B myprog/
  1774. directory where the sources for a specific command are located
  1775. .
  1776. .RS
  1777. .TP
  1778. Makefile
  1779. makefile for
  1780. .I myprog
  1781. .TP
  1782. Makefile.man
  1783. makefile for the manual page of
  1784. .I myprog
  1785. .TP
  1786. mprog.c
  1787. source for myprog
  1788. .TP
  1789. mprog.tr
  1790. troff source for the manual page of myprog
  1791. .TP
  1792. .B OBJ/
  1793. directory where system specific sub directories are located
  1794. .
  1795. .RS
  1796. .TP
  1797. .B sparc-sunos5-cc/
  1798. directory for binaries that belong to a specific system
  1799. .TP
  1800. &.|.|.
  1801. .RE
  1802. .TP
  1803. &.|.|.
  1804. .RE
  1805. .br
  1806. .TP
  1807. &.|.|.
  1808. .RE
  1809. .br
  1810. .ne 5
  1811. .TP
  1812. .B .../lib/
  1813. directory where the sources for a libraries are located
  1814. .
  1815. .RS
  1816. .TP
  1817. .B Makefile
  1818. the makefile for the 
  1819. .I lib 
  1820. sub directory
  1821. .TP
  1822. .B Targetdirs.sun4m
  1823. a file containing a list of directories like 
  1824. .I libfoo
  1825. (see below) that are needed
  1826. for that specific architecture.
  1827. .TP
  1828. .B libfoo/
  1829. directory where all source files for libfoo are located
  1830. .TP
  1831. &.|.|.
  1832. .RE
  1833. .
  1834. .TP
  1835. .B .../kernel
  1836. directory for kernel modules
  1837. .
  1838. .RS
  1839. .TP
  1840. .B Makefile
  1841. the makefile for the 
  1842. .I kernel
  1843. sub directory
  1844. .TP
  1845. .B Targetdirs.sun4m
  1846. a file containing a list of directories like 
  1847. .I drv 
  1848. (see below) that are needed
  1849. for that specific architecture.
  1850. .TP
  1851. .B drv/
  1852. directory where drivers are located
  1853. .
  1854. .RS
  1855. .TP
  1856. .B Makefile
  1857. the makefile for the 
  1858. .I drv
  1859. sub directory
  1860. .TP
  1861. .B Targetdirs.sun4m
  1862. a file containing a list of directories like 
  1863. .I mydrv
  1864. (see below) that are needed
  1865. for that specific architecture.
  1866. .TP
  1867. .B mydrv/
  1868. source for a specific driver
  1869. .TP
  1870. &.|.|.
  1871. .RE
  1872. .
  1873. .TP
  1874. &.|.|.
  1875. .RE
  1876. .
  1877. .TP
  1878. .B .../include
  1879. directory for global include files that are used in that project
  1880. .
  1881. .TP
  1882. .B .../bins
  1883. directory for binary programs that are created/needed while compiling
  1884. the project
  1885. .RS
  1886. .TP
  1887. .B sparc-sunos5-cc/
  1888. directory for binaries that belong to a specific system
  1889. .TP
  1890. &.|.|.
  1891. .RE
  1892. .
  1893. .TP
  1894. .B .../libs
  1895. directory for libraries that are created/needed while compiling
  1896. the project
  1897. .RS
  1898. .TP
  1899. .B sparc-sunos5-cc/
  1900. directory for libraries that belong to a specific system
  1901. .TP
  1902. &.|.|.
  1903. .RE
  1904. .
  1905. .TP
  1906. .B .../incs
  1907. directory for include files that are created/needed while compiling
  1908. the project
  1909. .RS
  1910. .TP
  1911. .B sparc-sunos5-cc/
  1912. directory for include files that belong to a specific system
  1913. .TP
  1914. &.|.|.
  1915. .RE
  1916. .TP
  1917. &.|.|.
  1918. .RE
  1919. .
  1920. .ad
  1921. .PD
  1922. .SH AUTHOR
  1923. .nf
  1924. J*org Schilling
  1925. Seestr. 110
  1926. D-13353 Berlin
  1927. Germany
  1928. .fi
  1929. .PP
  1930. Mail bugs and suggestions to:
  1931. .PP
  1932. .B
  1933. joerg@schily.isdn.cs.tu-berlin.de
  1934. or
  1935. .B
  1936. js@cs.tu-berlin.de
  1937. or
  1938. .B
  1939. jes@fokus.gmd.de