diff options
author | Nicolas Noble <nicolasnoble@users.noreply.github.com> | 2015-02-16 20:09:43 -0800 |
---|---|---|
committer | Nicolas Noble <nicolasnoble@users.noreply.github.com> | 2015-02-16 20:09:43 -0800 |
commit | befc83d3dd8d8ceb80822b7de910f1268195d10b (patch) | |
tree | 0e9d36668284097011d6502fde00b24610822a54 /templates/Makefile.template | |
parent | c132f34dc87b6e9c310716f05d20c2baf8726bfd (diff) | |
parent | a9f997d362c2e980a0d5da177041455f4c95c002 (diff) |
Merge pull request #531 from ctiller/build
Add support for out of tree builds
Diffstat (limited to 'templates/Makefile.template')
-rw-r--r-- | templates/Makefile.template | 195 |
1 files changed, 102 insertions, 93 deletions
diff --git a/templates/Makefile.template b/templates/Makefile.template index 4ddd7c5a77..3fae963a39 100644 --- a/templates/Makefile.template +++ b/templates/Makefile.template @@ -16,7 +16,7 @@ m = proto_re.match(filename) if not m: return filename - return 'gens/' + m.group(1) + '.pb.cc' + return '$(GENDIR)/' + m.group(1) + '.pb.cc' %> @@ -27,6 +27,15 @@ SYSTEM = $(HOST_SYSTEM) endif +ifndef BUILDDIR +BUILDDIR = . +endif + +BINDIR = $(BUILDDIR)/bins +OBJDIR = $(BUILDDIR)/objs +LIBDIR = $(BUILDDIR)/libs +GENDIR = $(BUILDDIR)/gens + # Configurations VALID_CONFIG_opt = 1 @@ -154,7 +163,7 @@ CXXFLAGS += -std=c++11 CPPFLAGS += -g -fPIC -Wall -Wextra -Werror -Wno-long-long -Wno-unused-parameter LDFLAGS += -g -fPIC -INCLUDES = . include gens +INCLUDES = . include $(GENDIR) ifeq ($(SYSTEM),Darwin) LIBS = m z else @@ -261,9 +270,9 @@ endif ifeq ($(HAS_SYSTEM_ZLIB),false) ifeq ($(HAS_EMBEDDED_ZLIB),true) -ZLIB_DEP = libs/$(CONFIG)/zlib/libz.a +ZLIB_DEP = $(LIBDIR)/$(CONFIG)/zlib/libz.a CPPFLAGS += -Ithird_party/zlib -LDFLAGS += -Llibs/$(CONFIG)/zlib +LDFLAGS += -L$(LIBDIR)/$(CONFIG)/zlib else DEP_MISSING += zlib endif @@ -271,10 +280,10 @@ endif ifeq ($(HAS_SYSTEM_OPENSSL_ALPN),false) ifeq ($(HAS_EMBEDDED_OPENSSL_ALPN),true) -OPENSSL_DEP = libs/$(CONFIG)/openssl/libssl.a -OPENSSL_MERGE_LIBS += libs/$(CONFIG)/openssl/libssl.a libs/$(CONFIG)/openssl/libcrypto.a +OPENSSL_DEP = $(LIBDIR)/$(CONFIG)/openssl/libssl.a +OPENSSL_MERGE_LIBS += $(LIBDIR)/$(CONFIG)/openssl/libssl.a $(LIBDIR)/$(CONFIG)/openssl/libcrypto.a CPPFLAGS += -Ithird_party/openssl/include -LDFLAGS += -Llibs/$(CONFIG)/openssl +LDFLAGS += -L$(LIBDIR)/$(CONFIG)/openssl LIBS_SECURE = dl else NO_SECURE = true @@ -287,10 +296,10 @@ LDLIBS_SECURE += $(addprefix -l, $(LIBS_SECURE)) ifeq ($(HAS_SYSTEM_PROTOBUF),false) ifeq ($(HAS_EMBEDDED_PROTOBUF),true) -PROTOBUF_DEP = libs/$(CONFIG)/protobuf/libprotobuf.a +PROTOBUF_DEP = $(LIBDIR)/$(CONFIG)/protobuf/libprotobuf.a CPPFLAGS += -Ithird_party/protobuf/src -LDFLAGS += -Llibs/$(CONFIG)/protobuf -PROTOC = bins/$(CONFIG)/protobuf/protoc +LDFLAGS += -L$(LIBDIR)/$(CONFIG)/protobuf +PROTOC = $(BINDIR)/$(CONFIG)/protobuf/protoc else NO_PROTOBUF = true endif @@ -312,7 +321,7 @@ endif PROTOC_PLUGINS=\ % for tgt in targets: % if tgt.build == 'protoc': - bins/$(CONFIG)/${tgt.name}\ + $(BINDIR)/$(CONFIG)/${tgt.name}\ % endif % endfor @@ -320,7 +329,7 @@ ifeq ($(DEP_MISSING),) all: static shared\ % for tgt in targets: % if tgt.build == 'all': - bins/$(CONFIG)/${tgt.name}\ + $(BINDIR)/$(CONFIG)/${tgt.name}\ % endif % endfor @@ -408,7 +417,7 @@ stop: @false % for tgt in targets: -${tgt.name}: bins/$(CONFIG)/${tgt.name} +${tgt.name}: $(BINDIR)/$(CONFIG)/${tgt.name} % endfor run_dep_checks: @@ -418,15 +427,15 @@ run_dep_checks: $(PROTOBUF_CHECK_CMD) || true $(PROTOC_CHECK_CMD) || true -libs/$(CONFIG)/zlib/libz.a: +$(LIBDIR)/$(CONFIG)/zlib/libz.a: $(E) "[MAKE] Building zlib" $(Q)(cd third_party/zlib ; CC="$(CC)" CFLAGS="-fPIC -fvisibility=hidden $(CPPFLAGS_$(CONFIG))" ./configure --static) $(Q)$(MAKE) -C third_party/zlib clean $(Q)$(MAKE) -C third_party/zlib - $(Q)mkdir -p libs/$(CONFIG)/zlib - $(Q)cp third_party/zlib/libz.a libs/$(CONFIG)/zlib + $(Q)mkdir -p $(LIBDIR)/$(CONFIG)/zlib + $(Q)cp third_party/zlib/libz.a $(LIBDIR)/$(CONFIG)/zlib -libs/$(CONFIG)/openssl/libssl.a: +$(LIBDIR)/$(CONFIG)/openssl/libssl.a: $(E) "[MAKE] Building openssl for $(SYSTEM)" ifeq ($(SYSTEM),Darwin) $(Q)(cd third_party/openssl ; CC="$(CC) -fPIC -fvisibility=hidden $(CPPFLAGS_$(CONFIG)) $(OPENSSL_CFLAGS_$(CONFIG))" ./Configure darwin64-x86_64-cc $(OPENSSL_CONFIG_$(CONFIG))) @@ -435,30 +444,30 @@ else endif $(Q)$(MAKE) -C third_party/openssl clean $(Q)$(MAKE) -C third_party/openssl build_crypto build_ssl - $(Q)mkdir -p libs/$(CONFIG)/openssl - $(Q)cp third_party/openssl/libssl.a third_party/openssl/libcrypto.a libs/$(CONFIG)/openssl + $(Q)mkdir -p $(LIBDIR)/$(CONFIG)/openssl + $(Q)cp third_party/openssl/libssl.a third_party/openssl/libcrypto.a $(LIBDIR)/$(CONFIG)/openssl third_party/protobuf/configure: $(E) "[AUTOGEN] Preparing protobuf" $(Q)(cd third_party/protobuf ; autoreconf -f -i -Wall,no-obsolete) -libs/$(CONFIG)/protobuf/libprotobuf.a: third_party/protobuf/configure +$(LIBDIR)/$(CONFIG)/protobuf/libprotobuf.a: third_party/protobuf/configure $(E) "[MAKE] Building protobuf" $(Q)(cd third_party/protobuf ; CC="$(CC)" CXX="$(CXX)" LDFLAGS="$(LDFLAGS_$(CONFIG)) -g" CXXFLAGS="-DLANG_CXX11 -std=c++11" CPPFLAGS="$(CPPFLAGS_$(CONFIG)) -g" ./configure --disable-shared --enable-static) $(Q)$(MAKE) -C third_party/protobuf clean $(Q)$(MAKE) -C third_party/protobuf - $(Q)mkdir -p libs/$(CONFIG)/protobuf - $(Q)mkdir -p bins/$(CONFIG)/protobuf - $(Q)cp third_party/protobuf/src/.libs/libprotoc.a libs/$(CONFIG)/protobuf - $(Q)cp third_party/protobuf/src/.libs/libprotobuf.a libs/$(CONFIG)/protobuf - $(Q)cp third_party/protobuf/src/protoc bins/$(CONFIG)/protobuf + $(Q)mkdir -p $(LIBDIR)/$(CONFIG)/protobuf + $(Q)mkdir -p $(BINDIR)/$(CONFIG)/protobuf + $(Q)cp third_party/protobuf/src/.libs/libprotoc.a $(LIBDIR)/$(CONFIG)/protobuf + $(Q)cp third_party/protobuf/src/.libs/libprotobuf.a $(LIBDIR)/$(CONFIG)/protobuf + $(Q)cp third_party/protobuf/src/protoc $(BINDIR)/$(CONFIG)/protobuf static: static_c static_cxx static_c: \ % for lib in libs: % if lib.build == 'all' and lib.language == 'c': - libs/$(CONFIG)/lib${lib.name}.a\ + $(LIBDIR)/$(CONFIG)/lib${lib.name}.a\ % endif % endfor @@ -466,7 +475,7 @@ static_c: \ static_cxx: \ % for lib in libs: % if lib.build == 'all' and lib.language == 'c++': - libs/$(CONFIG)/lib${lib.name}.a\ + $(LIBDIR)/$(CONFIG)/lib${lib.name}.a\ % endif % endfor @@ -476,7 +485,7 @@ shared: shared_c shared_cxx shared_c: \ % for lib in libs: % if lib.build == 'all' and lib.language == 'c': - libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT)\ + $(LIBDIR)/$(CONFIG)/lib${lib.name}.$(SHARED_EXT)\ % endif % endfor @@ -484,7 +493,7 @@ shared_c: \ shared_cxx: \ % for lib in libs: % if lib.build == 'all' and lib.language == 'c++': - libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT)\ + $(LIBDIR)/$(CONFIG)/lib${lib.name}.$(SHARED_EXT)\ % endif % endfor @@ -494,7 +503,7 @@ privatelibs: privatelibs_c privatelibs_cxx privatelibs_c: \ % for lib in libs: % if lib.build == 'private' and lib.language == 'c': - libs/$(CONFIG)/lib${lib.name}.a\ + $(LIBDIR)/$(CONFIG)/lib${lib.name}.a\ % endif % endfor @@ -502,7 +511,7 @@ privatelibs_c: \ privatelibs_cxx: \ % for lib in libs: % if lib.build == 'private' and lib.language == 'c++': - libs/$(CONFIG)/lib${lib.name}.a\ + $(LIBDIR)/$(CONFIG)/lib${lib.name}.a\ % endif % endfor @@ -512,7 +521,7 @@ buildtests: buildtests_c buildtests_cxx buildtests_c: privatelibs_c\ % for tgt in targets: % if tgt.build == 'test' and not tgt.language == 'c++': - bins/$(CONFIG)/${tgt.name}\ + $(BINDIR)/$(CONFIG)/${tgt.name}\ % endif % endfor @@ -520,7 +529,7 @@ buildtests_c: privatelibs_c\ buildtests_cxx: privatelibs_cxx\ % for tgt in targets: % if tgt.build == 'test' and tgt.language == 'c++': - bins/$(CONFIG)/${tgt.name}\ + $(BINDIR)/$(CONFIG)/${tgt.name}\ % endif % endfor @@ -531,7 +540,7 @@ test_c: buildtests_c % for tgt in targets: % if tgt.build == 'test' and tgt.get('run', True) and not tgt.language == 'c++': $(E) "[RUN] Testing ${tgt.name}" - $(Q) ./bins/$(CONFIG)/${tgt.name} || ( echo test ${tgt.name} failed ; exit 1 ) + $(Q) $(BINDIR)/$(CONFIG)/${tgt.name} || ( echo test ${tgt.name} failed ; exit 1 ) % endif % endfor @@ -540,7 +549,7 @@ test_cxx: buildtests_cxx % for tgt in targets: % if tgt.build == 'test' and tgt.get('run', True) and tgt.language == 'c++': $(E) "[RUN] Testing ${tgt.name}" - $(Q) ./bins/$(CONFIG)/${tgt.name} || ( echo test ${tgt.name} failed ; exit 1 ) + $(Q) $(BINDIR)/$(CONFIG)/${tgt.name} || ( echo test ${tgt.name} failed ; exit 1 ) % endif % endfor @@ -548,7 +557,7 @@ test_cxx: buildtests_cxx tools: privatelibs\ % for tgt in targets: % if tgt.build == 'tool': - bins/$(CONFIG)/${tgt.name}\ + $(BINDIR)/$(CONFIG)/${tgt.name}\ % endif % endfor @@ -556,7 +565,7 @@ tools: privatelibs\ buildbenchmarks: privatelibs\ % for tgt in targets: % if tgt.build == 'benchmark': - bins/$(CONFIG)/${tgt.name}\ + $(BINDIR)/$(CONFIG)/${tgt.name}\ % endif % endfor @@ -580,7 +589,7 @@ ifeq ($(CONFIG),opt) % if lib.language == "c": % if lib.build == "all": $(E) "[STRIP] Stripping lib${lib.name}.a" - $(Q) $(STRIP) libs/$(CONFIG)/lib${lib.name}.a + $(Q) $(STRIP) $(LIBDIR)/$(CONFIG)/lib${lib.name}.a % endif % endif % endfor @@ -592,7 +601,7 @@ ifeq ($(CONFIG),opt) % if lib.language == "c++": % if lib.build == "all": $(E) "[STRIP] Stripping lib${lib.name}.a" - $(Q) $(STRIP) libs/$(CONFIG)/lib${lib.name}.a + $(Q) $(STRIP) $(LIBDIR)/$(CONFIG)/lib${lib.name}.a % endif % endif % endfor @@ -604,7 +613,7 @@ ifeq ($(CONFIG),opt) % if lib.language == "c": % if lib.build == "all": $(E) "[STRIP] Stripping lib${lib.name}.so" - $(Q) $(STRIP) libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT) + $(Q) $(STRIP) $(LIBDIR)/$(CONFIG)/lib${lib.name}.$(SHARED_EXT) % endif % endif % endfor @@ -616,7 +625,7 @@ ifeq ($(CONFIG),opt) % if lib.language == "c++": % if lib.build == "all": $(E) "[STRIP] Stripping lib${lib.name}.so" - $(Q) $(STRIP) libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT) + $(Q) $(STRIP) $(LIBDIR)/$(CONFIG)/lib${lib.name}.$(SHARED_EXT) % endif % endif % endfor @@ -624,32 +633,32 @@ endif % for p in protos: ifeq ($(NO_PROTOC),true) -gens/${p}.pb.cc: protoc_dep_error +$(GENDIR)/${p}.pb.cc: protoc_dep_error else -gens/${p}.pb.cc: ${p}.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) +$(GENDIR)/${p}.pb.cc: ${p}.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) $(E) "[PROTOC] Generating protobuf CC file from $<" $(Q) mkdir -p `dirname $@` - $(Q) $(PROTOC) --cpp_out=gens --grpc_out=gens --plugin=protoc-gen-grpc=bins/$(CONFIG)/cpp_plugin $< + $(Q) $(PROTOC) --cpp_out=$(GENDIR) --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(BINDIR)/$(CONFIG)/cpp_plugin $< endif % endfor -objs/$(CONFIG)/%.o : %.c +$(OBJDIR)/$(CONFIG)/%.o : %.c $(E) "[C] Compiling $<" $(Q) mkdir -p `dirname $@` $(Q) $(CC) $(CFLAGS) $(CPPFLAGS) -MMD -MF $(addsuffix .dep, $(basename $@)) -c -o $@ $< -objs/$(CONFIG)/%.o : gens/%.pb.cc +$(OBJDIR)/$(CONFIG)/%.o : $(GENDIR)/%.pb.cc $(E) "[CXX] Compiling $<" $(Q) mkdir -p `dirname $@` $(Q) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -MMD -MF $(addsuffix .dep, $(basename $@)) -c -o $@ $< -objs/$(CONFIG)/src/compiler/%.o : src/compiler/%.cc +$(OBJDIR)/$(CONFIG)/src/compiler/%.o : src/compiler/%.cc $(E) "[HOSTCXX] Compiling $<" $(Q) mkdir -p `dirname $@` $(Q) $(HOST_CXX) $(HOST_CXXFLAGS) $(HOST_CPPFLAGS) -MMD -MF $(addsuffix .dep, $(basename $@)) -c -o $@ $< -objs/$(CONFIG)/%.o : %.cc +$(OBJDIR)/$(CONFIG)/%.o : %.cc $(E) "[CXX] Compiling $<" $(Q) mkdir -p `dirname $@` $(Q) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -MMD -MF $(addsuffix .dep, $(basename $@)) -c -o $@ $< @@ -678,7 +687,7 @@ install-static_c: static_c strip-static_c % if lib.language == "c": % if lib.build == "all": $(E) "[INSTALL] Installing lib${lib.name}.a" - $(Q) $(INSTALL) libs/$(CONFIG)/lib${lib.name}.a $(prefix)/lib/lib${lib.name}.a + $(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/lib${lib.name}.a $(prefix)/lib/lib${lib.name}.a % endif % endif % endfor @@ -688,7 +697,7 @@ install-static_cxx: static_cxx strip-static_cxx % if lib.language == "c++": % if lib.build == "all": $(E) "[INSTALL] Installing lib${lib.name}.a" - $(Q) $(INSTALL) libs/$(CONFIG)/lib${lib.name}.a $(prefix)/lib/lib${lib.name}.a + $(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/lib${lib.name}.a $(prefix)/lib/lib${lib.name}.a % endif % endif % endfor @@ -699,11 +708,11 @@ install-shared_c: shared_c strip-shared_c % if lib.build == "all": ifeq ($(SYSTEM),MINGW32) $(E) "[INSTALL] Installing ${lib.name}.$(SHARED_EXT)" - $(Q) $(INSTALL) libs/$(CONFIG)/${lib.name}.$(SHARED_EXT) $(prefix)/lib/${lib.name}.$(SHARED_EXT) - $(Q) $(INSTALL) libs/$(CONFIG)/lib${lib.name}-imp.a $(prefix)/lib/lib${lib.name}-imp.a + $(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/${lib.name}.$(SHARED_EXT) $(prefix)/lib/${lib.name}.$(SHARED_EXT) + $(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/lib${lib.name}-imp.a $(prefix)/lib/lib${lib.name}-imp.a else $(E) "[INSTALL] Installing lib${lib.name}.$(SHARED_EXT)" - $(Q) $(INSTALL) libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT) $(prefix)/lib/lib${lib.name}.$(SHARED_EXT) + $(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/lib${lib.name}.$(SHARED_EXT) $(prefix)/lib/lib${lib.name}.$(SHARED_EXT) ifneq ($(SYSTEM),Darwin) $(Q) ln -sf lib${lib.name}.$(SHARED_EXT) $(prefix)/lib/lib${lib.name}.so endif @@ -723,11 +732,11 @@ install-shared_cxx: shared_cxx strip-shared_cxx % if lib.build == "all": ifeq ($(SYSTEM),MINGW32) $(E) "[INSTALL] Installing ${lib.name}.$(SHARED_EXT)" - $(Q) $(INSTALL) libs/$(CONFIG)/${lib.name}.$(SHARED_EXT) $(prefix)/lib/${lib.name}.$(SHARED_EXT) - $(Q) $(INSTALL) libs/$(CONFIG)/lib${lib.name}-imp.a $(prefix)/lib/lib${lib.name}-imp.a + $(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/${lib.name}.$(SHARED_EXT) $(prefix)/lib/${lib.name}.$(SHARED_EXT) + $(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/lib${lib.name}-imp.a $(prefix)/lib/lib${lib.name}-imp.a else $(E) "[INSTALL] Installing lib${lib.name}.$(SHARED_EXT)" - $(Q) $(INSTALL) libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT) $(prefix)/lib/lib${lib.name}.$(SHARED_EXT) + $(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/lib${lib.name}.$(SHARED_EXT) $(prefix)/lib/lib${lib.name}.$(SHARED_EXT) ifneq ($(SYSTEM),Darwin) $(Q) ln -sf lib${lib.name}.$(SHARED_EXT) $(prefix)/lib/lib${lib.name}.so endif @@ -742,7 +751,7 @@ endif endif clean: - $(Q) $(RM) -rf objs libs bins gens + $(Q) $(RM) -rf $(OBJDIR) $(LIBDIR) $(BINDIR) $(GENDIR) # The various libraries @@ -780,7 +789,7 @@ PUBLIC_HEADERS_C += \\ % endfor % endif -LIB${lib.name.upper()}_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(LIB${lib.name.upper()}_SRC)))) +LIB${lib.name.upper()}_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIB${lib.name.upper()}_SRC)))) ## If the library requires OpenSSL with ALPN, let's add some restrictions. % if lib.get('secure', True): @@ -788,13 +797,13 @@ ifeq ($(NO_SECURE),true) # You can't build secure libraries if you don't have OpenSSL with ALPN. -libs/$(CONFIG)/lib${lib.name}.a: openssl_dep_error +$(LIBDIR)/$(CONFIG)/lib${lib.name}.a: openssl_dep_error % if lib.build == "all": ifeq ($(SYSTEM),MINGW32) -libs/$(CONFIG)/${lib.name}.$(SHARED_EXT): openssl_dep_error +$(LIBDIR)/$(CONFIG)/${lib.name}.$(SHARED_EXT): openssl_dep_error else -libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT): openssl_dep_error +$(LIBDIR)/$(CONFIG)/lib${lib.name}.$(SHARED_EXT): openssl_dep_error endif % endif @@ -805,13 +814,13 @@ ifeq ($(NO_PROTOBUF),true) # You can't build a C++ library if you don't have protobuf - a bit overreached, but still okay. -libs/$(CONFIG)/lib${lib.name}.a: protobuf_dep_error +$(LIBDIR)/$(CONFIG)/lib${lib.name}.a: protobuf_dep_error % if lib.build == "all": ifeq ($(SYSTEM),MINGW32) -libs/$(CONFIG)/${lib.name}.$(SHARED_EXT): protobuf_dep_error +$(LIBDIR)/$(CONFIG)/${lib.name}.$(SHARED_EXT): protobuf_dep_error else -libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT): protobuf_dep_error +$(LIBDIR)/$(CONFIG)/lib${lib.name}.$(SHARED_EXT): protobuf_dep_error endif % endif @@ -827,7 +836,7 @@ ${src}: $(OPENSSL_DEP) % endfor endif -libs/$(CONFIG)/lib${lib.name}.a: $(ZLIB_DEP) $(OPENSSL_DEP)\ +$(LIBDIR)/$(CONFIG)/lib${lib.name}.a: $(ZLIB_DEP) $(OPENSSL_DEP)\ ## The else here corresponds to the if secure earlier. % else: % if lib.language == 'c++': @@ -835,20 +844,20 @@ ifeq ($(NO_PROTOBUF),true) # You can't build a C++ library if you don't have protobuf - a bit overreached, but still okay. -libs/$(CONFIG)/lib${lib.name}.a: protobuf_dep_error +$(LIBDIR)/$(CONFIG)/lib${lib.name}.a: protobuf_dep_error % if lib.build == "all": ifeq ($(SYSTEM),MINGW32) -libs/$(CONFIG)/${lib.name}.$(SHARED_EXT): protobuf_dep_error +$(LIBDIR)/$(CONFIG)/${lib.name}.$(SHARED_EXT): protobuf_dep_error else -libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT): protobuf_dep_error +$(LIBDIR)/$(CONFIG)/lib${lib.name}.$(SHARED_EXT): protobuf_dep_error endif % endif else % endif -libs/$(CONFIG)/lib${lib.name}.a: $(ZLIB_DEP)\ +$(LIBDIR)/$(CONFIG)/lib${lib.name}.a: $(ZLIB_DEP)\ % endif % if lib.language == 'c++': $(PROTOBUF_DEP)\ @@ -856,21 +865,21 @@ libs/$(CONFIG)/lib${lib.name}.a: $(ZLIB_DEP)\ $(LIB${lib.name.upper()}_OBJS) $(E) "[AR] Creating $@" $(Q) mkdir -p `dirname $@` - $(Q) rm -f libs/$(CONFIG)/lib${lib.name}.a - $(Q) $(AR) rcs libs/$(CONFIG)/lib${lib.name}.a $(LIB${lib.name.upper()}_OBJS) + $(Q) rm -f $(LIBDIR)/$(CONFIG)/lib${lib.name}.a + $(Q) $(AR) rcs $(LIBDIR)/$(CONFIG)/lib${lib.name}.a $(LIB${lib.name.upper()}_OBJS) % if lib.get('baselib', False): % if lib.get('secure', True): $(Q) rm -rf tmp-merge $(Q) mkdir tmp-merge - $(Q) ( cd tmp-merge ; $(AR) x ../libs/$(CONFIG)/lib${lib.name}.a ) + $(Q) ( cd tmp-merge ; $(AR) x ../$(LIBDIR)/$(CONFIG)/lib${lib.name}.a ) $(Q) for l in $(OPENSSL_MERGE_LIBS) ; do ( cd tmp-merge ; <%text>ar x ../$${l}</%text> ) ; done - $(Q) rm -f libs/$(CONFIG)/lib${lib.name}.a tmp-merge/__.SYMDEF* - $(Q) ar rcs libs/$(CONFIG)/lib${lib.name}.a tmp-merge/* + $(Q) rm -f $(LIBDIR)/$(CONFIG)/lib${lib.name}.a tmp-merge/__.SYMDEF* + $(Q) ar rcs $(LIBDIR)/$(CONFIG)/lib${lib.name}.a tmp-merge/* $(Q) rm -rf tmp-merge % endif % endif ifeq ($(SYSTEM),Darwin) - $(Q) ranlib libs/$(CONFIG)/lib${lib.name}.a + $(Q) ranlib $(LIBDIR)/$(CONFIG)/lib${lib.name}.a endif <% @@ -879,8 +888,8 @@ endif else: ld = '$(LD)' - out_base = 'libs/$(CONFIG)/' + lib.name - out_libbase = 'libs/$(CONFIG)/lib' + lib.name + out_base = '$(LIBDIR)/$(CONFIG)/' + lib.name + out_libbase = '$(LIBDIR)/$(CONFIG)/lib' + lib.name common = '$(LIB' + lib.name.upper() + '_OBJS) $(LDLIBS)' @@ -890,9 +899,9 @@ endif mingw_lib_deps = ' $(ZLIB_DEP)' for dep in lib.get('deps', []): libs = libs + ' -l' + dep - lib_deps = lib_deps + ' libs/$(CONFIG)/lib' + dep + '.$(SHARED_EXT)' + lib_deps = lib_deps + ' $(LIBDIR)/$(CONFIG)/lib' + dep + '.$(SHARED_EXT)' mingw_libs = mingw_libs + ' -l' + dep + '-imp' - mingw_lib_deps = mingw_lib_deps + 'libs/$(CONFIG)/' + dep + '.$(SHARED_EXT)' + mingw_lib_deps = mingw_lib_deps + '$(LIBDIR)/$(CONFIG)/' + dep + '.$(SHARED_EXT)' if lib.get('secure', True): common = common + ' $(LDLIBS_SECURE) $(OPENSSL_MERGE_LIBS)' @@ -905,15 +914,15 @@ ifeq ($(SYSTEM),MINGW32) ${out_base}.$(SHARED_EXT): $(LIB${lib.name.upper()}_OBJS) ${mingw_lib_deps} $(E) "[LD] Linking $@" $(Q) mkdir -p `dirname $@` - $(Q) ${ld} $(LDFLAGS) -Llibs/$(CONFIG) -shared -Wl,--output-def=${out_base}.def -Wl,--out-implib=${out_libbase}-imp.a -o ${out_base}.$(SHARED_EXT) ${common}${mingw_libs} + $(Q) ${ld} $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,--output-def=${out_base}.def -Wl,--out-implib=${out_libbase}-imp.a -o ${out_base}.$(SHARED_EXT) ${common}${mingw_libs} else ${out_libbase}.$(SHARED_EXT): $(LIB${lib.name.upper()}_OBJS) ${lib_deps} $(E) "[LD] Linking $@" $(Q) mkdir -p `dirname $@` ifeq ($(SYSTEM),Darwin) - $(Q) ${ld} $(LDFLAGS) -Llibs/$(CONFIG) -dynamiclib -o ${out_libbase}.$(SHARED_EXT) ${common}${libs} + $(Q) ${ld} $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -dynamiclib -o ${out_libbase}.$(SHARED_EXT) ${common}${libs} else - $(Q) ${ld} $(LDFLAGS) -Llibs/$(CONFIG) -shared -Wl,-soname,lib${lib.name}.so.${settings.version.major} -o ${out_libbase}.$(SHARED_EXT) ${common}${libs} + $(Q) ${ld} $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,lib${lib.name}.so.${settings.version.major} -o ${out_libbase}.$(SHARED_EXT) ${common}${libs} $(Q) ln -sf lib${lib.name}.$(SHARED_EXT) ${out_libbase}.so.${settings.version.major} $(Q) ln -sf lib${lib.name}.$(SHARED_EXT) ${out_libbase}.so endif @@ -944,7 +953,7 @@ endif % for src in lib.src: % if not proto_re.match(src): -objs/$(CONFIG)/${os.path.splitext(src)[0]}.o: \ +$(OBJDIR)/$(CONFIG)/${os.path.splitext(src)[0]}.o: \ % for src2 in lib.src: % if proto_re.match(src2): ${proto_to_cc(src2)}\ @@ -963,14 +972,14 @@ ${tgt.name.upper()}_SRC = \\ % endfor -${tgt.name.upper()}_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(${tgt.name.upper()}_SRC)))) +${tgt.name.upper()}_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(${tgt.name.upper()}_SRC)))) % if tgt.get('secure', True): ifeq ($(NO_SECURE),true) # You can't build secure targets if you don't have OpenSSL with ALPN. -bins/$(CONFIG)/${tgt.name}: openssl_dep_error +$(BINDIR)/$(CONFIG)/${tgt.name}: openssl_dep_error else @@ -990,16 +999,16 @@ ifeq ($(NO_PROTOBUF),true) # You can't build the protoc plugins if you don't have protobuf 3.0.0+. -bins/$(CONFIG)/${tgt.name}: protobuf_dep_error +$(BINDIR)/$(CONFIG)/${tgt.name}: protobuf_dep_error else -bins/$(CONFIG)/${tgt.name}: $(PROTOBUF_DEP) $(${tgt.name.upper()}_OBJS)\ +$(BINDIR)/$(CONFIG)/${tgt.name}: $(PROTOBUF_DEP) $(${tgt.name.upper()}_OBJS)\ % else: -bins/$(CONFIG)/${tgt.name}: $(${tgt.name.upper()}_OBJS)\ +$(BINDIR)/$(CONFIG)/${tgt.name}: $(${tgt.name.upper()}_OBJS)\ % endif % for dep in tgt.deps: - libs/$(CONFIG)/lib${dep}.a\ + $(LIBDIR)/$(CONFIG)/lib${dep}.a\ % endfor % if tgt.language == "c++": @@ -1023,7 +1032,7 @@ bins/$(CONFIG)/${tgt.name}: $(${tgt.name.upper()}_OBJS)\ $(Q) $(LD) $(LDFLAGS) $(${tgt.name.upper()}_OBJS)\ % endif % for dep in tgt.deps: - libs/$(CONFIG)/lib${dep}.a\ + $(LIBDIR)/$(CONFIG)/lib${dep}.a\ % endfor % if tgt.language == "c++": % if tgt.build == 'protoc': @@ -1042,7 +1051,7 @@ bins/$(CONFIG)/${tgt.name}: $(${tgt.name.upper()}_OBJS)\ % elif tgt.get('secure', True): $(LDLIBS_SECURE)\ % endif - -o bins/$(CONFIG)/${tgt.name} + -o $(BINDIR)/$(CONFIG)/${tgt.name} % if tgt.build == 'protoc': endif @@ -1053,9 +1062,9 @@ endif % endif % for src in tgt.src: -objs/$(CONFIG)/${os.path.splitext(src)[0]}.o: \ +$(OBJDIR)/$(CONFIG)/${os.path.splitext(src)[0]}.o: \ % for dep in tgt.deps: - libs/$(CONFIG)/lib${dep}.a\ + $(LIBDIR)/$(CONFIG)/lib${dep}.a\ % endfor % endfor |