/[baselayout]/trunk/src/Makefile
Gentoo

Contents of /trunk/src/Makefile

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2547 - (hide annotations) (download)
Thu Apr 5 11:18:42 2007 UTC (7 years ago) by uberlord
File size: 4860 byte(s)
    Rewrite the core parts in C. We now provide librc so other programs can
    query runlevels, services and state without using bash. We also provide
    libeinfo so other programs can easily use our informational functions.

    As such, we have dropped the requirement of using bash as the init script
    shell. We now use /bin/sh and have strived to make the scripts as portable
    as possible. Shells that work are bash and dash. busybox works provided
    you disable s-s-d. If you have WIPE_TMP set to yes in conf.d/bootmisc you
    should disable find too.
    zsh and ksh do not work at this time.

    Networking support is currently being re-vamped also as it was heavily bash
    array based. As such, a new config format is available like so
    config_eth0="1.2.3.4/24 5.6.7.8/16"
    or like so
    config_eth0="'1.2.3.4 netmask 255.255.255.0' '5.6.7.8 netmask 255.255.0.0'"

    We will still support the old bash array format provided that /bin/sh IS
    a link it bash.

    ChangeLog for baselayout-1 can be found in our SVN repo.
1 uberlord 2547 # Copyright 1999-2007 Gentoo Foundation
2     # Distributed under the terms of the GNU General Public License v2
3    
4     CC ?= gcc
5    
6     CFLAGS ?= -Wall -O2 -pipe
7     CFLAGS += -pedantic -std=c99 \
8     -Wall -Wextra -Wunused -Wimplicit -Wshadow -Wformat=2 \
9     -Wmissing-declarations -Wno-missing-prototypes -Wwrite-strings \
10     -Wbad-function-cast -Wnested-externs -Wcomment -Winline \
11     -Wchar-subscripts -Wcast-align -Wno-format-nonliteral
12    
13     # Early GCC versions don't support these flags, so you may need to comment
14     # this line out
15     CFLAGS += -Wsequence-point -Wextra -Wdeclaration-after-statement
16    
17     # For debugging. -Werror is pointless due to ISO C issues with dlsym
18     #CFLAGS += -ggdb
19    
20     DESTDIR =
21     LIB = lib
22    
23     LIBEINFOSOVER = 0
24     LIBEINFOSO = libeinfo.so.$(LIBRCSOVER)
25     LIBEINFOOBJS= libeinfo.o
26    
27     LIBRCSOVER = 0
28     LIBRCSO = librc.so.$(LIBRCSOVER)
29     LIBRCOBJS= librc.o librc-depend.o librc-daemon.o librc-misc.o librc-strlist.o
30    
31     LIB_TARGETS = $(LIBEINFOSO) $(LIBRCSO)
32     BIN_TARGETS = rc-status
33     SBIN_TARGETS = env-update fstabinfo mountinfo \
34     rc rc-depend rc-update runscript start-stop-daemon
35     SYS_WHITELIST = env_whitelist
36    
37     TARGET = $(LIB_TARGETS) $(BIN_TARGETS) $(SBIN_TARGETS)
38    
39     RCLINKS = einfon einfo ewarnn ewarn eerrorn eerror ebegin eend ewend \
40     eindent eoutdent eflush color_terminal \
41     veinfo vewarn vebegin veend vewend veindent veoutdent \
42     service_starting service_inactive service_started \
43     service_stopping service_stopped \
44     service_inactive service_wasinactive \
45     service_coldplugged \
46     mark_service_starting mark_service_inactive mark_service_started \
47     mark_service_stopping mark_service_stopped \
48     mark_service_inactive mark_service_wasinactive \
49     mark_service_coldplugged \
50     get_options save_options \
51     is_runlevel_start is_runlevel_stop service_started_daemon
52    
53     # Quick hack to make my life easier on BSD and Linux
54     ifeq ($(OS),)
55     OS=$(shell uname -s)
56     ifneq ($(OS),Linux)
57     OS=BSD
58     endif
59     endif
60    
61     ifeq ($(OS),Linux)
62     LDLIBS_RC = -ldl
63     LDLIBS_RS = -ldl
64     # Shouldn't need this, but it's the easiest workaround for silly
65     # Linux headers that don't work with -std=c99
66     override CFLAGS += -D_GNU_SOURCE
67     endif
68     ifeq ($(OS),BSD)
69     override LDLIBS += -lkvm
70     endif
71    
72     HAVE_PAM =
73     ifdef HAVE_PAM
74     CFLAGS_SSD = -DHAVE_PAM
75     LDLIBS_SSD = -lpam
76     endif
77    
78     # We also define _BSD_SOURCE so both Linux and the BSDs get a few
79     # handy functions which makes our lives a lot easier
80     override CFLAGS += -DLIBDIR=\"$(LIB)\"
81    
82     # IMPORTANT!!!
83     # Remove this when releasing as it's a security risk
84     # However, this does save us using libtool when we're testing
85     # NOTE: The toplevel Makefile for baselayout will automatically
86     # disable then when doing `make dist`
87     ##override LDFLAGS += -Wl,-rpath .
88    
89     all: $(TARGET)
90    
91     $(LIBEINFOOBJS): CFLAGS += -fPIC
92     $(LIBEINFOSO): LDLIBS =
93     $(LIBEINFOSO): $(LIBEINFOOBJS)
94     $(CC) -fPIC -shared -Wl,-soname,$(LIBEINFOSO) -o $(LIBEINFOSO) $(LIBEINFOOBJS)
95     ln -sf $(LIBEINFOSO) libeinfo.so
96    
97     $(LIBRCOBJS): CFLAGS += -fPIC
98     $(LIBRCSO): $(LIBRCOBJS)
99     $(CC) -fPIC -shared -Wl,-soname,$(LIBRCSO) -o $(LIBRCSO) $(LIBRCOBJS)
100     ln -sf $(LIBRCSO) librc.so
101    
102     splash: CFLAGS += -fPIC
103     splash: splash.o
104     $(CC) -fPIC -shared -Wl,-soname,splash.so -o splash.so splash.o
105    
106     env-update: $(LIBEINFOSO) $(LIBRCSO) env-update.o
107    
108     fstabinfo: $(LIBEINFOSO) fstabinfo.o
109    
110     mountinfo: $(LIBEINFOSO) $(LIBRCSO) mountinfo.o
111    
112     rc-depend: $(LIBEINFOSO) $(LIBRCSO) rc-depend.o
113    
114     rc-status: $(LIBEINFOSO) $(LIBRCSO) rc-status.o
115    
116     rc-update: $(LIBEINFOSO) $(LIBRCSO) rc-update.o
117    
118     rc: LDLIBS += $(LDLIBS_RC)
119     rc: $(LIBEINFOSO) $(LIBRCSO) rc-plugin.o rc.o
120    
121     runscript: LDLIBS += $(LDLIBS_RS)
122     runscript: $(LIBEINFOSO) $(LIBRCSO) rc-plugin.o runscript.o
123    
124     start-stop-daemon: CFLAGS += $(CFLAGS_SSD)
125     start-stop-daemon: LDLIBS += $(LDLIBS_SSD)
126     start-stop-daemon: $(LIBEINFOSO) $(LIBRCSO) start-stop-daemon.o
127    
128     links: rc
129     for x in $(RCLINKS) $(RCPRIVLINKS); do ln -sf rc $$x; done
130    
131     install: $(TARGET)
132     install -m 0755 -d $(DESTDIR)/$(LIB)
133     install -m 0755 $(LIB_TARGETS) $(DESTDIR)/$(LIB)
134     ln -sf $(LIBEINFOSO) $(DESTDIR)/$(LIB)/libeinfo.so
135     ln -sf $(LIBRCSO) $(DESTDIR)/$(LIB)/librc.so
136     install -m 0755 -d $(DESTDIR)/usr/include
137     install -m 0644 einfo.h rc.h $(DESTDIR)/usr/include
138     install -m 0755 -d $(DESTDIR)/bin
139     install -m 0755 $(BIN_TARGETS) $(DESTDIR)/bin
140     install -m 0755 -d $(DESTDIR)/sbin
141     install -m 0755 $(SBIN_TARGETS) $(DESTDIR)/sbin
142     install -m 0755 -d $(DESTDIR)/$(LIB)/rcscripts/conf.d
143     install -m 0644 $(SYS_WHITELIST) $(DESTDIR)/$(LIB)/rcscripts/conf.d
144     install -m 0755 -d $(DESTDIR)/$(LIB)/rcscripts/bin
145     for x in $(RCLINKS); do ln -sf $(DESTDIR)/sbin/rc $(DESTDIR)/$(LIB)/rcscripts/bin/$$x; done
146     if test "$(HAVE_PAM)" != "" ; then \
147     install -m 0755 -d $(DESTDIR)/etc/pam.d ; \
148     install -m 0644 start-stop-daemon.pam $(DESTDIR)/etc/pam.d/start-stop-daemon ; \
149     fi
150    
151     clean:
152     rm -f $(TARGET) $(RCLINKS) $(RCPRIVLINKS)
153     rm -f *.o *~ *.core *.so

  ViewVC Help
Powered by ViewVC 1.1.20