Allow specifying CONFIG as a string, instead of DEBUG=1.

This will open the way for CONFIG=tsan, for instance.
	Change on 2015/01/06 by ctiller <ctiller@google.com>
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=83368093
pull/1/merge
ctiller 10 years ago committed by Nicolas Noble
parent 5bcea0d0d5
commit cab52e76e5
  1. 3771
      Makefile
  2. 147
      templates/Makefile.template

3771
Makefile

File diff suppressed because one or more lines are too long

@ -38,16 +38,23 @@ HOST_CXX = $(CXX)
HOST_LD = $(LD) HOST_LD = $(LD)
HOST_LDXX = $(LDXX) HOST_LDXX = $(LDXX)
ifeq ($(DEBUG),) CONFIG ?= opt
CPPFLAGS += -O2
DEFINES += NDEBUG VALID_CONFIG_opt = 1
TGTDIR = opt CPPFLAGS_opt = -O2
else DEFINES_opt = NDEBUG
CPPFLAGS += -O0
DEFINES += _DEBUG DEBUG VALID_CONFIG_dbg = 1
TGTDIR = dbg CPPFLAGS_dbg = -O0
DEFINES_dbg = _DEBUG DEBUG
ifndef VALID_CONFIG_$(CONFIG)
$(error Invalid CONFIG value '$(CONFIG)')
endif endif
CPPFLAGS += $(CPPFLAGS_$(CONFIG))
DEFINES += $(DEFINES_$(CONFIG))
CFLAGS += -std=c89 -pedantic CFLAGS += -std=c89 -pedantic
CXXFLAGS += -std=c++11 CXXFLAGS += -std=c++11
CPPFLAGS += -g -fPIC -Wall -Werror -Wno-long-long CPPFLAGS += -g -fPIC -Wall -Werror -Wno-long-long
@ -185,7 +192,7 @@ ifeq ($(DEP_MISSING),)
all: static shared\ all: static shared\
% for tgt in targets: % for tgt in targets:
% if tgt.build == 'all': % if tgt.build == 'all':
bins/$(TGTDIR)/${tgt.name}\ bins/$(CONFIG)/${tgt.name}\
% endif % endif
% endfor % endfor
@ -241,7 +248,7 @@ stop:
@false @false
% for tgt in targets: % for tgt in targets:
${tgt.name}: bins/$(TGTDIR)/${tgt.name} ${tgt.name}: bins/$(CONFIG)/${tgt.name}
% endfor % endfor
run_dep_checks: run_dep_checks:
@ -262,7 +269,7 @@ static: static_c static_cxx
static_c: dep_c\ static_c: dep_c\
% for lib in libs: % for lib in libs:
% if lib.build == 'all' and not lib.get('c++', False): % if lib.build == 'all' and not lib.get('c++', False):
libs/$(TGTDIR)/lib${lib.name}.a\ libs/$(CONFIG)/lib${lib.name}.a\
% endif % endif
% endfor % endfor
@ -270,7 +277,7 @@ static_c: dep_c\
static_cxx: dep_cxx\ static_cxx: dep_cxx\
% for lib in libs: % for lib in libs:
% if lib.build == 'all' and lib.get('c++', False): % if lib.build == 'all' and lib.get('c++', False):
libs/$(TGTDIR)/lib${lib.name}.a\ libs/$(CONFIG)/lib${lib.name}.a\
% endif % endif
% endfor % endfor
@ -280,7 +287,7 @@ shared: shared_c shared_cxx
shared_c: dep_c\ shared_c: dep_c\
% for lib in libs: % for lib in libs:
% if lib.build == 'all' and not lib.get('c++', False): % if lib.build == 'all' and not lib.get('c++', False):
libs/$(TGTDIR)/lib${lib.name}.$(SHARED_EXT)\ libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT)\
% endif % endif
% endfor % endfor
@ -288,7 +295,7 @@ shared_c: dep_c\
shared_cxx: dep_cxx\ shared_cxx: dep_cxx\
% for lib in libs: % for lib in libs:
% if lib.build == 'all' and lib.get('c++', False): % if lib.build == 'all' and lib.get('c++', False):
libs/$(TGTDIR)/lib${lib.name}.$(SHARED_EXT)\ libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT)\
% endif % endif
% endfor % endfor
@ -298,7 +305,7 @@ privatelibs: privatelibs_c privatelibs_cxx
privatelibs_c: dep_c\ privatelibs_c: dep_c\
% for lib in libs: % for lib in libs:
% if lib.build == 'private': % if lib.build == 'private':
libs/$(TGTDIR)/lib${lib.name}.a\ libs/$(CONFIG)/lib${lib.name}.a\
% endif % endif
% endfor % endfor
@ -306,7 +313,7 @@ privatelibs_c: dep_c\
privatelibs_cxx: dep_cxx\ privatelibs_cxx: dep_cxx\
% for lib in libs: % for lib in libs:
% if lib.build == 'private': % if lib.build == 'private':
libs/$(TGTDIR)/lib${lib.name}.a\ libs/$(CONFIG)/lib${lib.name}.a\
% endif % endif
% endfor % endfor
@ -316,7 +323,7 @@ buildtests: buildtests_c buildtests_cxx
buildtests_c: bins_dep_c privatelibs_c\ buildtests_c: bins_dep_c privatelibs_c\
% for tgt in targets: % for tgt in targets:
% if tgt.build == 'test' and not tgt.get('c++', False): % if tgt.build == 'test' and not tgt.get('c++', False):
bins/$(TGTDIR)/${tgt.name}\ bins/$(CONFIG)/${tgt.name}\
% endif % endif
% endfor % endfor
@ -335,7 +342,7 @@ test_c: buildtests_c
% for tgt in targets: % for tgt in targets:
% if tgt.build == 'test' and tgt.get('run', True) and not tgt.get('c++', False): % if tgt.build == 'test' and tgt.get('run', True) and not tgt.get('c++', False):
$(E) "[RUN] Testing ${tgt.name}" $(E) "[RUN] Testing ${tgt.name}"
$(Q) ./bins/$(TGTDIR)/${tgt.name} || ( echo test ${tgt.name} failed ; exit 1 ) $(Q) ./bins/$(CONFIG)/${tgt.name} || ( echo test ${tgt.name} failed ; exit 1 )
% endif % endif
% endfor % endfor
@ -344,7 +351,7 @@ test_cxx: buildtests_cxx
% for tgt in targets: % for tgt in targets:
% if tgt.build == 'test' and tgt.get('run', True) and tgt.get('c++', False): % if tgt.build == 'test' and tgt.get('run', True) and tgt.get('c++', False):
$(E) "[RUN] Testing ${tgt.name}" $(E) "[RUN] Testing ${tgt.name}"
$(Q) ./bins/$(TGTDIR)/${tgt.name} || ( echo test ${tgt.name} failed ; exit 1 ) $(Q) ./bins/$(CONFIG)/${tgt.name} || ( echo test ${tgt.name} failed ; exit 1 )
% endif % endif
% endfor % endfor
@ -352,7 +359,7 @@ test_cxx: buildtests_cxx
tools: privatelibs\ tools: privatelibs\
% for tgt in targets: % for tgt in targets:
% if tgt.build == 'tool': % if tgt.build == 'tool':
bins/$(TGTDIR)/${tgt.name}\ bins/$(CONFIG)/${tgt.name}\
% endif % endif
% endfor % endfor
@ -360,7 +367,7 @@ tools: privatelibs\
protoc_plugins:\ protoc_plugins:\
% for tgt in targets: % for tgt in targets:
% if tgt.build == 'protoc': % if tgt.build == 'protoc':
bins/$(TGTDIR)/${tgt.name}\ bins/$(CONFIG)/${tgt.name}\
% endif % endif
% endfor % endfor
@ -368,7 +375,7 @@ protoc_plugins:\
buildbenchmarks: privatelibs\ buildbenchmarks: privatelibs\
% for tgt in targets: % for tgt in targets:
% if tgt.build == 'benchmark': % if tgt.build == 'benchmark':
bins/$(TGTDIR)/${tgt.name}\ bins/$(CONFIG)/${tgt.name}\
% endif % endif
% endfor % endfor
@ -386,7 +393,7 @@ strip-static_c: static_c
% if not lib.get("c++", False): % if not lib.get("c++", False):
% if lib.build == "all": % if lib.build == "all":
$(E) "[STRIP] Stripping lib${lib.name}.a" $(E) "[STRIP] Stripping lib${lib.name}.a"
$(Q) $(STRIP) libs/$(TGTDIR)/lib${lib.name}.a $(Q) $(STRIP) libs/$(CONFIG)/lib${lib.name}.a
% endif % endif
% endif % endif
% endfor % endfor
@ -396,7 +403,7 @@ strip-static_cxx: static_cxx
% if lib.get("c++", False): % if lib.get("c++", False):
% if lib.build == "all": % if lib.build == "all":
$(E) "[STRIP] Stripping lib${lib.name}.a" $(E) "[STRIP] Stripping lib${lib.name}.a"
$(Q) $(STRIP) libs/$(TGTDIR)/lib${lib.name}.a $(Q) $(STRIP) libs/$(CONFIG)/lib${lib.name}.a
% endif % endif
% endif % endif
% endfor % endfor
@ -406,7 +413,7 @@ strip-shared_c: shared_c
% if not lib.get("c++", False): % if not lib.get("c++", False):
% if lib.build == "all": % if lib.build == "all":
$(E) "[STRIP] Stripping lib${lib.name}.so" $(E) "[STRIP] Stripping lib${lib.name}.so"
$(Q) $(STRIP) libs/$(TGTDIR)/lib${lib.name}.$(SHARED_EXT) $(Q) $(STRIP) libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT)
% endif % endif
% endif % endif
% endfor % endfor
@ -416,49 +423,49 @@ strip-shared_cxx: shared_cxx
% if lib.get("c++", False): % if lib.get("c++", False):
% if lib.build == "all": % if lib.build == "all":
$(E) "[STRIP] Stripping lib${lib.name}.so" $(E) "[STRIP] Stripping lib${lib.name}.so"
$(Q) $(STRIP) libs/$(TGTDIR)/lib${lib.name}.$(SHARED_EXT) $(Q) $(STRIP) libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT)
% endif % endif
% endif % endif
% endfor % endfor
% for p in protos: % for p in protos:
deps/$(TGTDIR)/gens/${p}.pb.dep: deps/$(CONFIG)/gens/${p}.pb.dep:
$(Q) mkdir -p `dirname $@` $(Q) mkdir -p `dirname $@`
$(Q) touch $@ $(Q) touch $@
gens/${p}.pb.cc: ${p}.proto protoc_plugins gens/${p}.pb.cc: ${p}.proto protoc_plugins
$(E) "[PROTOC] Generating protobuf CC file from $<" $(E) "[PROTOC] Generating protobuf CC file from $<"
$(Q) mkdir -p `dirname $@` $(Q) mkdir -p `dirname $@`
$(Q) $(PROTOC) --cpp_out=gens --grpc_out=gens --plugin=protoc-gen-grpc=bins/$(TGTDIR)/cpp_plugin $< $(Q) $(PROTOC) --cpp_out=gens --grpc_out=gens --plugin=protoc-gen-grpc=bins/$(CONFIG)/cpp_plugin $<
% endfor % endfor
deps/$(TGTDIR)/%.dep : %.c deps/$(CONFIG)/%.dep : %.c
$(E) "[DEP] Generating dependencies for $<" $(E) "[DEP] Generating dependencies for $<"
$(Q) mkdir -p `dirname $@` $(Q) mkdir -p `dirname $@`
$(Q) $(CC) $(CFLAGS) $(CPPFLAGS_NO_ARCH) -MG -M $< > $@ $(Q) $(CC) $(CFLAGS) $(CPPFLAGS_NO_ARCH) -MG -M $< > $@
deps/$(TGTDIR)/%.dep : %.cc deps/$(CONFIG)/%.dep : %.cc
$(E) "[DEP] Generating dependencies for $<" $(E) "[DEP] Generating dependencies for $<"
$(Q) mkdir -p `dirname $@` $(Q) mkdir -p `dirname $@`
$(Q) $(CXX) $(CXXFLAGS) $(CPPFLAGS_NO_ARCH) -MG -M $< > $@ $(Q) $(CXX) $(CXXFLAGS) $(CPPFLAGS_NO_ARCH) -MG -M $< > $@
objs/$(TGTDIR)/%.o : %.c objs/$(CONFIG)/%.o : %.c
$(E) "[C] Compiling $<" $(E) "[C] Compiling $<"
$(Q) mkdir -p `dirname $@` $(Q) mkdir -p `dirname $@`
$(Q) $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< $(Q) $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
objs/$(TGTDIR)/%.o : gens/%.pb.cc objs/$(CONFIG)/%.o : gens/%.pb.cc
$(E) "[CXX] Compiling $<" $(E) "[CXX] Compiling $<"
$(Q) mkdir -p `dirname $@` $(Q) mkdir -p `dirname $@`
$(Q) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $< $(Q) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $<
objs/$(TGTDIR)/src/compiler/%.o : src/compiler/%.cc objs/$(CONFIG)/src/compiler/%.o : src/compiler/%.cc
$(E) "[HOSTCXX] Compiling $<" $(E) "[HOSTCXX] Compiling $<"
$(Q) mkdir -p `dirname $@` $(Q) mkdir -p `dirname $@`
$(Q) $(HOST_CXX) $(HOST_CXXFLAGS) $(HOST_CPPFLAGS) -c -o $@ $< $(Q) $(HOST_CXX) $(HOST_CXXFLAGS) $(HOST_CPPFLAGS) -c -o $@ $<
objs/$(TGTDIR)/%.o : %.cc objs/$(CONFIG)/%.o : %.cc
$(E) "[CXX] Compiling $<" $(E) "[CXX] Compiling $<"
$(Q) mkdir -p `dirname $@` $(Q) mkdir -p `dirname $@`
$(Q) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $< $(Q) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $<
@ -520,7 +527,7 @@ install-static_c: static_c strip-static_c
% if not lib.get("c++", False): % if not lib.get("c++", False):
% if lib.build == "all": % if lib.build == "all":
$(E) "[INSTALL] Installing lib${lib.name}.a" $(E) "[INSTALL] Installing lib${lib.name}.a"
$(Q) $(INSTALL) libs/$(TGTDIR)/lib${lib.name}.a $(prefix)/lib/lib${lib.name}.a $(Q) $(INSTALL) libs/$(CONFIG)/lib${lib.name}.a $(prefix)/lib/lib${lib.name}.a
% endif % endif
% endif % endif
% endfor % endfor
@ -530,7 +537,7 @@ install-static_cxx: static_cxx strip-static_cxx
% if lib.get("c++", False): % if lib.get("c++", False):
% if lib.build == "all": % if lib.build == "all":
$(E) "[INSTALL] Installing lib${lib.name}.a" $(E) "[INSTALL] Installing lib${lib.name}.a"
$(Q) $(INSTALL) libs/$(TGTDIR)/lib${lib.name}.a $(prefix)/lib/lib${lib.name}.a $(Q) $(INSTALL) libs/$(CONFIG)/lib${lib.name}.a $(prefix)/lib/lib${lib.name}.a
% endif % endif
% endif % endif
% endfor % endfor
@ -541,11 +548,11 @@ install-shared_c: shared_c strip-shared_c
% if lib.build == "all": % if lib.build == "all":
ifeq ($(SYSTEM),MINGW32) ifeq ($(SYSTEM),MINGW32)
$(E) "[INSTALL] Installing ${lib.name}.$(SHARED_EXT)" $(E) "[INSTALL] Installing ${lib.name}.$(SHARED_EXT)"
$(Q) $(INSTALL) libs/$(TGTDIR)/${lib.name}.$(SHARED_EXT) $(prefix)/lib/${lib.name}.$(SHARED_EXT) $(Q) $(INSTALL) libs/$(CONFIG)/${lib.name}.$(SHARED_EXT) $(prefix)/lib/${lib.name}.$(SHARED_EXT)
$(Q) $(INSTALL) libs/$(TGTDIR)/lib${lib.name}-imp.a $(prefix)/lib/lib${lib.name}-imp.a $(Q) $(INSTALL) libs/$(CONFIG)/lib${lib.name}-imp.a $(prefix)/lib/lib${lib.name}-imp.a
else else
$(E) "[INSTALL] Installing lib${lib.name}.$(SHARED_EXT)" $(E) "[INSTALL] Installing lib${lib.name}.$(SHARED_EXT)"
$(Q) $(INSTALL) libs/$(TGTDIR)/lib${lib.name}.$(SHARED_EXT) $(prefix)/lib/lib${lib.name}.$(SHARED_EXT) $(Q) $(INSTALL) libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT) $(prefix)/lib/lib${lib.name}.$(SHARED_EXT)
ifneq ($(SYSTEM),Darwin) ifneq ($(SYSTEM),Darwin)
$(Q) ln -sf lib${lib.name}.$(SHARED_EXT) $(prefix)/lib/lib${lib.name}.so $(Q) ln -sf lib${lib.name}.$(SHARED_EXT) $(prefix)/lib/lib${lib.name}.so
endif endif
@ -565,11 +572,11 @@ install-shared_cxx: shared_cxx strip-shared_cxx
% if lib.build == "all": % if lib.build == "all":
ifeq ($(SYSTEM),MINGW32) ifeq ($(SYSTEM),MINGW32)
$(E) "[INSTALL] Installing ${lib.name}.$(SHARED_EXT)" $(E) "[INSTALL] Installing ${lib.name}.$(SHARED_EXT)"
$(Q) $(INSTALL) libs/$(TGTDIR)/${lib.name}.$(SHARED_EXT) $(prefix)/lib/${lib.name}.$(SHARED_EXT) $(Q) $(INSTALL) libs/$(CONFIG)/${lib.name}.$(SHARED_EXT) $(prefix)/lib/${lib.name}.$(SHARED_EXT)
$(Q) $(INSTALL) libs/$(TGTDIR)/lib${lib.name}-imp.a $(prefix)/lib/lib${lib.name}-imp.a $(Q) $(INSTALL) libs/$(CONFIG)/lib${lib.name}-imp.a $(prefix)/lib/lib${lib.name}-imp.a
else else
$(E) "[INSTALL] Installing lib${lib.name}.$(SHARED_EXT)" $(E) "[INSTALL] Installing lib${lib.name}.$(SHARED_EXT)"
$(Q) $(INSTALL) libs/$(TGTDIR)/lib${lib.name}.$(SHARED_EXT) $(prefix)/lib/lib${lib.name}.$(SHARED_EXT) $(Q) $(INSTALL) libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT) $(prefix)/lib/lib${lib.name}.$(SHARED_EXT)
ifneq ($(SYSTEM),Darwin) ifneq ($(SYSTEM),Darwin)
$(Q) ln -sf lib${lib.name}.$(SHARED_EXT) $(prefix)/lib/lib${lib.name}.so $(Q) ln -sf lib${lib.name}.$(SHARED_EXT) $(prefix)/lib/lib${lib.name}.so
endif endif
@ -629,38 +636,38 @@ PUBLIC_HEADERS_C += \\
% endfor % endfor
% endif % endif
LIB${lib.name.upper()}_OBJS = $(addprefix objs/$(TGTDIR)/, $(addsuffix .o, $(basename $(LIB${lib.name.upper()}_SRC)))) LIB${lib.name.upper()}_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(LIB${lib.name.upper()}_SRC))))
LIB${lib.name.upper()}_DEPS = $(addprefix deps/$(TGTDIR)/, $(addsuffix .dep, $(basename $(LIB${lib.name.upper()}_SRC)))) LIB${lib.name.upper()}_DEPS = $(addprefix deps/$(CONFIG)/, $(addsuffix .dep, $(basename $(LIB${lib.name.upper()}_SRC))))
% if lib.get('secure', True): % if lib.get('secure', True):
ifeq ($(NO_SECURE),true) ifeq ($(NO_SECURE),true)
libs/$(TGTDIR)/lib${lib.name}.a: openssl_dep_error libs/$(CONFIG)/lib${lib.name}.a: openssl_dep_error
% if lib.build == "all": % if lib.build == "all":
ifeq ($(SYSTEM),MINGW32) ifeq ($(SYSTEM),MINGW32)
libs/$(TGTDIR)/${lib.name}.$(SHARED_EXT): openssl_dep_error libs/$(CONFIG)/${lib.name}.$(SHARED_EXT): openssl_dep_error
else else
libs/$(TGTDIR)/lib${lib.name}.$(SHARED_EXT): openssl_dep_error libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT): openssl_dep_error
endif endif
% endif % endif
else else
libs/$(TGTDIR)/lib${lib.name}.a: $(OPENSSL_DEP) $(LIB${lib.name.upper()}_OBJS) libs/$(CONFIG)/lib${lib.name}.a: $(OPENSSL_DEP) $(LIB${lib.name.upper()}_OBJS)
% else: % else:
libs/$(TGTDIR)/lib${lib.name}.a: $(LIB${lib.name.upper()}_OBJS) libs/$(CONFIG)/lib${lib.name}.a: $(LIB${lib.name.upper()}_OBJS)
% endif % endif
$(E) "[AR] Creating $@" $(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@` $(Q) mkdir -p `dirname $@`
$(Q) $(AR) rcs libs/$(TGTDIR)/lib${lib.name}.a $(LIB${lib.name.upper()}_OBJS) $(Q) $(AR) rcs libs/$(CONFIG)/lib${lib.name}.a $(LIB${lib.name.upper()}_OBJS)
% if lib.get('baselib', False): % if lib.get('baselib', False):
% if lib.get('secure', True): % if lib.get('secure', True):
$(Q) mkdir tmp-merge $(Q) mkdir tmp-merge
$(Q) ( cd tmp-merge ; $(AR) x ../libs/$(TGTDIR)/lib${lib.name}.a ) $(Q) ( cd tmp-merge ; $(AR) x ../libs/$(CONFIG)/lib${lib.name}.a )
$(Q) for l in $(OPENSSL_MERGE_LIBS) ; do ( cd tmp-merge ; <%text>ar x ../$${l}</%text> ) ; done $(Q) for l in $(OPENSSL_MERGE_LIBS) ; do ( cd tmp-merge ; <%text>ar x ../$${l}</%text> ) ; done
$(Q) rm -f libs/$(TGTDIR)/lib${lib.name}.a tmp-merge/__.SYMDEF* $(Q) rm -f libs/$(CONFIG)/lib${lib.name}.a tmp-merge/__.SYMDEF*
$(Q) ar rcs libs/$(TGTDIR)/lib${lib.name}.a tmp-merge/* $(Q) ar rcs libs/$(CONFIG)/lib${lib.name}.a tmp-merge/*
$(Q) rm -rf tmp-merge $(Q) rm -rf tmp-merge
% endif % endif
% endif % endif
@ -671,8 +678,8 @@ libs/$(TGTDIR)/lib${lib.name}.a: $(LIB${lib.name.upper()}_OBJS)
else: else:
ld = '$(LD)' ld = '$(LD)'
out_base = 'libs/$(TGTDIR)/' + lib.name out_base = 'libs/$(CONFIG)/' + lib.name
out_libbase = 'libs/$(TGTDIR)/lib' + lib.name out_libbase = 'libs/$(CONFIG)/lib' + lib.name
common = '$(LIB' + lib.name.upper() + '_OBJS) $(LDLIBS)' common = '$(LIB' + lib.name.upper() + '_OBJS) $(LDLIBS)'
@ -682,9 +689,9 @@ libs/$(TGTDIR)/lib${lib.name}.a: $(LIB${lib.name.upper()}_OBJS)
mingw_lib_deps = '' mingw_lib_deps = ''
for dep in lib.get('deps', []): for dep in lib.get('deps', []):
libs = libs + ' -l' + dep libs = libs + ' -l' + dep
lib_deps = lib_deps + 'libs/$(TGTDIR)/lib' + dep + '.$(SHARED_EXT)' lib_deps = lib_deps + 'libs/$(CONFIG)/lib' + dep + '.$(SHARED_EXT)'
mingw_libs = mingw_libs + ' -l' + dep + '-imp' mingw_libs = mingw_libs + ' -l' + dep + '-imp'
mingw_lib_deps = mingw_lib_deps + 'libs/$(TGTDIR)/' + dep + '.$(SHARED_EXT)' mingw_lib_deps = mingw_lib_deps + 'libs/$(CONFIG)/' + dep + '.$(SHARED_EXT)'
if lib.get('secure', True): if lib.get('secure', True):
common = common + ' $(LDLIBS_SECURE) $(OPENSSL_MERGE_LIBS)' common = common + ' $(LDLIBS_SECURE) $(OPENSSL_MERGE_LIBS)'
@ -698,15 +705,15 @@ ifeq ($(SYSTEM),MINGW32)
${out_base}.$(SHARED_EXT): $(LIB${lib.name.upper()}_OBJS) ${mingw_lib_deps} ${out_base}.$(SHARED_EXT): $(LIB${lib.name.upper()}_OBJS) ${mingw_lib_deps}
$(E) "[LD] Linking $@" $(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@` $(Q) mkdir -p `dirname $@`
$(Q) ${ld} $(LDFLAGS) -Llibs/$(TGTDIR) -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) -Llibs/$(CONFIG) -shared -Wl,--output-def=${out_base}.def -Wl,--out-implib=${out_libbase}-imp.a -o ${out_base}.$(SHARED_EXT) ${common}${mingw_libs}
else else
${out_libbase}.$(SHARED_EXT): $(LIB${lib.name.upper()}_OBJS) ${lib_deps} ${out_libbase}.$(SHARED_EXT): $(LIB${lib.name.upper()}_OBJS) ${lib_deps}
$(E) "[LD] Linking $@" $(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@` $(Q) mkdir -p `dirname $@`
ifeq ($(SYSTEM),Darwin) ifeq ($(SYSTEM),Darwin)
$(Q) ${ld} $(LDFLAGS) -Llibs/$(TGTDIR) -dynamiclib -o ${out_libbase}.$(SHARED_EXT) ${common}${libs} $(Q) ${ld} $(LDFLAGS) -Llibs/$(CONFIG) -dynamiclib -o ${out_libbase}.$(SHARED_EXT) ${common}${libs}
else else
$(Q) ${ld} $(LDFLAGS) -Llibs/$(TGTDIR) -shared -Wl,-soname,lib${lib.name}.so.${settings.version.major} -o ${out_libbase}.$(SHARED_EXT) ${common}${libs} $(Q) ${ld} $(LDFLAGS) -Llibs/$(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 $(Q) ln -sf lib${lib.name}.$(SHARED_EXT) ${out_libbase}.so
endif endif
endif endif
@ -733,8 +740,8 @@ clean_lib${lib.name}:
$(E) "[CLEAN] Cleaning lib${lib.name} files" $(E) "[CLEAN] Cleaning lib${lib.name} files"
$(Q) $(RM) $(LIB${lib.name.upper()}_OBJS) $(Q) $(RM) $(LIB${lib.name.upper()}_OBJS)
$(Q) $(RM) $(LIB${lib.name.upper()}_DEPS) $(Q) $(RM) $(LIB${lib.name.upper()}_DEPS)
$(Q) $(RM) libs/$(TGTDIR)/lib${lib.name}.a $(Q) $(RM) libs/$(CONFIG)/lib${lib.name}.a
$(Q) $(RM) libs/$(TGTDIR)/lib${lib.name}.$(SHARED_EXT) $(Q) $(RM) libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT)
</%def> </%def>
<%def name="maketarget(tgt)"> <%def name="maketarget(tgt)">
@ -745,20 +752,20 @@ ${tgt.name.upper()}_SRC = \\
% endfor % endfor
${tgt.name.upper()}_OBJS = $(addprefix objs/$(TGTDIR)/, $(addsuffix .o, $(basename $(${tgt.name.upper()}_SRC)))) ${tgt.name.upper()}_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(${tgt.name.upper()}_SRC))))
${tgt.name.upper()}_DEPS = $(addprefix deps/$(TGTDIR)/, $(addsuffix .dep, $(basename $(${tgt.name.upper()}_SRC)))) ${tgt.name.upper()}_DEPS = $(addprefix deps/$(CONFIG)/, $(addsuffix .dep, $(basename $(${tgt.name.upper()}_SRC))))
% if tgt.get('secure', True): % if tgt.get('secure', True):
ifeq ($(NO_SECURE),true) ifeq ($(NO_SECURE),true)
bins/$(TGTDIR)/${tgt.name}: openssl_dep_error bins/$(CONFIG)/${tgt.name}: openssl_dep_error
else else
% endif % endif
bins/$(TGTDIR)/${tgt.name}: $(${tgt.name.upper()}_OBJS)\ bins/$(CONFIG)/${tgt.name}: $(${tgt.name.upper()}_OBJS)\
% for dep in tgt.deps: % for dep in tgt.deps:
libs/$(TGTDIR)/lib${dep}.a\ libs/$(CONFIG)/lib${dep}.a\
% endfor % endfor
% if tgt.get("c++", False): % if tgt.get("c++", False):
@ -780,7 +787,7 @@ bins/$(TGTDIR)/${tgt.name}: $(${tgt.name.upper()}_OBJS)\
$(Q) $(LD) $(LDFLAGS) $(${tgt.name.upper()}_OBJS)\ $(Q) $(LD) $(LDFLAGS) $(${tgt.name.upper()}_OBJS)\
% endif % endif
% for dep in tgt.deps: % for dep in tgt.deps:
libs/$(TGTDIR)/lib${dep}.a\ libs/$(CONFIG)/lib${dep}.a\
% endfor % endfor
% if tgt.get("c++", False): % if tgt.get("c++", False):
% if tgt.build == 'protoc': % if tgt.build == 'protoc':
@ -799,7 +806,7 @@ bins/$(TGTDIR)/${tgt.name}: $(${tgt.name.upper()}_OBJS)\
% elif tgt.get('secure', True): % elif tgt.get('secure', True):
$(LDLIBS_SECURE)\ $(LDLIBS_SECURE)\
% endif % endif
-o bins/$(TGTDIR)/${tgt.name} -o bins/$(CONFIG)/${tgt.name}
% if tgt.get('secure', True): % if tgt.get('secure', True):
endif endif
@ -821,7 +828,7 @@ clean_${tgt.name}:
$(E) "[CLEAN] Cleaning ${tgt.name} files" $(E) "[CLEAN] Cleaning ${tgt.name} files"
$(Q) $(RM) $(${tgt.name.upper()}_OBJS) $(Q) $(RM) $(${tgt.name.upper()}_OBJS)
$(Q) $(RM) $(${tgt.name.upper()}_DEPS) $(Q) $(RM) $(${tgt.name.upper()}_DEPS)
$(Q) $(RM) bins/$(TGTDIR)/${tgt.name} $(Q) $(RM) bins/$(CONFIG)/${tgt.name}
</%def> </%def>
.PHONY: all strip tools \ .PHONY: all strip tools \

Loading…
Cancel
Save