aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xdoc/docs/.vuepress/config.js7
-rw-r--r--makefile15
-rw-r--r--src/yue.cpp13
3 files changed, 25 insertions, 10 deletions
diff --git a/doc/docs/.vuepress/config.js b/doc/docs/.vuepress/config.js
index c6f8f39..bd89428 100755
--- a/doc/docs/.vuepress/config.js
+++ b/doc/docs/.vuepress/config.js
@@ -43,13 +43,6 @@ module.exports = {
43 } 43 }
44 }; 44 };
45 `], 45 `],
46 ['script', {}, `
47 var Module = {
48 onRuntimeInitialized: function() {
49 window.yue = Module;
50 }
51 };
52 `],
53 ['script', { src: '/js/yuescript.js' }], 46 ['script', { src: '/js/yuescript.js' }],
54 ], 47 ],
55 48
diff --git a/makefile b/makefile
index 3978d96..6bd5f16 100644
--- a/makefile
+++ b/makefile
@@ -54,6 +54,9 @@ endif
54 INCLUDES += -I $(SRC_PATH)/3rdParty/lua 54 INCLUDES += -I $(SRC_PATH)/3rdParty/lua
55 LINK_FLAGS += -L $(SRC_PATH)/3rdParty/lua -llua -ldl 55 LINK_FLAGS += -L $(SRC_PATH)/3rdParty/lua -llua -ldl
56endif 56endif
57ifeq ($(NO_WATCHER),true)
58 COMPILE_FLAGS += -DYUE_NO_WATCHER
59endif
57 60
58# Add platform related linker flag 61# Add platform related linker flag
59ifneq ($(UNAME_S),Darwin) 62ifneq ($(UNAME_S),Darwin)
@@ -137,7 +140,9 @@ OBJECTS = $(SOURCES:$(SRC_PATH)/%.$(SRC_EXT)=$(BUILD_PATH)/%.o)
137# Set the dependency files that will be used to add header dependencies 140# Set the dependency files that will be used to add header dependencies
138DEPS = $(OBJECTS:.o=.d) 141DEPS = $(OBJECTS:.o=.d)
139 142
140SOURCES += $(SRC_PATH)/3rdParty/efsw/Debug.cpp $(SRC_PATH)/3rdParty/efsw/DirectorySnapshot.cpp $(SRC_PATH)/3rdParty/efsw/DirectorySnapshotDiff.cpp $(SRC_PATH)/3rdParty/efsw/DirWatcherGeneric.cpp $(SRC_PATH)/3rdParty/efsw/FileInfo.cpp $(SRC_PATH)/3rdParty/efsw/FileSystem.cpp $(SRC_PATH)/3rdParty/efsw/FileWatcher.cpp $(SRC_PATH)/3rdParty/efsw/FileWatcherCWrapper.cpp $(SRC_PATH)/3rdParty/efsw/FileWatcherGeneric.cpp $(SRC_PATH)/3rdParty/efsw/FileWatcherImpl.cpp $(SRC_PATH)/3rdParty/efsw/Log.cpp $(SRC_PATH)/3rdParty/efsw/Mutex.cpp $(SRC_PATH)/3rdParty/efsw/String.cpp $(SRC_PATH)/3rdParty/efsw/System.cpp $(SRC_PATH)/3rdParty/efsw/Thread.cpp $(SRC_PATH)/3rdParty/efsw/Watcher.cpp $(SRC_PATH)/3rdParty/efsw/WatcherGeneric.cpp $(SRC_PATH)/3rdParty/efsw/platform/posix/FileSystemImpl.cpp $(SRC_PATH)/3rdParty/efsw/platform/posix/MutexImpl.cpp $(SRC_PATH)/3rdParty/efsw/platform/posix/SystemImpl.cpp $(SRC_PATH)/3rdParty/efsw/platform/posix/ThreadImpl.cpp 143ifneq ($(NO_WATCHER),true)
144 SOURCES += $(SRC_PATH)/3rdParty/efsw/Debug.cpp $(SRC_PATH)/3rdParty/efsw/DirectorySnapshot.cpp $(SRC_PATH)/3rdParty/efsw/DirectorySnapshotDiff.cpp $(SRC_PATH)/3rdParty/efsw/DirWatcherGeneric.cpp $(SRC_PATH)/3rdParty/efsw/FileInfo.cpp $(SRC_PATH)/3rdParty/efsw/FileSystem.cpp $(SRC_PATH)/3rdParty/efsw/FileWatcher.cpp $(SRC_PATH)/3rdParty/efsw/FileWatcherCWrapper.cpp $(SRC_PATH)/3rdParty/efsw/FileWatcherGeneric.cpp $(SRC_PATH)/3rdParty/efsw/FileWatcherImpl.cpp $(SRC_PATH)/3rdParty/efsw/Log.cpp $(SRC_PATH)/3rdParty/efsw/Mutex.cpp $(SRC_PATH)/3rdParty/efsw/String.cpp $(SRC_PATH)/3rdParty/efsw/System.cpp $(SRC_PATH)/3rdParty/efsw/Thread.cpp $(SRC_PATH)/3rdParty/efsw/Watcher.cpp $(SRC_PATH)/3rdParty/efsw/WatcherGeneric.cpp $(SRC_PATH)/3rdParty/efsw/platform/posix/FileSystemImpl.cpp $(SRC_PATH)/3rdParty/efsw/platform/posix/MutexImpl.cpp $(SRC_PATH)/3rdParty/efsw/platform/posix/SystemImpl.cpp $(SRC_PATH)/3rdParty/efsw/platform/posix/ThreadImpl.cpp
145endif
141 146
142# Macros for timing compilation 147# Macros for timing compilation
143ifeq ($(UNAME_S),Darwin) 148ifeq ($(UNAME_S),Darwin)
@@ -148,7 +153,9 @@ ifeq ($(UNAME_S),Darwin)
148 $(RM) $(TIME_FILE) ; \ 153 $(RM) $(TIME_FILE) ; \
149 st=$$((`$(CUR_TIME)` - $$st)) ; \ 154 st=$$((`$(CUR_TIME)` - $$st)) ; \
150 echo $$st 155 echo $$st
151 SOURCES += $(SRC_PATH)/3rdParty/efsw/FileWatcherFSEvents.cpp $(SRC_PATH)/3rdParty/efsw/FileWatcherKqueue.cpp $(SRC_PATH)/3rdParty/efsw/WatcherFSEvents.cpp $(SRC_PATH)/3rdParty/efsw/WatcherKqueue.cpp 156 ifneq ($(NO_WATCHER),true)
157 SOURCES += $(SRC_PATH)/3rdParty/efsw/FileWatcherFSEvents.cpp $(SRC_PATH)/3rdParty/efsw/FileWatcherKqueue.cpp $(SRC_PATH)/3rdParty/efsw/WatcherFSEvents.cpp $(SRC_PATH)/3rdParty/efsw/WatcherKqueue.cpp
158 endif
152else 159else
153 TIME_FILE = $(dir $@).$(notdir $@)_time 160 TIME_FILE = $(dir $@).$(notdir $@)_time
154 START_TIME = date '+%s' > $(TIME_FILE) 161 START_TIME = date '+%s' > $(TIME_FILE)
@@ -156,7 +163,9 @@ else
156 $(RM) $(TIME_FILE) ; \ 163 $(RM) $(TIME_FILE) ; \
157 st=$$((`date '+%s'` - $$st - 86400)) ; \ 164 st=$$((`date '+%s'` - $$st - 86400)) ; \
158 echo `date -u -d @$$st '+%H:%M:%S'` 165 echo `date -u -d @$$st '+%H:%M:%S'`
159 SOURCES += $(SRC_PATH)/3rdParty/efsw/FileWatcherFSEvents.cpp $(SRC_PATH)/3rdParty/efsw/FileWatcherKqueue.cpp $(SRC_PATH)/3rdParty/efsw/WatcherFSEvents.cpp $(SRC_PATH)/3rdParty/efsw/WatcherKqueue.cpp $(SRC_PATH)/3rdParty/efsw/FileWatcherInotify.cpp $(SRC_PATH)/3rdParty/efsw/WatcherInotify.cpp 166 ifneq ($(NO_WATCHER),true)
167 SOURCES += $(SRC_PATH)/3rdParty/efsw/FileWatcherFSEvents.cpp $(SRC_PATH)/3rdParty/efsw/FileWatcherKqueue.cpp $(SRC_PATH)/3rdParty/efsw/WatcherFSEvents.cpp $(SRC_PATH)/3rdParty/efsw/WatcherKqueue.cpp $(SRC_PATH)/3rdParty/efsw/FileWatcherInotify.cpp $(SRC_PATH)/3rdParty/efsw/WatcherInotify.cpp
168 endif
160endif 169endif
161 170
162# Version macros 171# Version macros
diff --git a/src/yue.cpp b/src/yue.cpp
index 95dd920..3a61271 100644
--- a/src/yue.cpp
+++ b/src/yue.cpp
@@ -24,7 +24,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
24using namespace std::string_view_literals; 24using namespace std::string_view_literals;
25using namespace std::string_literals; 25using namespace std::string_literals;
26using namespace std::chrono_literals; 26using namespace std::chrono_literals;
27#ifndef YUE_NO_WATCHER
27#include "efsw/efsw.hpp" 28#include "efsw/efsw.hpp"
29#endif // YUE_NO_WATCHER
28#include "ghc/fs_std.hpp" 30#include "ghc/fs_std.hpp"
29#include "linenoise.hpp" 31#include "linenoise.hpp"
30 32
@@ -140,6 +142,7 @@ fs::path getTargetFileDirty(const fs::path& file, const fs::path& workPath, cons
140 return fs::path(); 142 return fs::path();
141} 143}
142 144
145#ifndef YUE_NO_WATCHER
143static std::string compileFile(const fs::path& file, yue::YueConfig conf, const fs::path& workPath, const fs::path& targetPath) { 146static std::string compileFile(const fs::path& file, yue::YueConfig conf, const fs::path& workPath, const fs::path& targetPath) {
144 auto srcFile = fs::absolute(file); 147 auto srcFile = fs::absolute(file);
145 auto targetFile = getTargetFileDirty(srcFile, workPath, targetPath); 148 auto targetFile = getTargetFileDirty(srcFile, workPath, targetPath);
@@ -234,6 +237,7 @@ public:
234 fs::path workPath; 237 fs::path workPath;
235 fs::path targetPath; 238 fs::path targetPath;
236}; 239};
240#endif // YUE_NO_WATCHER
237 241
238int main(int narg, const char** args) { 242int main(int narg, const char** args) {
239 const char* help = 243 const char* help =
@@ -250,7 +254,9 @@ int main(int narg, const char** args) {
250 " -b Dump compile time (doesn't write output)\n" 254 " -b Dump compile time (doesn't write output)\n"
251 " -g Dump global variables used in NAME LINE COLUMN\n" 255 " -g Dump global variables used in NAME LINE COLUMN\n"
252 " -l Write line numbers from source codes\n" 256 " -l Write line numbers from source codes\n"
257#ifndef YUE_NO_WATCHER
253 " -w path Watch changes and compile every file under directory\n" 258 " -w path Watch changes and compile every file under directory\n"
259#endif // YUE_NO_WATCHER
254 " -v Print version\n" 260 " -v Print version\n"
255#ifndef YUE_COMPILER_ONLY 261#ifndef YUE_COMPILER_ONLY
256 " -- Read from standard in, print to standard out\n" 262 " -- Read from standard in, print to standard out\n"
@@ -550,7 +556,12 @@ int main(int narg, const char** args) {
550 return 1; 556 return 1;
551 } 557 }
552 } else if (arg == "-w"sv) { 558 } else if (arg == "-w"sv) {
559#ifndef YUE_NO_WATCHER
553 watchFiles = true; 560 watchFiles = true;
561#else
562 std::cout << "Error: -w is not supported\n"sv;
563 return 1;
564#endif // YUE_NO_WATCHER
554 } else if (arg.size() > 2 && arg.substr(0, 2) == "--"sv && arg.substr(2, 1) != "-"sv) { 565 } else if (arg.size() > 2 && arg.substr(0, 2) == "--"sv && arg.substr(2, 1) != "-"sv) {
555 auto argStr = arg.substr(2); 566 auto argStr = arg.substr(2);
556 yue::Utils::trim(argStr); 567 yue::Utils::trim(argStr);
@@ -593,6 +604,7 @@ int main(int narg, const char** args) {
593 std::cout << "Error: -o can not be used with multiple input files\n"sv; 604 std::cout << "Error: -o can not be used with multiple input files\n"sv;
594 return 1; 605 return 1;
595 } 606 }
607#ifndef YUE_NO_WATCHER
596 if (watchFiles) { 608 if (watchFiles) {
597 auto fullWorkPath = fs::absolute(fs::path(workPath)).string(); 609 auto fullWorkPath = fs::absolute(fs::path(workPath)).string();
598 auto fullTargetPath = fullWorkPath; 610 auto fullTargetPath = fullWorkPath;
@@ -624,6 +636,7 @@ int main(int narg, const char** args) {
624 } 636 }
625 return 0; 637 return 0;
626 } 638 }
639#endif // YUE_NO_WATCHER
627 std::list<std::future<std::tuple<int, std::string, std::string>>> results; 640 std::list<std::future<std::tuple<int, std::string, std::string>>> results;
628 for (const auto& file : files) { 641 for (const auto& file : files) {
629 auto task = std::async(std::launch::async, [=]() { 642 auto task = std::async(std::launch::async, [=]() {