]> git.cworth.org Git - fips/blob - Makefile.local
Free all fip-allocated data when the program exits
[fips] / Makefile.local
1 # -*- makefile -*-
2
3 include Makefile.release
4
5 # Smash together user's values with values from Makefile.config
6 FIPS_CFLAGS = -DFIPS_VERSION=$(VERSION) $(CFLAGS) $(WARN_CFLAGS) $(TALLOC_CFLAGS) $(LIBELF_CFLAGS) $(extra_cflags)
7 FIPS_LDFLAGS = $(LDFLAGS) $(AS_NEEDED_LDFLAGS) $(TALLOC_LDFLAGS) $(LIBELF_LDFLAGS)
8
9 LIBFIPS_CFLAGS = $(CFLAGS) $(WARN_CFLAGS) $(GL_CFLAGS) $(EGL_CFLAGS) $(extra_cflags)
10 LIBFIPS_LDFLAGS = $(LDFLAGS) -ldl
11
12 FIPS_LINKER = CC
13
14 ALL_TARGETS = fips
15
16 ifeq ($(COMPILER_SUPPORTS_32),Yes)
17 ALL_TARGETS += libfips-32.so
18 endif
19
20 ifeq ($(COMPILER_SUPPORTS_64),Yes)
21 ALL_TARGETS += libfips-64.so
22 endif
23
24 .PHONY: all
25 all: $(ALL_TARGETS)
26
27 ifeq ($(MAKECMDGOALS),)
28 ifeq ($(shell cat .first-build-message 2>/dev/null),)
29         @FIPS_FIRST_BUILD=1 $(MAKE) --no-print-directory all
30         @echo ""
31         @echo "Compilation of fips is now complete. You can install fips with:"
32         @echo ""
33         @echo " make install"
34         @echo ""
35         @echo "Note that depending on the prefix to which you are installing"
36         @echo "you may need root permission (such as \"sudo make install\")."
37         @echo "See \"./configure --help\" for help on setting an alternate prefix."
38         @echo Printed > .first-build-message
39 endif
40 endif
41
42 # The user has not set any verbosity, default to quiet mode and inform the
43 # user how to enable verbose compiles.
44 ifeq ($(V),)
45 quiet_DOC := "Use \"$(MAKE) V=1\" to see the verbose compile lines.\n"
46 quiet = @printf $(quiet_DOC)$(eval quiet_DOC:=)"$1 $@\n"; $($(shell echo $1 | sed -e s'/ .*//'))
47 endif
48 # The user has explicitly enabled quiet compilation.
49 ifeq ($(V),0)
50 quiet = @printf "$1 $@\n"; $($(shell echo $1 | sed -e s'/ .*//'))
51 endif
52 # Otherwise, print the full command line.
53 quiet ?= $($(shell echo $1 | sed -e s'/ .*//'))
54
55 %-32.o: %.c $(global_deps)
56         @mkdir -p .deps/$(@D)
57         $(call quiet,CC $(CFLAGS) -m32) -c $(LIBFIPS_CFLAGS) -m32 $< -o $@ -MD -MP -MF .deps/$*.d
58
59 %-64.o: %.c $(global_deps)
60         @mkdir -p .deps/$(@D)
61         $(call quiet,CC $(CFLAGS) -m64) -c $(LIBFIPS_CFLAGS) -m64 $< -o $@ -MD -MP -MF .deps/$*.d
62
63 %.o: %.c $(global_deps)
64         @mkdir -p .deps/$(@D)
65         $(call quiet,CC $(CFLAGS)) -c $(FIPS_CFLAGS) $< -o $@ -MD -MP -MF .deps/$*.d
66
67 .PHONY : clean
68 clean:
69         rm -rf $(CLEAN); rm -rf .deps
70
71 .PHONY: distclean
72 distclean: clean
73         rm -rf $(DISTCLEAN)
74
75 # Main program, fips
76
77 fips_srcs = \
78         execute.c \
79         fips.c \
80         xmalloc.c
81
82 fips_modules = $(fips_srcs:.c=.o)
83
84 fips: $(fips_modules)
85         $(call quiet,$(FIPS_LINKER) $(CFLAGS)) $(FIPS_CFLAGS) $^ $(FIPS_LDFLAGS) -o $@
86
87 # GL-wrapper library, libfips
88 LIBRARY_LINK_FLAGS = -shared -Wl,--version-script=libfips.sym
89
90 extra_cflags += -I$(srcdir) -fPIC
91
92 libfips_srcs = \
93         dlwrap.c \
94         fips-dispatch.c \
95         fips-dispatch-gl.c \
96         glwrap.c \
97         glxwrap.c \
98         metrics.c \
99         xmalloc.c
100
101 ifeq ($(HAVE_EGL),Yes)
102 libfips_srcs += eglwrap.c
103 endif
104
105 libfips.sym: extract-wrapped-symbols $(libfips_srcs)
106         $(call quiet,extract-wrapped-symbols) ./extract-wrapped-symbols $(libfips_srcs) > $@
107
108 libfips_32_modules = $(libfips_srcs:.c=-32.o)
109
110 libfips_64_modules = $(libfips_srcs:.c=-64.o)
111
112 libfips-32.so: $(libfips_32_modules) libfips.sym
113         $(call quiet,$(FIPS_LINKER) $(CFLAGS) -m32) -o $@ $(LIBFIPS_CFLAGS) -m32 $(libfips_32_modules)  $(LIBRARY_LINK_FLAGS) $(LIBFIPS_LDFLAGS)
114
115 libfips-64.so: $(libfips_64_modules) libfips.sym
116         $(call quiet,$(FIPS_LINKER) $(CFLAGS) -m64) -o $@ $(LIBFIPS_CFLAGS) -m64 $(libfips_64_modules) $(LIBRARY_LINK_FLAGS) $(LIBFIPS_LDFLAGS)
117
118 .PHONY: install
119 install: all
120         mkdir -p $(DESTDIR)$(bindir)
121         install fips $(DESTDIR)$(bindir)/fips
122         mkdir -p $(DESTDIR)$(libdir)/fips
123 ifeq ($(COMPILER_SUPPORTS_32), Yes)
124         install -m0644 libfips-32.so $(DESTDIR)$(libdir)/fips/libfips-32.so
125 endif
126 ifeq ($(COMPILER_SUPPORTS_64), Yes)
127         install -m0644 libfips-64.so $(DESTDIR)$(libdir)/fips/libfips-64.so
128 endif
129 ifeq ($(MAKECMDGOALS), install)
130         @echo ""
131         @echo "Fips is now installed to $(DESTDIR)$(prefix)"
132         @echo ""
133 endif
134
135 SRCS  := $(SRCS) $(fips_srcs) $(libfips_srcs)
136 CLEAN := $(CLEAN) fips $(fips_modules) $(libfips_32_modules) $(libfips_64_modules) libfips.sym
137
138 DISTCLEAN := $(DISTCLEAN) .first-build-message Makefile.config
139
140 DEPS := $(SRCS:%.c=.deps/%.d)
141
142 -include $(DEPS)