summaryrefslogtreecommitdiff
path: root/src/Makefile.am
blob: d6acefcb7254b83ce57119f2b7e0d462c2a5785b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
AUTOMAKE_OPTIONS = subdir-objects

AM_CFLAGS = \
	-pedantic \
	-std=gnu99 \
	-Wall -Wunused \
	-fstack-protector \
	-Wformat


# XXX: magic option that will remove all unused symbols
# (defined by platform-generic.c).
if PROCENV_PLATFORM_DARWIN
AM_CFLAGS += -flto
else
AM_CFLAGS += -fdata-sections -ffunction-sections
endif

# keep it tight
AM_CFLAGS += -Werror

bin_PROGRAMS = procenv

procenv_SOURCES = \
	procenv.c procenv.h \
	pr_list.c pr_list.h \
	pstring.c pstring.h \
	string-util.c string-util.h \
	output.c output.h \
	util.c util.h \
	types.h \
	messages.h \
	platform.h platform-headers.h \
    platform/platform-generic.c platform/platform-generic.h

# XXX: unused symbol removal magic - part 2
if PROCENV_PLATFORM_DARWIN
procenv_LDFLAGS = -flto
else
procenv_LDFLAGS = -Wl,--gc-sections
endif

# should really do this in configure.ac
if PROCENV_PLATFORM_MINIX
procenv_LDADD = -lc
endif

procenv_CPPFLAGS =
procenv_CPPFLAGS += -I $(srcdir) -I $(srcdir)/platform

if PROCENV_PLATFORM_DARWIN
procenv_SOURCES += platform/darwin/platform.c platform/darwin/platform-darwin.h
procenv_CPPFLAGS += -I $(srcdir)/platform/darwin -D PROCENV_PLATFORM_DARWIN
endif

if PROCENV_PLATFORM_LINUX
procenv_SOURCES += platform/linux/platform.c platform/linux/platform-linux.h
procenv_CPPFLAGS += -I $(srcdir)/platform/linux -D PROCENV_PLATFORM_LINUX
endif

if PROCENV_PLATFORM_MINIX
procenv_SOURCES += platform/minix/platform.c platform/minix/platform-minix.h
procenv_CPPFLAGS += \
	-I $(srcdir)/platform/minix -D PROCENV_PLATFORM_MINIX
endif

if PROCENV_PLATFORM_HURD
procenv_SOURCES += platform/hurd/platform.c platform/hurd/platform-hurd.h
procenv_CPPFLAGS += -I $(srcdir)/platform/hurd -D PROCENV_PLATFORM_HURD
endif

if PROCENV_PLATFORM_FREEBSD
procenv_SOURCES += platform/freebsd/platform.c platform/freebsd/platform-freebsd.h
procenv_CPPFLAGS += -I $(srcdir)/platform/freebsd \
				-D PROCENV_PLATFORM_FREEBSD \
				-D PROCENV_PLATFORM_BSD
endif

if PROCENV_PLATFORM_NETBSD
procenv_SOURCES += platform/netbsd/platform.c platform/netbsd/platform-netbsd.h
procenv_CPPFLAGS += -I $(srcdir)/platform/netbsd \
				-D PROCENV_PLATFORM_NETBSD \
				-D PROCENV_PLATFORM_BSD
endif

if PROCENV_PLATFORM_OPENBSD
procenv_SOURCES += platform/openbsd/platform.c platform/openbsd/platform-openbsd.h
procenv_CPPFLAGS += -I $(srcdir)/platform/openbsd \
				-D PROCENV_PLATFORM_OPENBSD \
				-D PROCENV_PLATFORM_BSD
endif

if PROCENV_PLATFORM_GENERIC
procenv_SOURCES += platform/unknown/platform.c platform/unknown/platform-unknown.h
procenv_CPPFLAGS += -I $(srcdir)/platform/unknown -D PROCENV_PLATFORM_GENERIC
endif

if HAVE_SELINUX
    procenv_CPPFLAGS += -DHAVE_SELINUX
endif
if HAVE_APPARMOR
    procenv_CPPFLAGS += -DHAVE_APPARMOR
endif

if ENABLE_TESTS

TESTS =
CLEANFILES =

TESTS += tests/show_machine_details

check_all_args: tests/check_all_args.in
	sed -e 's|[@]builddir[@]|$(top_builddir)/$(subdir)|g' \
	    -e 's|[@]man_path[@]|$(top_srcdir)/man/procenv.1|g' \
	    -e 's|[@]package_url[@]|$(PACKAGE_URL)|g' \
	    -e 's|[@]package_url[@]|$(PACKAGE_URL)|g' \
	    -e 's|[@]procenv_platform[@]|$(procenv_platform)|g' \
	    $< > $@
	chmod +x $@

if HAVE_CHECK
TESTS += check_pr_list

check_PROGRAMS = check_pr_list
check_pr_list_SOURCES = tests/check_pr_list.c
check_pr_list_CFLAGS = @CHECK_CFLAGS@ -I$(top_srcdir)/src
check_pr_list_LDADD = @CHECK_LIBS@ pr_list.o

endif

TESTS += check_all_args

# Run built binary to ensure we can display all values
TESTS += procenv

CLEANFILES += check_all_args

endif

EXTRA_DIST = \
    tests/show_compiler_details \
    tests/show_machine_details \
    tests/check_all_args.in \
    tests/check_pr_list.c