blob: 5c529bae3d893d774d3ad072269a3a5774a031ea [file] [log] [blame]
Jake Farrellb95b0ff2012-03-22 21:49:10 +00001#
2# Licensed to the Apache Software Foundation (ASF) under one
3# or more contributor license agreements. See the NOTICE file
4# distributed with this work for additional information
5# regarding copyright ownership. The ASF licenses this file
6# to you under the Apache License, Version 2.0 (the
7# "License"); you may not use this file except in compliance
8# with the License. You may obtain a copy of the License at
9#
10# http://www.apache.org/licenses/LICENSE-2.0
11#
12# Unless required by applicable law or agreed to in writing,
13# software distributed under the License is distributed on an
14# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15# KIND, either express or implied. See the License for the
16# specific language governing permissions and limitations
17# under the License.
18#
19
jfarrell8fd8c632014-07-10 09:14:51 -040020AUTOMAKE_OPTIONS = serial-tests
21
22SUBDIRS = .
23
24if WITH_TESTS
25SUBDIRS += test
26endif
Jake Farrellb95b0ff2012-03-22 21:49:10 +000027
28#
29# Enumeration of all the public and private modules.
30#
31# We unconditionally install all of them, even if libevent or OpenSSL are
32# not available, but build the respective libraries only if the Deimos headers
33# could be found.
34#
35d_thriftmodules = $(addprefix thrift/, base)
36d_thriftdir = $(D_IMPORT_PREFIX)/thrift
37d_thrift_DATA = $(addprefix src/, $(addsuffix .d, $(d_thriftmodules)))
38
39d_asyncmodules = $(addprefix thrift/async/, base libevent socket ssl)
40d_asyncdir = $(d_thriftdir)/async
41d_async_DATA = $(addprefix src/, $(addsuffix .d, $(d_asyncmodules)))
42
43d_codegenmodules = $(addprefix thrift/codegen/, async_client \
Jens Geyer18502ee2014-10-10 19:30:58 +020044 async_client_pool base client client_pool processor)
45#d_codegenmodules = $(addprefix thrift/codegen/, async_client \
46# async_client_pool base client client_pool idlgen processor)
47
Jake Farrellb95b0ff2012-03-22 21:49:10 +000048d_codegendir = $(d_thriftdir)/codegen
49d_codegen_DATA = $(addprefix src/, $(addsuffix .d, $(d_codegenmodules)))
50
51d_protocolmodules = $(addprefix thrift/protocol/, base binary compact json \
Jens Geyer79f988c2014-10-03 20:42:54 +020052 processor)
Jake Farrellb95b0ff2012-03-22 21:49:10 +000053d_protocoldir = $(d_thriftdir)/protocol
54d_protocol_DATA = $(addprefix src/, $(addsuffix .d, $(d_protocolmodules)))
55
56d_servermodules = $(addprefix thrift/server/, base simple nonblocking \
Jens Geyer79f988c2014-10-03 20:42:54 +020057 taskpool threaded)
Jake Farrellb95b0ff2012-03-22 21:49:10 +000058d_serverdir = $(d_thriftdir)/server
59d_server_DATA = $(addprefix src/, $(addsuffix .d, $(d_servermodules)))
60
61d_servertransportmodules = $(addprefix thrift/server/transport/, base socket ssl)
62d_servertransportdir = $(d_thriftdir)/server/transport
63d_servertransport_DATA = $(addprefix src/, $(addsuffix .d, \
Jens Geyer79f988c2014-10-03 20:42:54 +020064 $(d_servertransportmodules)))
Jake Farrellb95b0ff2012-03-22 21:49:10 +000065
66d_transportmodules = $(addprefix thrift/transport/, base buffered file \
Jens Geyer79f988c2014-10-03 20:42:54 +020067 framed http memory piped range socket ssl zlib)
Jake Farrellb95b0ff2012-03-22 21:49:10 +000068d_transportdir = $(d_thriftdir)/transport
69d_transport_DATA = $(addprefix src/, $(addsuffix .d, $(d_transportmodules)))
70
71d_utilmodules = $(addprefix thrift/util/, awaitable cancellation future \
Jens Geyer79f988c2014-10-03 20:42:54 +020072 hashset)
Jake Farrellb95b0ff2012-03-22 21:49:10 +000073d_utildir = $(d_thriftdir)/util
74d_util_DATA = $(addprefix src/, $(addsuffix .d, $(d_utilmodules)))
75
76d_internalmodules = $(addprefix thrift/internal/, algorithm codegen ctfe \
Jens Geyer79f988c2014-10-03 20:42:54 +020077 endian resource_pool socket ssl ssl_bio traits)
Jake Farrellb95b0ff2012-03-22 21:49:10 +000078d_internaldir = $(d_thriftdir)/internal
79d_internal_DATA = $(addprefix src/, $(addsuffix .d, $(d_internalmodules)))
80
81d_testmodules = $(addprefix thrift/internal/test/, protocol server)
82d_testdir = $(d_internaldir)/test
83d_test_DATA = $(addprefix src/, $(addsuffix .d, $(d_testmodules)))
84
85d_publicmodules = $(d_thriftmodules) $(d_asyncmodules) \
Jens Geyer79f988c2014-10-03 20:42:54 +020086 $(d_codegenmodules) $(d_protocolmodules) $(d_servermodules) \
87 $(d_servertransportmodules) $(d_transportmodules) $(d_utilmodules)
Jake Farrellb95b0ff2012-03-22 21:49:10 +000088d_publicsources = $(addprefix src/, $(addsuffix .d, $(d_publicmodules)))
89
90d_modules = $(d_publicmodules) $(d_internalmodules) $(d_testmodules)
91
92# List modules with external dependencies and remove them from the main list
93d_libevent_dependent_modules = thrift/async/libevent thrift/server/nonblocking
94d_openssl_dependent_modules = thrift/async/ssl thrift/internal/ssl \
Jens Geyer79f988c2014-10-03 20:42:54 +020095 thrift/internal/ssl_bio thrift/transport/ssl thrift/server/transport/ssl
Jake Farrellb95b0ff2012-03-22 21:49:10 +000096d_main_modules = $(filter-out $(d_libevent_dependent_modules) \
Jens Geyer79f988c2014-10-03 20:42:54 +020097 $(d_openssl_dependent_modules),$(d_modules))
Jake Farrellb95b0ff2012-03-22 21:49:10 +000098
99
100d_lib_flags = -w -wi -Isrc -lib
101all_targets =
102
103#
104# libevent-dependent modules.
105#
106if HAVE_DEIMOS_EVENT2
107$(D_EVENT_LIB_NAME): $(addprefix src/, $(addsuffix .d, $(d_libevent_dependent_modules)))
Jens Geyer79f988c2014-10-03 20:42:54 +0200108 $(DMD) -of$(D_EVENT_LIB_NAME) $(d_lib_flags) $^
Jake Farrellb95b0ff2012-03-22 21:49:10 +0000109all_targets += $(D_EVENT_LIB_NAME)
110endif
111
112#
113# OpenSSL-dependent modules.
114#
115if HAVE_DEIMOS_OPENSSL
116$(D_SSL_LIB_NAME): $(addprefix src/, $(addsuffix .d, $(d_openssl_dependent_modules)))
Jens Geyer79f988c2014-10-03 20:42:54 +0200117 $(DMD) -of$(D_SSL_LIB_NAME) $(d_lib_flags) $^
Jake Farrellb95b0ff2012-03-22 21:49:10 +0000118all_targets += $(D_SSL_LIB_NAME)
119endif
120
121#
122# Main library target.
123#
124$(D_LIB_NAME): $(addprefix src/, $(addsuffix .d, $(d_main_modules)))
Jens Geyer79f988c2014-10-03 20:42:54 +0200125 $(DMD) -of$(D_LIB_NAME) $(d_lib_flags) $^
Jake Farrellb95b0ff2012-03-22 21:49:10 +0000126all_targets += $(D_LIB_NAME)
127
128
129#
130# Documentation target (requires Dil).
131#
132docs: $(d_publicsources) src/thrift/index.d
Jens Geyer79f988c2014-10-03 20:42:54 +0200133 dil ddoc docs -hl --kandil $^
Jake Farrellb95b0ff2012-03-22 21:49:10 +0000134
135
136#
137# Hook custom library targets into the automake all/install targets.
138#
139all-local: $(all_targets)
140
141install-exec-local:
Jens Geyer79f988c2014-10-03 20:42:54 +0200142 $(INSTALL_PROGRAM) $(all_targets) $(DESTDIR)$(libdir)
Jake Farrellb95b0ff2012-03-22 21:49:10 +0000143
144
145clean-local:
Jens Geyer79f988c2014-10-03 20:42:54 +0200146 $(RM) -rf docs $(D_LIB_NAME) $(D_EVENT_LIB_NAME) $(D_SSL_LIB_NAME) unittest
Jake Farrellb95b0ff2012-03-22 21:49:10 +0000147
148
149#
150# Unit tests (built both in debug and release mode).
151#
152d_test_flags = -unittest -w -wi -I$(top_srcdir)/lib/d/src
153
154# There just must be some way to reassign a variable without warnings in
155# Automake...
156d_test_modules__ = $(d_modules)
157
158if WITH_D_EVENT_TESTS
159d_test_flags += $(DMD_LIBEVENT_FLAGS)
160d_test_modules_ = $(d_test_modules__)
161else
162d_test_modules_ = $(filter-out $(d_libevent_dependent_modules), $(d_test_modules__))
163endif
164
165if WITH_D_SSL_TESTS
166d_test_flags += $(DMD_OPENSSL_FLAGS)
167d_test_modules = $(d_test_modules_)
168else
169d_test_modules = $(filter-out $(d_openssl_dependent_modules), $(d_test_modules_))
170endif
171
172unittest/emptymain.d: unittest/.directory
Jens Geyer79f988c2014-10-03 20:42:54 +0200173 @echo 'void main(){}' >$@
Jake Farrellb95b0ff2012-03-22 21:49:10 +0000174
175unittest/.directory:
Jens Geyer79f988c2014-10-03 20:42:54 +0200176 mkdir -p unittest || exists unittest
177 touch $@
Jake Farrellb95b0ff2012-03-22 21:49:10 +0000178
179unittest/debug/%: src/%.d $(all_targets) unittest/emptymain.d
Jens Geyer79f988c2014-10-03 20:42:54 +0200180 $(DMD) -gc -of$(subst /,$(DMD_OF_DIRSEP),$@) $(d_test_flags) $^
Jake Farrellb95b0ff2012-03-22 21:49:10 +0000181
182unittest/release/%: src/%.d $(all_targets) unittest/emptymain.d
Jens Geyer79f988c2014-10-03 20:42:54 +0200183 $(DMD) -O -release -of$(subst /,$(DMD_OF_DIRSEP),$@) $(d_test_flags) $^
Jake Farrellb95b0ff2012-03-22 21:49:10 +0000184
185TESTS = $(addprefix unittest/debug/, $(d_test_modules)) \
Jens Geyer79f988c2014-10-03 20:42:54 +0200186 $(addprefix unittest/release/, $(d_test_modules))
Jake Farrellb95b0ff2012-03-22 21:49:10 +0000187
Nobuaki Sukegawa8b791b22016-03-05 13:40:25 +0900188precross: all-local
189 $(MAKE) -C test precross
Jake Farrellb95b0ff2012-03-22 21:49:10 +0000190
191EXTRA_DIST = \
Jens Geyer79f988c2014-10-03 20:42:54 +0200192 src \
193 test \
194 README.md