function(luna_app SOURCE_FILE APP_NAME) add_executable(${APP_NAME} ${SOURCE_FILE}) target_compile_options(${APP_NAME} PRIVATE -Os ${COMMON_FLAGS} -Wno-write-strings) add_dependencies(${APP_NAME} libc) target_include_directories(${APP_NAME} PRIVATE ${LUNA_BASE}/usr/include) target_link_libraries(${APP_NAME} PRIVATE os) install(TARGETS ${APP_NAME} DESTINATION ${LUNA_BASE}/usr/bin) endfunction() add_executable(preinit preinit.cpp) target_compile_options(preinit PRIVATE -Os ${COMMON_FLAGS} -Wno-write-strings) add_dependencies(preinit libc) target_include_directories(preinit PRIVATE ${LUNA_BASE}/usr/include) install(TARGETS preinit DESTINATION ${LUNA_ROOT}/initrd/bin) luna_app(init.cpp init) luna_app(env.cpp env) luna_app(su.cpp su) luna_app(cat.cpp cat) luna_app(date.cpp date) luna_app(edit.cpp edit) luna_app(ls.cpp ls) luna_app(chown.cpp chown) luna_app(chmod.cpp chmod) luna_app(mkdir.cpp mkdir) luna_app(rm.cpp rm) luna_app(stat.cpp stat) luna_app(uname.cpp uname) luna_app(base64.cpp base64) luna_app(login.cpp login) luna_app(mount.cpp mount) luna_app(umount.cpp umount) luna_app(ps.cpp ps) luna_app(time.cpp time) luna_app(ln.cpp ln) luna_app(mktemp.cpp mktemp) luna_app(sysfuzz.cpp sysfuzz) luna_app(cp.cpp cp) luna_app(kill.cpp kill) luna_app(gol.cpp gol) luna_app(touch.cpp touch) luna_app(free.cpp free)