@ -99,7 +99,6 @@ LDFLAGS += -g -pthread -fPIC
INCLUDES = . include gens
LIBS = rt m z event event_pthreads pthread
LIBSXX = protobuf
LIBS_SECURE = ssl crypto dl
LIBS_PROTOC = protoc protobuf
i f n e q ( $( wildcard /usr /src /gtest /src /gtest -all .cc ) , )
@ -124,7 +123,6 @@ CPPFLAGS += $(CPPFLAGS_NO_ARCH) $(ARCH_FLAGS)
LDFLAGS += $( ARCH_FLAGS)
LDLIBS += $( addprefix -l, $( LIBS) )
LDLIBSXX += $( addprefix -l, $( LIBSXX) )
LDLIBS_SECURE += $( addprefix -l, $( LIBS_SECURE) )
HOST_LDLIBS_PROTOC += $( addprefix -l, $( LIBS_PROTOC) )
HOST_CPPFLAGS = $( CPPFLAGS)
@ -142,6 +140,16 @@ ifeq ($(SYSTEM),)
SYSTEM = $( HOST_SYSTEM)
e n d i f
i f e q ( $( SYSTEM ) , M I N G W 3 2 )
SHARED_EXT = dll
e n d i f
i f e q ( $( SYSTEM ) , D a r w i n )
SHARED_EXT = dylib
e n d i f
i f e q ( $( SHARED_EXT ) , )
SHARED_EXT = so.$( VERSION)
e n d i f
i f e q ( $( wildcard .git ) , )
IS_GIT_FOLDER = false
e l s e
@ -196,11 +204,16 @@ OPENSSL_DEP = third_party/openssl/libssl.a
OPENSSL_MERGE_LIBS += third_party/openssl/libssl.a third_party/openssl/libcrypto.a
CPPFLAGS += -Ithird_party/openssl/include
LDFLAGS += -Lthird_party/openssl
LIBS_SECURE = dl
e l s e
NO_SECURE = true
e n d i f
e l s e
LIBS_SECURE = ssl crypto dl
e n d i f
LDLIBS_SECURE += $( addprefix -l, $( LIBS_SECURE) )
i f n e q ( $( DEP_MISSING ) , )
NO_DEPS = true
e n d i f
@ -310,7 +323,7 @@ shared: shared_c shared_cxx
shared_c : dep_c \
% for lib in libs :
% if lib.build == 'all' and not lib.get('c++', False) :
libs/$( TGTDIR) /lib${ lib .name } .so.$( VERSION ) \
libs/$( TGTDIR) /lib${ lib .name } .$( SHARED_EXT) \
% e n d i f
% e n d f o r
@ -318,7 +331,7 @@ shared_c: dep_c\
shared_cxx : dep_cxx \
% for lib in libs :
% if lib.build == 'all' and lib.get('c++', False) :
libs/$( TGTDIR) /lib${ lib .name } .so.$( VERSION ) \
libs/$( TGTDIR) /lib${ lib .name } .$( SHARED_EXT) \
% e n d i f
% e n d f o r
@ -436,7 +449,7 @@ strip-shared_c: shared_c
% if not lib.get("c++", False) :
% if lib.build == "all" :
$( E) " [STRIP] Stripping lib ${ lib .name } .so "
$( Q) $( STRIP) libs/$( TGTDIR) /lib${ lib .name } .so.$( VERSION )
$( Q) $( STRIP) libs/$( TGTDIR) /lib${ lib .name } .$( SHARED_EXT)
% e n d i f
% e n d i f
% e n d f o r
@ -446,7 +459,7 @@ strip-shared_cxx: shared_cxx
% if lib.get("c++", False) :
% if lib.build == "all" :
$( E) " [STRIP] Stripping lib ${ lib .name } .so "
$( Q) $( STRIP) libs/$( TGTDIR) /lib${ lib .name } .so.$( VERSION )
$( Q) $( STRIP) libs/$( TGTDIR) /lib${ lib .name } .$( SHARED_EXT)
% e n d i f
% e n d i f
% e n d f o r
@ -569,21 +582,49 @@ install-shared_c: shared_c strip-shared_c
% for lib in libs :
% if not lib.get("c++", False) :
% if lib.build == "all" :
$( E) " [INSTALL] Installing lib ${ lib .name } .so "
$( Q) $( INSTALL) libs/$( TGTDIR) /lib${ lib .name } .so.$( VERSION) $( prefix) /lib/lib${ lib .name } .so.$( VERSION)
i f e q ( $( SYSTEM ) , M I N G W 3 2 )
$( E) " [INSTALL] Installing ${ lib .name } . $( SHARED_EXT) "
$( Q) $( INSTALL) libs/$( TGTDIR) /${ 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
e l s e
$( E) " [INSTALL] Installing lib ${ lib .name } . $( SHARED_EXT) "
$( Q) $( INSTALL) libs/$( TGTDIR) /lib${ lib .name } .$( SHARED_EXT) $( prefix) /lib/lib${ lib .name } .$( SHARED_EXT)
i f n e q ( $( SYSTEM ) , D a r w i n )
$( Q) ln -sf lib${ lib .name } .$( SHARED_EXT) $( prefix) /lib/lib${ lib .name } .so
e n d i f
e n d i f
% e n d i f
% e n d i f
% e n d f o r
i f n e q ( $( SYSTEM ) , M I N G W 3 2 )
i f n e q ( $( SYSTEM ) , D a r w i n )
$( Q) ldconfig
e n d i f
e n d i f
install-shared_cxx : shared_cxx strip -shared_cxx
% for lib in libs :
% if lib.get("c++", False) :
% if lib.build == "all" :
$( E) " [INSTALL] Installing lib ${ lib .name } .so "
$( Q) $( INSTALL) libs/$( TGTDIR) /lib${ lib .name } .so.$( VERSION) $( prefix) /lib/lib${ lib .name } .so.$( VERSION)
i f e q ( $( SYSTEM ) , M I N G W 3 2 )
$( E) " [INSTALL] Installing ${ lib .name } . $( SHARED_EXT) "
$( Q) $( INSTALL) libs/$( TGTDIR) /${ 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
e l s e
$( E) " [INSTALL] Installing lib ${ lib .name } . $( SHARED_EXT) "
$( Q) $( INSTALL) libs/$( TGTDIR) /lib${ lib .name } .$( SHARED_EXT) $( prefix) /lib/lib${ lib .name } .$( SHARED_EXT)
i f n e q ( $( SYSTEM ) , D a r w i n )
$( Q) ln -sf lib${ lib .name } .$( SHARED_EXT) $( prefix) /lib/lib${ lib .name } .so
e n d i f
e n d i f
% e n d i f
% e n d i f
% e n d f o r
i f n e q ( $( SYSTEM ) , M I N G W 3 2 )
i f n e q ( $( SYSTEM ) , D a r w i n )
$( Q) ldconfig
e n d i f
e n d i f
clean : \
% for lib in libs :
@ -639,6 +680,14 @@ ifeq ($(NO_SECURE),true)
libs/$(TGTDIR)/lib${lib.name}.a : openssl_dep_error
% if lib.build == "all" :
i f e q ( $( SYSTEM ) , M I N G W 3 2 )
libs/$(TGTDIR)/${lib.name}.$(SHARED_EXT) : openssl_dep_error
e l s e
libs/$(TGTDIR)/lib${lib.name}.$(SHARED_EXT) : openssl_dep_error
e n d i f
% e n d i f
e l s e
libs/$(TGTDIR)/lib${lib.name}.a : $( OPENSSL_DEP ) $( LIB $ {lib .name .upper ( ) }_OBJS )
@ -659,19 +708,51 @@ libs/$(TGTDIR)/lib${lib.name}.a: $(LIB${lib.name.upper()}_OBJS)
% e n d i f
% e n d i f
< %
if lib.get( 'c++' , False) :
ld = '$(LDXX)'
else :
ld = '$(LD)'
out_base = 'libs/$(TGTDIR)/' + lib.name
out_libbase = 'libs/$(TGTDIR)/lib' + lib.name
common = '$(LIB' + lib.name.upper( ) + '_OBJS) $(LDLIBS)'
libs = ''
lib_deps = ''
mingw_libs = ''
mingw_lib_deps = ''
for dep in lib.get( 'deps' , [ ] ) :
libs = libs + ' -l' + dep
lib_deps = lib_deps + 'libs/$(TGTDIR)/lib' + dep + '.$(SHARED_EXT)'
mingw_libs = mingw_libs + ' -l' + dep + '-imp'
mingw_lib_deps = mingw_lib_deps + 'libs/$(TGTDIR)/' + dep + '.$(SHARED_EXT)'
if lib.get( 'secure' , True) :
common = common + ' $(LDLIBS_SECURE) $(OPENSSL_MERGE_LIBS)'
lib_deps = lib_deps + ' $(OPENSSL_DEP)'
mingw_lib_deps = mingw_lib_deps + ' $(OPENSSL_DEP)'
% >
% if lib.build == "all" :
libs/$(TGTDIR)/lib${lib.name}.so.$(VERSION) : $( LIB $ {lib .name .upper ( ) }_OBJS )
i f e q ( $( SYSTEM ) , M I N G W 3 2 )
${out_base}.$(SHARED_EXT) : $( LIB $ {lib .name .upper ( ) }_OBJS ) ${mingw_lib_deps }
$( E) " [LD] Linking $@ "
$( Q) mkdir -p ` dirname $@ `
% if lib.get('c++', False) :
$( Q) $( LDXX) $( LDFLAGS) -shared -Wl,-soname,lib${ lib .name } .so.${ settings .version.major } \
% else :
$( Q) $( LD) $( LDFLAGS) -shared -Wl,-soname,lib${ lib .name } .so.${ settings .version.major } \
% e n d i f
- o l i b s / $( TGTDIR ) / l i b $ { l i b . n a m e } . s o . $( VERSION ) $( LIB $ {lib .name .upper ( ) }_OBJS ) $( LDLIBS ) \
% if lib.get('secure', True) :
$( LDLIBS_SECURE) \
% e n d i f
$( 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 }
e l s e
${out_libbase}.$(SHARED_EXT) : $( LIB $ {lib .name .upper ( ) }_OBJS ) ${lib_deps }
$( E) " [LD] Linking $@ "
$( Q) mkdir -p ` dirname $@ `
i f e q ( $( SYSTEM ) , D a r w i n )
$( Q) ${ ld } $( LDFLAGS) -Llibs/$( TGTDIR) -dynamiclib -o ${ out_libbase } .$( SHARED_EXT) ${ common } ${ libs }
e l s e
$( Q) ${ ld } $( LDFLAGS) -Llibs/$( TGTDIR) -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
e n d i f
e n d i f
% e n d i f
% if lib.get('secure', True) :
@ -696,7 +777,7 @@ clean_lib${lib.name}:
$( Q) $( RM) $( LIB${ lib .name.upper() } _OBJS)
$( Q) $( RM) $( LIB${ lib .name.upper() } _DEPS)
$( Q) $( RM) libs/$( TGTDIR) /lib${ lib .name } .a
$( Q) $( RM) libs/$( TGTDIR) /lib${ lib .name } .so.$( VERSION )
$( Q) $( RM) libs/$( TGTDIR) /lib${ lib .name } .$( SHARED_EXT)
< / % d e f >
< % d e f name = "maketarget(tgt)" >
@ -736,14 +817,13 @@ bins/$(TGTDIR)/${tgt.name}: $(${tgt.name.upper()}_OBJS)\
% if tgt.build == 'test' :
$( GTEST_LIB) \
% e n d i f
-Llibs/$( TGTDIR) \
% else :
$( E) " [LD] Linking $@ "
$( Q) mkdir -p ` dirname $@ `
$( Q) $( LD) $( LDFLAGS) $( ${ tgt .name.upper() } _OBJS) -Llibs/$( TGTDIR) \
$( Q) $( LD) $( LDFLAGS) $( ${ tgt .name.upper() } _OBJS) \
% e n d i f
% for dep in tgt.deps :
- l${ dep } \
libs/$( TGTDIR) /lib ${ dep } .a \
% e n d f o r
% if tgt.get("c++", False) :
% if tgt.build == 'protoc' :