# # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # AUTOMAKE_OPTIONS = serial-tests SUBDIRS = . if WITH_TESTS SUBDIRS += test endif # # Enumeration of all the public and private modules. # # We unconditionally install all of them, even if libevent or OpenSSL are # not available, but build the respective libraries only if the Deimos headers # could be found. # d_thriftmodules = $(addprefix thrift/, base) d_thriftdir = $(D_IMPORT_PREFIX)/thrift d_thrift_DATA = $(addprefix src/, $(addsuffix .d, $(d_thriftmodules))) d_asyncmodules = $(addprefix thrift/async/, base libevent socket ssl) d_asyncdir = $(d_thriftdir)/async d_async_DATA = $(addprefix src/, $(addsuffix .d, $(d_asyncmodules))) d_codegenmodules = $(addprefix thrift/codegen/, async_client \ async_client_pool base client client_pool processor) #d_codegenmodules = $(addprefix thrift/codegen/, async_client \ # async_client_pool base client client_pool idlgen processor) d_codegendir = $(d_thriftdir)/codegen d_codegen_DATA = $(addprefix src/, $(addsuffix .d, $(d_codegenmodules))) d_protocolmodules = $(addprefix thrift/protocol/, base binary compact json \ processor) d_protocoldir = $(d_thriftdir)/protocol d_protocol_DATA = $(addprefix src/, $(addsuffix .d, $(d_protocolmodules))) d_servermodules = $(addprefix thrift/server/, base simple nonblocking \ taskpool threaded) d_serverdir = $(d_thriftdir)/server d_server_DATA = $(addprefix src/, $(addsuffix .d, $(d_servermodules))) d_servertransportmodules = $(addprefix thrift/server/transport/, base socket ssl) d_servertransportdir = $(d_thriftdir)/server/transport d_servertransport_DATA = $(addprefix src/, $(addsuffix .d, \ $(d_servertransportmodules))) d_transportmodules = $(addprefix thrift/transport/, base buffered file \ framed http memory piped range socket ssl zlib) d_transportdir = $(d_thriftdir)/transport d_transport_DATA = $(addprefix src/, $(addsuffix .d, $(d_transportmodules))) d_utilmodules = $(addprefix thrift/util/, awaitable cancellation future \ hashset) d_utildir = $(d_thriftdir)/util d_util_DATA = $(addprefix src/, $(addsuffix .d, $(d_utilmodules))) d_internalmodules = $(addprefix thrift/internal/, algorithm codegen ctfe \ endian resource_pool socket ssl ssl_bio traits) d_internaldir = $(d_thriftdir)/internal d_internal_DATA = $(addprefix src/, $(addsuffix .d, $(d_internalmodules))) d_testmodules = $(addprefix thrift/internal/test/, protocol server) d_testdir = $(d_internaldir)/test d_test_DATA = $(addprefix src/, $(addsuffix .d, $(d_testmodules))) d_publicmodules = $(d_thriftmodules) $(d_asyncmodules) \ $(d_codegenmodules) $(d_protocolmodules) $(d_servermodules) \ $(d_servertransportmodules) $(d_transportmodules) $(d_utilmodules) d_publicsources = $(addprefix src/, $(addsuffix .d, $(d_publicmodules))) d_modules = $(d_publicmodules) $(d_internalmodules) $(d_testmodules) # List modules with external dependencies and remove them from the main list d_libevent_dependent_modules = thrift/async/libevent thrift/server/nonblocking d_openssl_dependent_modules = thrift/async/ssl thrift/internal/ssl \ thrift/internal/ssl_bio thrift/transport/ssl thrift/server/transport/ssl d_main_modules = $(filter-out $(d_libevent_dependent_modules) \ $(d_openssl_dependent_modules),$(d_modules)) d_lib_flags = -w -wi -Isrc -lib all_targets = # # libevent-dependent modules. # if HAVE_DEIMOS_EVENT2 $(D_EVENT_LIB_NAME): $(addprefix src/, $(addsuffix .d, $(d_libevent_dependent_modules))) $(DMD) -of$(D_EVENT_LIB_NAME) $(d_lib_flags) $^ all_targets += $(D_EVENT_LIB_NAME) endif # # OpenSSL-dependent modules. # if HAVE_DEIMOS_OPENSSL $(D_SSL_LIB_NAME): $(addprefix src/, $(addsuffix .d, $(d_openssl_dependent_modules))) $(DMD) -of$(D_SSL_LIB_NAME) $(d_lib_flags) $^ all_targets += $(D_SSL_LIB_NAME) endif # # Main library target. # $(D_LIB_NAME): $(addprefix src/, $(addsuffix .d, $(d_main_modules))) $(DMD) -of$(D_LIB_NAME) $(d_lib_flags) $^ all_targets += $(D_LIB_NAME) # # Documentation target (requires Dil). # docs: $(d_publicsources) src/thrift/index.d dil ddoc docs -hl --kandil $^ # # Hook custom library targets into the automake all/install targets. # all-local: $(all_targets) install-exec-local: $(INSTALL_PROGRAM) $(all_targets) $(DESTDIR)$(libdir) clean-local: $(RM) -rf docs $(D_LIB_NAME) $(D_EVENT_LIB_NAME) $(D_SSL_LIB_NAME) unittest # # Unit tests (built both in debug and release mode). # d_test_flags = -unittest -w -wi -I$(top_srcdir)/lib/d/src # There just must be some way to reassign a variable without warnings in # Automake... d_test_modules__ = $(d_modules) if WITH_D_EVENT_TESTS d_test_flags += $(DMD_LIBEVENT_FLAGS) d_test_modules_ = $(d_test_modules__) else d_test_modules_ = $(filter-out $(d_libevent_dependent_modules), $(d_test_modules__)) endif if WITH_D_SSL_TESTS d_test_flags += $(DMD_OPENSSL_FLAGS) d_test_modules = $(d_test_modules_) else d_test_modules = $(filter-out $(d_openssl_dependent_modules), $(d_test_modules_)) endif unittest/emptymain.d: unittest/.directory @echo 'void main(){}' >$@ unittest/.directory: mkdir -p unittest || exists unittest touch $@ unittest/debug/%: src/%.d $(all_targets) unittest/emptymain.d $(DMD) -gc -of$(subst /,$(DMD_OF_DIRSEP),$@) $(d_test_flags) $^ unittest/release/%: src/%.d $(all_targets) unittest/emptymain.d $(DMD) -O -release -of$(subst /,$(DMD_OF_DIRSEP),$@) $(d_test_flags) $^ TESTS = $(addprefix unittest/debug/, $(d_test_modules)) \ $(addprefix unittest/release/, $(d_test_modules)) EXTRA_DIST = \ src \ test \ README.md