Added support for building on FreeBSD.
[luabind.git] / Jamroot
blob3c834d56e8855fc3a51fb72db8b6c3a0152a851e
1 import os ;
2 import errors ;
4 BOOST_ROOT = [ os.environ BOOST_ROOT ] ;
6 rule debug-message ( txt * )
8     if --debug-build in [ modules.peek : ARGV ]
9     {
10         echo [luabind DEBUG] $(txt) ;
11     }
14 debug-message figuring out which libraries to link to... ;
15 debug-message os.name is [ os.name ] ;
17 if [ os.name ] = NT
19     if ! $(BOOST_ROOT)
20     {
21         errors.user-error "*** BOOST_ROOT must be set to a Boost installation." ;
22     }
24     LUA_PATH = [ os.environ LUA_PATH ] ;
26     if ! $(LUA_PATH)
27     {
28         errors.user-error "*** LUA_PATH must be set." ;
29     }
31     local includes = [ GLOB $(LUA_PATH)/include $(LUA_PATH)/src : lua.h ] ;
33     if ! $(includes)
34     {
35         errors.user-error "*** Unable to determine Lua include directory." ;
36     }
38     includes = $(includes:D) ;
40     debug-message found include directory in $(includes) ;
42     if [ GLOB $(LUA_PATH) : lib ]
43     {
44         lib lua : : <link>static <name>lua5.1 <search>$(LUA_PATH)/lib/static : : <include>$(includes) ;
45         lib lua : : <link>shared <name>lua5.1 <search>$(LUA_PATH)/lib : : <include>$(includes) ;
46     }
47     else if [ GLOB $(LUA_PATH) : lua5.1.dll ]
48     {
49         lib lua : : <name>lua5.1 <search>$(LUA_PATH) : : <include>$(includes) ;
50     }
52 else if [ os.name ] in LINUX MACOSX FREEBSD
54     LUA_PATH = [ os.environ LUA_PATH ] ;
55     HOME = [ os.environ HOME ] ;
57     local possible-prefixes =
58         $(LUA_PATH) $(HOME)/Library/Frameworks /Library/Frameworks /usr /usr/local /opt/local /opt ;
60     local possible-suffixes =
61         include/lua5.1 include/lua51 include/lua include ;
63     local includes = [ GLOB $(possible-prefixes)/$(possible-suffixes) : lua.h ] ;
65     if ! $(includes)
66     {
67         errors.user-error "*** Unable to determine Lua include directory." ;
68     }
70     local includes = $(includes[1]:D) ;
71     local prefix = $(includes:D) ;
73     if $(prefix:B) = "include"
74     {
75         prefix = $(prefix:D) ;
76     }
78     local lib = $(prefix)/lib ;
79     library = [ GLOB $(lib)/lua51 $(lib)/lua5.1 $(lib)/lua $(lib) :
80         liblua5.1.* liblua51.* liblua.* ] ;
81     lib-name = [ MATCH "lib(.*)" : $(library[1]:B) ] ;
83     debug-message prefix: $(prefix) ;
84     debug-message includes: $(includes) ;
85     debug-message lib: $(library:D) ;
87     if ! $(lib-name)
88     {
89         errors.user-error "*** Unable to find Lua library." ;
90     }
92     lib m : : <link>shared ;
93     if [ os.name ] = LINUX
94     {
95         lib dl : : <link>shared ;
96     }
97     else
98     {
99         alias dl ;
100     }
101     lib lua : m dl : <name>$(lib-name) <search>$(library:D) : : <include>$(includes) ;
104 SOURCES =
105     class.cpp
106     class_info.cpp
107     class_registry.cpp
108     class_rep.cpp
109     create_class.cpp
110     error.cpp
111     find_best_match.cpp
112     function.cpp
113     implicit_cast.cpp
114     link_compatibility.cpp
115     object_rep.cpp
116     open.cpp
117     overload_rep.cpp
118     pcall.cpp
119     ref.cpp
120     scope.cpp
121     stack_content_by_name.cpp
122     weak_ref.cpp
123     wrapper_base.cpp ;
125 usage-requirements =
126     <library>lua
127     <toolset>msvc,<link>shared:<define>LUABIND_IMPORT=__declspec(dllimport)
128     <toolset>msvc,<link>shared:<define>LUABIND_EXPORT=__declspec(dllexport)
129     <toolset>msvc,<link>shared:<cxxflags>/wd4251 ;
131 lib luabind
132     : src/$(SOURCES)
133     # requirements
134     : <define>LUABIND_BUILDING
135       <include>. <include>$(BOOST_ROOT)
136       $(usage-requirements)
137     # default-build
138     :
139     # usage-requirements
140     : <include>. <include>$(BOOST_ROOT)
141       $(usage-requirements)
142     ;
144 alias test
145   : test//test
146   # requirements
147   :
148   # default-build
149   : <link>static <link>shared release debug ;
151 explicit test ;