@@ -45,8 +45,8 @@ function includeDir()
4545 return abspath (Sys. BINDIR, Base. INCLUDEDIR, " julia" )
4646end
4747
48- function ldflags (doframework )
49- doframework && return " -F$(shell_escape (frameworkDir ())) "
48+ function ldflags (; framework :: Bool = false )
49+ framework && return " -F$(shell_escape (frameworkDir ())) "
5050 fl = " -L$(shell_escape (libDir ())) "
5151 if Sys. iswindows ()
5252 fl = fl * " -Wl,--stack,8388608"
@@ -56,27 +56,40 @@ function ldflags(doframework)
5656 return fl
5757end
5858
59- function ldlibs (doframework)
59+ function ldrpath ()
60+ libname = if Base. isdebugbuild ()
61+ " julia-debug"
62+ else
63+ " julia"
64+ end
65+ return " -Wl,-rpath,$(shell_escape (private_libDir ())) -Wl,-rpath,$(shell_escape (libDir ())) -l$libname "
66+ end
67+
68+ function ldlibs (; framework:: Bool = false , rpath:: Bool = true )
6069 # Return "Julia" for the framework even if this is a debug build.
6170 # If the user wants the debug framework, DYLD_IMAGE_SUFFIX=_debug
6271 # should be used (refer to man 1 dyld).
63- doframework && return " -framework $(Base. DARWIN_FRAMEWORK_NAME) "
72+ framework && return " -framework $(Base. DARWIN_FRAMEWORK_NAME) "
6473 libname = if Base. isdebugbuild ()
6574 " julia-debug"
6675 else
6776 " julia"
6877 end
6978 if Sys. isunix ()
70- return " -L$(shell_escape (private_libDir ())) -Wl,-rpath,$(shell_escape (libDir ())) -Wl,-rpath,$(shell_escape (private_libDir ())) -l$libname "
79+ if rpath
80+ return " -L$(shell_escape (private_libDir ())) $(ldrpath ()) "
81+ else
82+ return " -L$(shell_escape (private_libDir ())) "
83+ end
7184 else
7285 return " -l$libname -lopenlibm"
7386 end
7487end
7588
76- function cflags (doframework )
89+ function cflags (; framework :: Bool = false )
7790 flags = IOBuffer ()
7891 print (flags, " -std=gnu11" )
79- if doframework
92+ if framework
8093 include = shell_escape (frameworkDir ())
8194 print (flags, " -F" , include)
8295 else
@@ -89,8 +102,8 @@ function cflags(doframework)
89102 return String (take! (flags))
90103end
91104
92- function allflags (doframework )
93- return " $(cflags (doframework )) $(ldflags (doframework )) $(ldlibs (doframework )) "
105+ function allflags (; framework :: Bool = false , rpath :: Bool = true )
106+ return " $(cflags (; framework )) $(ldflags (; framework )) $(ldlibs (; framework, rpath )) "
94107end
95108
96109function check_args (args)
@@ -102,31 +115,29 @@ function check_args(args)
102115end
103116
104117function check_framework_flag (args)
105- doframework = " --framework" in args
106- if doframework && ! Base. DARWIN_FRAMEWORK
118+ framework = " --framework" in args
119+ if framework && ! Base. DARWIN_FRAMEWORK
107120 println (stderr , " NOTICE: Ignoring --framework because Julia is not packaged as a framework." )
108121 return false
109- elseif ! doframework && Base. DARWIN_FRAMEWORK
122+ elseif ! framework && Base. DARWIN_FRAMEWORK
110123 println (stderr , " NOTICE: Consider using --framework because Julia is packaged as a framework." )
111124 return false
112125 end
113- return doframework
126+ return framework
114127end
115128
116- function main ( )
117- check_args (ARGS )
118- doframework = check_framework_flag (ARGS )
119- for args in ARGS
129+ function ( @ main)(args )
130+ check_args (args )
131+ framework = check_framework_flag (args )
132+ for args in args
120133 if args == " --ldflags"
121- println (ldflags (doframework ))
134+ println (ldflags (; framework ))
122135 elseif args == " --cflags"
123- println (cflags (doframework ))
136+ println (cflags (; framework ))
124137 elseif args == " --ldlibs"
125- println (ldlibs (doframework ))
138+ println (ldlibs (; framework ))
126139 elseif args == " --allflags"
127- println (allflags (doframework ))
140+ println (allflags (; framework ))
128141 end
129142 end
130143end
131-
132- main ()
0 commit comments