Jake Farrell | b95b0ff | 2012-03-22 21:49:10 +0000 | [diff] [blame] | 1 | # |
| 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 | |
jfarrell | 8fd8c63 | 2014-07-10 09:14:51 -0400 | [diff] [blame] | 20 | AUTOMAKE_OPTIONS = serial-tests |
| 21 | |
| 22 | SUBDIRS = . |
| 23 | |
| 24 | if WITH_TESTS |
| 25 | SUBDIRS += test |
| 26 | endif |
Jake Farrell | b95b0ff | 2012-03-22 21:49:10 +0000 | [diff] [blame] | 27 | |
| 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 | # |
| 35 | d_thriftmodules = $(addprefix thrift/, base) |
| 36 | d_thriftdir = $(D_IMPORT_PREFIX)/thrift |
| 37 | d_thrift_DATA = $(addprefix src/, $(addsuffix .d, $(d_thriftmodules))) |
| 38 | |
| 39 | d_asyncmodules = $(addprefix thrift/async/, base libevent socket ssl) |
| 40 | d_asyncdir = $(d_thriftdir)/async |
| 41 | d_async_DATA = $(addprefix src/, $(addsuffix .d, $(d_asyncmodules))) |
| 42 | |
| 43 | d_codegenmodules = $(addprefix thrift/codegen/, async_client \ |
Jens Geyer | 18502ee | 2014-10-10 19:30:58 +0200 | [diff] [blame] | 44 | 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 Farrell | b95b0ff | 2012-03-22 21:49:10 +0000 | [diff] [blame] | 48 | d_codegendir = $(d_thriftdir)/codegen |
| 49 | d_codegen_DATA = $(addprefix src/, $(addsuffix .d, $(d_codegenmodules))) |
| 50 | |
| 51 | d_protocolmodules = $(addprefix thrift/protocol/, base binary compact json \ |
Jens Geyer | 79f988c | 2014-10-03 20:42:54 +0200 | [diff] [blame] | 52 | processor) |
Jake Farrell | b95b0ff | 2012-03-22 21:49:10 +0000 | [diff] [blame] | 53 | d_protocoldir = $(d_thriftdir)/protocol |
| 54 | d_protocol_DATA = $(addprefix src/, $(addsuffix .d, $(d_protocolmodules))) |
| 55 | |
| 56 | d_servermodules = $(addprefix thrift/server/, base simple nonblocking \ |
Jens Geyer | 79f988c | 2014-10-03 20:42:54 +0200 | [diff] [blame] | 57 | taskpool threaded) |
Jake Farrell | b95b0ff | 2012-03-22 21:49:10 +0000 | [diff] [blame] | 58 | d_serverdir = $(d_thriftdir)/server |
| 59 | d_server_DATA = $(addprefix src/, $(addsuffix .d, $(d_servermodules))) |
| 60 | |
| 61 | d_servertransportmodules = $(addprefix thrift/server/transport/, base socket ssl) |
| 62 | d_servertransportdir = $(d_thriftdir)/server/transport |
| 63 | d_servertransport_DATA = $(addprefix src/, $(addsuffix .d, \ |
Jens Geyer | 79f988c | 2014-10-03 20:42:54 +0200 | [diff] [blame] | 64 | $(d_servertransportmodules))) |
Jake Farrell | b95b0ff | 2012-03-22 21:49:10 +0000 | [diff] [blame] | 65 | |
| 66 | d_transportmodules = $(addprefix thrift/transport/, base buffered file \ |
Jens Geyer | 79f988c | 2014-10-03 20:42:54 +0200 | [diff] [blame] | 67 | framed http memory piped range socket ssl zlib) |
Jake Farrell | b95b0ff | 2012-03-22 21:49:10 +0000 | [diff] [blame] | 68 | d_transportdir = $(d_thriftdir)/transport |
| 69 | d_transport_DATA = $(addprefix src/, $(addsuffix .d, $(d_transportmodules))) |
| 70 | |
| 71 | d_utilmodules = $(addprefix thrift/util/, awaitable cancellation future \ |
Jens Geyer | 79f988c | 2014-10-03 20:42:54 +0200 | [diff] [blame] | 72 | hashset) |
Jake Farrell | b95b0ff | 2012-03-22 21:49:10 +0000 | [diff] [blame] | 73 | d_utildir = $(d_thriftdir)/util |
| 74 | d_util_DATA = $(addprefix src/, $(addsuffix .d, $(d_utilmodules))) |
| 75 | |
| 76 | d_internalmodules = $(addprefix thrift/internal/, algorithm codegen ctfe \ |
Jens Geyer | 79f988c | 2014-10-03 20:42:54 +0200 | [diff] [blame] | 77 | endian resource_pool socket ssl ssl_bio traits) |
Jake Farrell | b95b0ff | 2012-03-22 21:49:10 +0000 | [diff] [blame] | 78 | d_internaldir = $(d_thriftdir)/internal |
| 79 | d_internal_DATA = $(addprefix src/, $(addsuffix .d, $(d_internalmodules))) |
| 80 | |
| 81 | d_testmodules = $(addprefix thrift/internal/test/, protocol server) |
| 82 | d_testdir = $(d_internaldir)/test |
| 83 | d_test_DATA = $(addprefix src/, $(addsuffix .d, $(d_testmodules))) |
| 84 | |
| 85 | d_publicmodules = $(d_thriftmodules) $(d_asyncmodules) \ |
Jens Geyer | 79f988c | 2014-10-03 20:42:54 +0200 | [diff] [blame] | 86 | $(d_codegenmodules) $(d_protocolmodules) $(d_servermodules) \ |
| 87 | $(d_servertransportmodules) $(d_transportmodules) $(d_utilmodules) |
Jake Farrell | b95b0ff | 2012-03-22 21:49:10 +0000 | [diff] [blame] | 88 | d_publicsources = $(addprefix src/, $(addsuffix .d, $(d_publicmodules))) |
| 89 | |
| 90 | d_modules = $(d_publicmodules) $(d_internalmodules) $(d_testmodules) |
| 91 | |
| 92 | # List modules with external dependencies and remove them from the main list |
| 93 | d_libevent_dependent_modules = thrift/async/libevent thrift/server/nonblocking |
| 94 | d_openssl_dependent_modules = thrift/async/ssl thrift/internal/ssl \ |
Jens Geyer | 79f988c | 2014-10-03 20:42:54 +0200 | [diff] [blame] | 95 | thrift/internal/ssl_bio thrift/transport/ssl thrift/server/transport/ssl |
Jake Farrell | b95b0ff | 2012-03-22 21:49:10 +0000 | [diff] [blame] | 96 | d_main_modules = $(filter-out $(d_libevent_dependent_modules) \ |
Jens Geyer | 79f988c | 2014-10-03 20:42:54 +0200 | [diff] [blame] | 97 | $(d_openssl_dependent_modules),$(d_modules)) |
Jake Farrell | b95b0ff | 2012-03-22 21:49:10 +0000 | [diff] [blame] | 98 | |
| 99 | |
mingwugmail | 4abc5cf | 2021-05-26 00:38:22 +0200 | [diff] [blame] | 100 | d_lib_flags = -w -wi -Isrc -lib -version=use_openssl_1_0_x |
Jake Farrell | b95b0ff | 2012-03-22 21:49:10 +0000 | [diff] [blame] | 101 | all_targets = |
| 102 | |
| 103 | # |
| 104 | # libevent-dependent modules. |
| 105 | # |
| 106 | if HAVE_DEIMOS_EVENT2 |
| 107 | $(D_EVENT_LIB_NAME): $(addprefix src/, $(addsuffix .d, $(d_libevent_dependent_modules))) |
Jens Geyer | 79f988c | 2014-10-03 20:42:54 +0200 | [diff] [blame] | 108 | $(DMD) -of$(D_EVENT_LIB_NAME) $(d_lib_flags) $^ |
Jake Farrell | b95b0ff | 2012-03-22 21:49:10 +0000 | [diff] [blame] | 109 | all_targets += $(D_EVENT_LIB_NAME) |
| 110 | endif |
| 111 | |
| 112 | # |
| 113 | # OpenSSL-dependent modules. |
| 114 | # |
| 115 | if HAVE_DEIMOS_OPENSSL |
| 116 | $(D_SSL_LIB_NAME): $(addprefix src/, $(addsuffix .d, $(d_openssl_dependent_modules))) |
Jens Geyer | 79f988c | 2014-10-03 20:42:54 +0200 | [diff] [blame] | 117 | $(DMD) -of$(D_SSL_LIB_NAME) $(d_lib_flags) $^ |
Jake Farrell | b95b0ff | 2012-03-22 21:49:10 +0000 | [diff] [blame] | 118 | all_targets += $(D_SSL_LIB_NAME) |
| 119 | endif |
| 120 | |
| 121 | # |
| 122 | # Main library target. |
| 123 | # |
| 124 | $(D_LIB_NAME): $(addprefix src/, $(addsuffix .d, $(d_main_modules))) |
Jens Geyer | 79f988c | 2014-10-03 20:42:54 +0200 | [diff] [blame] | 125 | $(DMD) -of$(D_LIB_NAME) $(d_lib_flags) $^ |
Jake Farrell | b95b0ff | 2012-03-22 21:49:10 +0000 | [diff] [blame] | 126 | all_targets += $(D_LIB_NAME) |
| 127 | |
| 128 | |
| 129 | # |
| 130 | # Documentation target (requires Dil). |
| 131 | # |
| 132 | docs: $(d_publicsources) src/thrift/index.d |
Jens Geyer | 79f988c | 2014-10-03 20:42:54 +0200 | [diff] [blame] | 133 | dil ddoc docs -hl --kandil $^ |
Jake Farrell | b95b0ff | 2012-03-22 21:49:10 +0000 | [diff] [blame] | 134 | |
| 135 | |
| 136 | # |
| 137 | # Hook custom library targets into the automake all/install targets. |
| 138 | # |
| 139 | all-local: $(all_targets) |
| 140 | |
| 141 | install-exec-local: |
Jens Geyer | 79f988c | 2014-10-03 20:42:54 +0200 | [diff] [blame] | 142 | $(INSTALL_PROGRAM) $(all_targets) $(DESTDIR)$(libdir) |
Jake Farrell | b95b0ff | 2012-03-22 21:49:10 +0000 | [diff] [blame] | 143 | |
Jake Farrell | b95b0ff | 2012-03-22 21:49:10 +0000 | [diff] [blame] | 144 | clean-local: |
James E. King III | b96c438 | 2019-01-24 17:45:07 -0500 | [diff] [blame] | 145 | $(RM) -r docs |
| 146 | $(RM) $(D_LIB_NAME) |
| 147 | $(RM) $(D_EVENT_LIB_NAME) |
| 148 | $(RM) $(D_SSL_LIB_NAME) |
| 149 | $(RM) -r test/gen-d |
| 150 | $(RM) -r unittest |
Jake Farrell | b95b0ff | 2012-03-22 21:49:10 +0000 | [diff] [blame] | 151 | |
| 152 | |
| 153 | # |
| 154 | # Unit tests (built both in debug and release mode). |
| 155 | # |
mingwugmail | 4abc5cf | 2021-05-26 00:38:22 +0200 | [diff] [blame] | 156 | d_test_flags = -unittest -w -wi -I$(top_srcdir)/lib/d/src -version=use_openssl_1_0_x |
Jake Farrell | b95b0ff | 2012-03-22 21:49:10 +0000 | [diff] [blame] | 157 | |
| 158 | # There just must be some way to reassign a variable without warnings in |
| 159 | # Automake... |
| 160 | d_test_modules__ = $(d_modules) |
| 161 | |
| 162 | if WITH_D_EVENT_TESTS |
| 163 | d_test_flags += $(DMD_LIBEVENT_FLAGS) |
| 164 | d_test_modules_ = $(d_test_modules__) |
| 165 | else |
| 166 | d_test_modules_ = $(filter-out $(d_libevent_dependent_modules), $(d_test_modules__)) |
| 167 | endif |
| 168 | |
| 169 | if WITH_D_SSL_TESTS |
| 170 | d_test_flags += $(DMD_OPENSSL_FLAGS) |
| 171 | d_test_modules = $(d_test_modules_) |
| 172 | else |
| 173 | d_test_modules = $(filter-out $(d_openssl_dependent_modules), $(d_test_modules_)) |
| 174 | endif |
| 175 | |
| 176 | unittest/emptymain.d: unittest/.directory |
Jens Geyer | 79f988c | 2014-10-03 20:42:54 +0200 | [diff] [blame] | 177 | @echo 'void main(){}' >$@ |
Jake Farrell | b95b0ff | 2012-03-22 21:49:10 +0000 | [diff] [blame] | 178 | |
| 179 | unittest/.directory: |
Jens Geyer | 79f988c | 2014-10-03 20:42:54 +0200 | [diff] [blame] | 180 | mkdir -p unittest || exists unittest |
| 181 | touch $@ |
Jake Farrell | b95b0ff | 2012-03-22 21:49:10 +0000 | [diff] [blame] | 182 | |
| 183 | unittest/debug/%: src/%.d $(all_targets) unittest/emptymain.d |
James E. King, III | d7142b7 | 2017-09-01 13:00:36 -0700 | [diff] [blame] | 184 | $(DMD) -g -of$(subst /,$(DMD_OF_DIRSEP),$@) $(d_test_flags) $^ |
Jake Farrell | b95b0ff | 2012-03-22 21:49:10 +0000 | [diff] [blame] | 185 | |
| 186 | unittest/release/%: src/%.d $(all_targets) unittest/emptymain.d |
Jens Geyer | 79f988c | 2014-10-03 20:42:54 +0200 | [diff] [blame] | 187 | $(DMD) -O -release -of$(subst /,$(DMD_OF_DIRSEP),$@) $(d_test_flags) $^ |
Jake Farrell | b95b0ff | 2012-03-22 21:49:10 +0000 | [diff] [blame] | 188 | |
| 189 | TESTS = $(addprefix unittest/debug/, $(d_test_modules)) \ |
Jens Geyer | 79f988c | 2014-10-03 20:42:54 +0200 | [diff] [blame] | 190 | $(addprefix unittest/release/, $(d_test_modules)) |
Jake Farrell | b95b0ff | 2012-03-22 21:49:10 +0000 | [diff] [blame] | 191 | |
Nobuaki Sukegawa | 8b791b2 | 2016-03-05 13:40:25 +0900 | [diff] [blame] | 192 | precross: all-local |
| 193 | $(MAKE) -C test precross |
Jake Farrell | b95b0ff | 2012-03-22 21:49:10 +0000 | [diff] [blame] | 194 | |
| 195 | EXTRA_DIST = \ |
Jens Geyer | 79f988c | 2014-10-03 20:42:54 +0200 | [diff] [blame] | 196 | src \ |
| 197 | test \ |
| 198 | README.md |