configure: generate a fully statically linked exec
Allow to create an executable with no external dynamic libraries, also the ones from the system. This is somewhat dependent of the used C lib, for example glibc has some internal dynamic libraries loaded by itself, but for other ones like eglibc or dietlib, this would produce a true static linked executable. This can be of interest for embebers or resource constraints platforms, but the main reason for this is to allow to use a Javascript file as Linux kernel 'init' on NodeOS. Reviewed-By: Fedor Indutny <fedor@indutny.com>
This commit is contained in:
parent
90d1147b8b
commit
cdc01faed2
15
configure
vendored
15
configure
vendored
@ -54,6 +54,12 @@ parser.add_option('--no-ifaddrs',
|
|||||||
dest='no_ifaddrs',
|
dest='no_ifaddrs',
|
||||||
help='use on deprecated SunOS systems that do not support ifaddrs.h')
|
help='use on deprecated SunOS systems that do not support ifaddrs.h')
|
||||||
|
|
||||||
|
parser.add_option("--fully-static",
|
||||||
|
action="store_true",
|
||||||
|
dest="fully_static",
|
||||||
|
help="Generate an executable without external dynamic libraries. This "
|
||||||
|
"will not work on OSX when using default compilation environment")
|
||||||
|
|
||||||
# deprecated
|
# deprecated
|
||||||
parser.add_option('--openssl-includes',
|
parser.add_option('--openssl-includes',
|
||||||
action='store',
|
action='store',
|
||||||
@ -650,6 +656,14 @@ def configure_openssl(o):
|
|||||||
o['cflags'] += cflags.split()
|
o['cflags'] += cflags.split()
|
||||||
|
|
||||||
|
|
||||||
|
def configure_fullystatic(o):
|
||||||
|
if options.fully_static:
|
||||||
|
o['libraries'] += ['-static']
|
||||||
|
if flavor == 'mac':
|
||||||
|
print("Generation of static executable will not work on OSX "
|
||||||
|
"when using default compilation environment")
|
||||||
|
|
||||||
|
|
||||||
def configure_winsdk(o):
|
def configure_winsdk(o):
|
||||||
if flavor != 'win':
|
if flavor != 'win':
|
||||||
return
|
return
|
||||||
@ -697,6 +711,7 @@ configure_v8(output)
|
|||||||
configure_openssl(output)
|
configure_openssl(output)
|
||||||
configure_winsdk(output)
|
configure_winsdk(output)
|
||||||
configure_icu(output)
|
configure_icu(output)
|
||||||
|
configure_fullystatic(output)
|
||||||
|
|
||||||
# variables should be a root level element,
|
# variables should be a root level element,
|
||||||
# move everything else to target_defaults
|
# move everything else to target_defaults
|
||||||
|
Loading…
x
Reference in New Issue
Block a user