diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f56cb37dce3d2571b4b25df8ec2d98d7f0ed305e..c2e62475ce4a500e518d726a9d54ee51aba73dd5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -image: "flowdalic/debian-testing-dev:1.17" +image: "flowdalic/debian-testing-dev:1.19" before_script: - ulimit -a @@ -97,6 +97,14 @@ clang-tidy: CC: clang CXX: clang++ +.libc++: + extends: + - .clang + variables: + EMPER_USE_BUNDLED_DEPS: "always" + EMPER_CPP_ARGS: "-stdlib=libc++" + EMPER_CPP_LINK_ARGS: "-stdlib=libc++" + .emper-ws-scheduling: variables: EMPER_DEFAULT_SCHEDULING_STRATEGY: "work_stealing" @@ -253,6 +261,17 @@ test-clang-debug: - test-clang - .debug-build +smoke-test-libc++: + stage: smoke-test + extends: + - .fast-variant-check + - .libc++ + +test-libc++: + extends: + - .test + - .libc++ + test-worker-no-sleep: extends: - .test diff --git a/Makefile b/Makefile index 357b3ecb9f2ff744e10a26541090d66f5cae0775..fa4c7e7fe03ebf2b9964a64fdd8d995b2574f383 100644 --- a/Makefile +++ b/Makefile @@ -34,6 +34,15 @@ debug: rm -f build $(MAKE) build BUILDTYPE=$@ +libc++: + rm -f build + $(MAKE) build \ + CC=clang CXX=clang++ \ + EMPER_CPP_ARGS="-stdlib=libc++" \ + EMPER_CPP_LINK_ARGS="-stdlib=libc++" \ + EMPER_USE_BUNDLED_DEPS="always" \ + BUILDDIR="build-libc++" + .PHONY: fast-static-analysis fast-static-analysis: all check-format check-license doc diff --git a/emper/log/log.cpp b/emper/log/log.cpp index 0f953d1ebaf07c56573336c1565d0c1a23bc1235..c35997315ced171bc9b24fd0b20429f907594ff5 100644 --- a/emper/log/log.cpp +++ b/emper/log/log.cpp @@ -21,11 +21,12 @@ using emper::io::GlobalIoContext; -static const long NanosInAMinute = 60L * 1000 * 1000 * 1000; - namespace emper::log { static void add_timestamp_to(std::ostringstream& logMessage) { +#if defined __GLIBCXX__ + static const long NanosInAMinute = 60L * 1000 * 1000 * 1000; + auto now = std::chrono::high_resolution_clock::now(); auto now_time_t = std::chrono::high_resolution_clock::to_time_t(now); @@ -53,6 +54,9 @@ static void add_timestamp_to(std::ostringstream& logMessage) { long remaining_nanos = time_since_epoch_long % NanosInAMinute; logMessage << remaining_nanos; +#else + logMessage << "UNKN_TIME"; +#endif } static std::mutex log_mutex;