@@ -16,39 +16,49 @@ set ( SRC ${CMAKE_CURRENT_SOURCE_DIR}/src )
1616set ( BIN ${CMAKE_CURRENT_BINARY_DIR} )
1717set ( LIB ${BIN} /lib )
1818
19- message ( STATUS "Compiling metalua" )
19+ message ( STATUS "Preparing the metalua libraries " )
2020
2121file ( COPY ${SRC} /lib/ DESTINATION ${LIB} PATTERN ".in" EXCLUDE )
2222configure_file ( ${SRC} /lib/metalua/package2.lua.in ${LIB} /metalua/package2.lua )
23- configure_file ( ${SRC} /compiler/metalua.mlua.in ${BIN} /metalua.mlua )
23+ configure_file ( ${SRC} /compiler/metalua.mlua.in ${LIB} /metalua.mlua )
24+
25+ message ( STATUS "Compiling the parts of the compiler written in plain Lua" )
2426
2527execute_process (
2628 COMMAND ${LUAC} -o ${LIB} /metalua/bytecode.luac
2729 lopcodes.lua lcode.lua ldump.lua compile.lua
28- WORKING_DIRECTORY ${SRC} /compiler )
29-
30- execute_process (
3130 COMMAND ${LUAC} -o ${LIB} /metalua/mlp.luac
3231 lexer.lua gg.lua mlp_lexer.lua mlp_misc.lua mlp_table.lua mlp_meta.lua mlp_expr.lua mlp_stat.lua mlp_ext.lua
3332 WORKING_DIRECTORY ${SRC} /compiler )
3433
34+ message ( STATUS "Bootstrap the parts of the compiler written in metalua" )
35+
3536execute_process (
36- COMMAND ${LUA} ${SRC} /build -utils/bootstrap.lua
37- ${SRC} /compiler/mlc. mlua output =${LIB} /metalua/mlc .luac
38- WORKING_DIRECTORY ${SRC} /lib )
37+ COMMAND ${LUA} ${SRC} /build -utils/bootstrap.lua ${SRC} /compiler/mlc.mlua output = ${LIB} /metalua/mlc.luac
38+ COMMAND ${LUA} ${SRC} /build -utils/bootstrap.lua ${LIB} /metalua. mlua output =${LIB} /metalua.luac
39+ WORKING_DIRECTORY ${LIB} )
3940
41+ message ( STATUS "Finish the bootstrap: recompile the metalua parts of the compiler with itself" )
42+
4043execute_process (
41- COMMAND ${LUA} ${SRC} /build -utils/bootstrap.lua
42- ${BIN} /metalua.mlua output =${LIB} /metalua.luac
43- WORKING_DIRECTORY ${SRC} /lib )
44+ COMMAND ${LUA} ${LIB} /metalua.luac -vb -f ${SRC} /compiler/mlc.mlua -o ${LIB} /metalua/mlc.luac
45+ COMMAND ${LUA} ${LIB} /metalua.luac -vb -f ${LIB} /metalua.mlua -o ${LIB} /metalua.luac
46+ WORKING_DIRECTORY ${LIB} )
47+
48+ message ( STATUS "Precompile metalua libraries" )
4449
45- # TODO:
46- #call %DISTRIB_BIN%\metalua -vb -f compiler\mlc.mlua -o %DISTRIB_LIB%\metalua\mlc.luac
47- #call %DISTRIB_BIN%\metalua -vb -f compiler\metalua.mlua -o %DISTRIB_LIB%\metalua.luac
48- #%LUA% %BASE%\build-utils\precompile.lua directory=%DISTRIB_LIB% command=%DISTRIB_BIN%\metalua
50+ file ( GLOB_RECURSE SRCS RELATIVE ${LIB} "${LIB} /*.mlua" )
51+ foreach ( S ${SRCS} )
52+ get_filename_component ( P ${S} PATH )
53+ get_filename_component ( D ${S} NAME_WE )
54+ message ( STATUS "Compiling ${S} to ${P} /${D} .luac" )
55+ execute_process (
56+ COMMAND ${LUA} ${LIB} /metalua.luac ${S} -o ${P} /${D} .luac
57+ WORKING_DIRECTORY ${LIB} )
58+ endforeach ( S )
4959
60+ install_lua_executable ( metalua ${LIB} /metalua.luac )
5061install ( DIRECTORY ${LIB} / DESTINATION ${INSTALL_LMOD} PATTERN "*.in" EXCLUDE )
51- install_lua_executable ( metalua ${BIN} /lib/metalua.luac )
5262install_doc ( doc / )
5363install_foo ( junk/ )
5464install_data ( INSTALL .TXT README.TXT LICENSE )
0 commit comments