I have concatenated 2 makefiles, to produce 1 however it is not running all of the code, producing a fatal error: symbol referencing errors. No output written. Can anybody please help? (4 Replies)
I need to develop a makefile that spans across directories. For example, let's say i have an upper level directory (main) and about 2 subdirectories. I want my .cpp files and .o files to be in one subdirectory. I want my .a files to be in the other subdirectory. The .a files are made up of the... (0 Replies)
for example in my make file im building path from env variables and string but need to see what is did
what is the best way to print the result?
say I have in my Makefile :
exec_prefix = $(RUN_ENV_LOCAL)/apache
and I will like to print the exec_prefix value , how can it be done ? (1 Reply)
Are the programs written on schedulers ,thread library , process management, memory management, et al called systems programs ? How are they different from the programs that implement functions like open() , printf() , scanf() , read() .. they have a prefix sys_open, sys_close, sys_read etc , right... (1 Reply)
I have several programs in several directories and want to use make to build the executables. What I have done is to put the main programs in their own directory together with a makefile to build the program. Then I am thinking of having another makefile residing in the directory above so I can run... (1 Reply)
I have the following part of a makefile and want to simplify it
using rules rather than having to code the same two blocks
when I need ti build another program.
An having difficulty doing it
all: 1dvel2 1dvel 2dvel
... (8 Replies)
I am trying to practice to create Makefiles. The goal is to create a makefile such that if a change is made to any of the source code files, the project can be rebuilt by typing make at the command line.
I have the following files:
ac.cc: has include ac.h and pg.h
fr.cc: has main... (8 Replies)
Hey guys,
Suppose i run passwd via bash shell. It is a suid program, which temporarily runs as root(owner) and modifies the user entries.
However, when i write a C file and give 4755 permission and root ownership to the 'a.out' file , it doesn't run as root in bash shell. I verified this by... (2 Replies)
Hi All,
I was going through some makefiles where I saw occurrences of explib_subdirs and expinc_subdirs, which I could not understand.
Exporting libs to subdirs ? Exporting include files to specified subdirs ? When do we need to do that ?
What I could understand is, for a build, I would... (4 Replies)
Discussion started by: alltaken
4 Replies
LEARN ABOUT FREEBSD
style.makefile
STYLE.MAKEFILE(5) BSD File Formats Manual STYLE.MAKEFILE(5)NAME
style.Makefile -- FreeBSD Makefile file style guide
DESCRIPTION
This file specifies the preferred style for makefiles in the FreeBSD source tree.
o All makefiles should have an SCM ID at the start of the file, followed by a blank line.
# $FreeBSD$
o .PATH: comes next if needed, and is spelled ``.PATH: '', with a single ASCII space after a colon. Do not use the VPATH variable.
o Special variables (i.e., LIB, SRCS, MLINKS, etc.) are listed in order of ``product'', then building and installing a binary. Special
variables may also be listed in ``build'' order: i.e., ones for the primary program (or library) first. The general ``product'' order
is: PROG/[SH]LIB/SCRIPTS FILES LINKS [NO_]MAN MLINKS INCS SRCS WARNS CFLAGS DPADD LDADD. The general ``build'' order is:
PROG/[SH]LIB/SCRIPTS SRCS WARNS CFLAGS DPADD LDADD INCS FILES LINKS [NO_]MAN MLINKS.
o Omit SRCS when using <bsd.prog.mk> and there is a single source file named the same as the PROG.
o Omit MAN when using <bsd.prog.mk> and the manual page is named the same as the PROG, and is in section 1.
o All variable assignments are spelled ``VAR='', i.e., no space between the variable name and the =. Keep values sorted alphabetically, if
possible.
o Do not use += to set variables that are only set once (or to set variables for the first time).
o Do not use vertical whitespace in simple makefiles, but do use it to group locally related things in more complex/longer ones.
o WARNS comes before CFLAGS, as it is basically a CFLAGS modifier. It comes before CFLAGS rather than after CFLAGS so it does not get lost
in a sea of CFLAGS statements as WARNS is an important thing. The usage of WARNS is spelled ``WARNS?= '', so that it may be overridden
on the command line or in make.conf(5).
o ``NO_WERROR= yes'' should not be used, it defeats the purpose of WARNS. It should only be used on the command line and in special cir-
cumstances.
o CFLAGS is spelled ``CFLAGS+= ''.
o Listing -D's before -I's in CFLAGS is preferred for alphabetical ordering and to make -D's easier to see. The -D's often affect condi-
tional compilation, and -I's tend to be quite long. Split long CFLAGS settings between the -D's and -I's.
o Do not use GCCisms (such as -g and -Wall) in CFLAGS.
o Typically, there is one ASCII tab between VAR= and the value in order to start the value in column 9. An ASCII space is allowed for
variable names that extend beyond column 9. A lack of whitespace is also allowed for very long variable names.
o .include <bsd.*.mk> goes last.
o Do not use anachronisms like $< and $@. Instead use ${.IMPSRC} or ${.ALLSRC} and ${.TARGET}.
o To not build the ``foo'' part of the base system, use NO_FOO, not NOFOO.
o To optionally build something in the base system, spell the knob WITH_FOO not WANT_FOO or USE_FOO. The latter are reserved for the
FreeBSD Ports Collection.
o For variables that are only checked with defined(), do not provide any fake value.
The desire to express a logical grouping often means not obeying some of the above.
EXAMPLES
The simplest program Makefile is:
# $FreeBSD$
PROG= foo
.include <bsd.prog.mk>
The simplest library Makefile is:
# $FreeBSD$
LIB= foo
SHLIB_MAJOR= 1
MAN= libfoo.3
SRCS= foo.c
.include <bsd.lib.mk>
SEE ALSO make(1), make.conf(5), style(9)HISTORY
This manual page is inspired from the same source as style(9) manual page in FreeBSD.
BUGS
There are few hard and fast style rules here. The style of many things is too dependent on the context of the whole makefile, or the lines
surrounding it.
BSD January 8, 2005 BSD