Closed stephenberry closed 3 weeks ago
Did you run ./configure
script?
Yes, ./configure
seemed to work, it's the make
call that errored
The file MemoryConfig.h
is generated by the configure
script.
If it is not there then your configure probably failed.
If you have the file: src/benchmark/benchmarkConfig.h
They are basically the same.
You can copy src/benchmark/benchmarkConfig.h
onto src/Memory/MemoryConfig.h
It should look like this:
/* src/Memory/MemoryConfig.h. Generated from config.h.in by configure. */
/* config.h.in. Generated from configure.ac by autoheader. */
#ifndef THORS_JSONBENCHMARK_CONFIG_H
#define THORS_JSONBENCHMARK_CONFIG_H
#ifndef THORS_PACKAGE_INFO_CONFIG_H
#define THORS_PACKAGE_INFO_CONFIG_H
␣␣␣␣
/* Define to 1 if you have the <dlfcn.h> header file. */
#define HAVE_DLFCN_H 1
/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1
/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
/* Define to 1 if you have the <stdio.h> header file. */
#define HAVE_STDIO_H 1
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1
/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1
/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1
/* Define to the sub-directory where libtool stores uninstalled libraries. */
#define LT_OBJDIR ".libs/"
/* Name of package */
#define PACKAGE "jsonbenchmark"
/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT "Loki.Astari+ThorsAnvil@gmail.com"
/* Define to the full name of this package. */
#define PACKAGE_NAME "JsonBenchmark"
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "JsonBenchmark 0.1"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "jsonbenchmark"
/* Define to the home page for this package. */
#define PACKAGE_URL ""
/* Define to the version of this package. */
#define PACKAGE_VERSION "0.1"
/* Define to 1 if all of the C89 standard headers exist (not just the ones
required in a freestanding environment). This macro is provided for
backward compatibility; new code need not use it. */
#define STDC_HEADERS 1
/* Enable to use header only libraries */
/* For header only convert to inline */
/* Name of package for header files */
#define THOR_PACKAGE_NAME JsonBenchmark
/* Version number of package */
#define VERSION "0.1"
#endif
/* Enable to use header only libraries */
#define THORS_JSONBENCHMARK_HEADER_ONLY 0
/* For header only convert to inline */
#define THORS_JSONBENCHMARK_HEADER_ONLY_INCLUDE /**/
#endif
Thanks! I'll look into this more.
By the way, I would expect this issue to go away if you used the glz::meta
registration approach. The glz::meta
approach is also the highest performing way to use Glaze, although it requires more typing, albeit the performance improvements are minor.
Here is the output of running ./configure
Submodule 'build' (https://github.com/Loki-Astari/ThorMaker.git) registered for path 'build'
Cloning into '/workspaces/JsonBenchmark/build'...
Submodule path 'build': checked out '02c427c6b85519a106dcf6a561c9d92d7ddb826b'
Submodule 'googletest' (https://github.com/Loki-Astari/googletest.git) registered for path 'build/googletest'
Submodule 'vera-plusplus' (https://github.com/Loki-Astari/vera-plusplus.git) registered for path 'build/vera-plusplus'
Cloning into '/workspaces/JsonBenchmark/build/googletest'...
Cloning into '/workspaces/JsonBenchmark/build/vera-plusplus'...
Submodule path 'build/googletest': checked out 'cc366710bbf40a9816d47c35802d06dbaccb8792'
Submodule path 'build/vera-plusplus': checked out 'de33164885c90951be29779aea7c236b817deb13'
Checking Windows Symbolic Links: Linux
Not Windows
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C++... yes
checking whether clang++ accepts -g... yes
checking for clang++ option to enable C++11 features... none needed
STARTING COVERAGE CHECK
STARTING COVERAGE CHECK: CHECKING CLANG
: error:
The coverage tool "llvm-cov" does not seem to be working.
But, MemoryConfig.h
is still not generated.
src/benchmark/benchmarkConfig.h
also doesn't exist and when I copy the code you pasted (after removing the ␣␣␣␣
characters) and making src/Memory/MemoryConfig.h
, I get the errors:
make
Memory.cpp
ln: '/workspaces/JsonBenchmark/build/lib/libMemory.so' and '/workspaces/JsonBenchmark/build/lib/libMemory.so' are the same file
make[4]: *** [/workspaces/JsonBenchmark/build/tools/Build/install.Makefile:175: /workspaces/JsonBenchmark/build/lib/libMemory.so] Error 1
make[3]: *** [/workspaces/JsonBenchmark/build/tools/Build/install.Makefile:87: ActionDoInstallRelease] Error 2
make[2]: *** [/workspaces/JsonBenchmark/build/tools/main.Makefile:385: release-only] Error 2
make[1]: *** [/workspaces/JsonBenchmark/build/tools/Project.Makefile:81: Memory.dir] Error 2
make: *** [/workspaces/JsonBenchmark/build/tools/Project.Makefile:81: src.dir] Error 2
I am doing this with a fresh docker container of Ubuntu (jammy) on GitHub code spaces. I'm including GCC 13 and Clang 17.
OK. You don't need the coverage tool to build this project. Give me a second to disable it.
Once we get the configure
script running correctly the other issue should also go away.
I am doing this with a fresh docker container of Ubuntu (jammy) on GitHub code spaces. I'm including GCC 13 and Clang 17.
Not sure how to do that. Can you point at instructions. Or send me a docker file to run locally?
Can you install gcov
on your container that "should" make the error go away.
While I try and disable the test.
I have update the configure
script in the master
branch to disable this check.
Can you pull that version into your branch?
You can copy the .devcontainer
folder from Glaze if you want to use a Ubuntu image with recent compilers in GitHub code spaces.
I'm getting merge errors trying to merge the master
branch into GlazeIssue1
, are you able to merge these updates into GlazeIssue1
? I can refork if you can get things working again.
Added the new 'configure' to 'GlazeIssue1`
Thanks, now ./configure
works, but I get the following error when I run make
:
(GlazeIssue01) $ make
Building Dir src Start
Building Dir Memory Start
ERROR
g++ -D DATA_DIR=/workspaces/JsonBenchmark/data -I /usr/local/include -I /usr/local/include -fPIC -Wall -Wextra -Werror -Wstrict-aliasing -pedantic -Wunreachable-code -Wno-long-long -Wdeprecated -Wdeprecated-declarations -Wmissing-braces -Wmissing-field-initializers -Wunused-variable -Winconsistent-missing-override -Wdelete-non-abstract-non-virtual-dtor -Wdelete-non-virtual-dtor -Wno-deprecated-register -Wno-literal-range -Wno-unknown-pragmas -I/workspaces/JsonBenchmark/build/include -isystem /workspaces/JsonBenchmark/build/include3rd -g -Wno-unreachable-code -DTHOR_USE_CPLUSPLUS23 -std=c++23 -MF"makedependency/Memory.d" -MM -MP -MT"makedependency/Memory.d" -MT"debug/Memory.o" -MT"release/Memory.o" -MT"coverage/Memory.o" "Memory.cpp"
========================================
src/Memory/g++: error: unrecognized command-line option ‘-Winconsistent-missing-override’
src/Memory/g++: error: unrecognized command-line option ‘-Wdelete-non-abstract-non-virtual-dtor’; did you mean ‘-Wdelete-non-virtual-dtor’?
make[2]: *** [/workspaces/JsonBenchmark/build/tools/main.Makefile:571: makedependency/Memory.d] Error 1
make[1]: *** [/workspaces/JsonBenchmark/build/tools/Project.Makefile:81: Memory.dir] Error 2
make: *** [/workspaces/JsonBenchmark/build/tools/Project.Makefile:81: src.dir] Error 2
Any thoughts on this?
Sorry did not reply earlier. I have Glaze building and running all the performance tests.
The status page now accurately reflects the performance of Glaze. https://lokiastari.com/Json/Performance.osx.html
It is still the fastest but the value of 0 compared to others has been fixed.
I would not worry about absolute times but times relative to others.
PS. That error message can be disabled by adding the flag: -Wno-unknown-warning-option
.
Its caused because the compiler flags are not standardized across compilers or even versions of compilers and I just did not have the time to test for every flag in existance in the configuration file.
Closting this as Glaze is now running.
Thanks for the updates/fixes! So, Glaze is now running on Linux for you?
Forgot about that. Testing now.
Still not working on Linux:
https://github.com/Loki-Astari/JsonBenchmark/actions/runs/10864720204/job/30150310365
The link is dead. But, which branch should I try to build Glaze on Linux? It looks like GlazeIssue01 hasn't been updated. Can I try from the main branch, and if so, where do I enable Glaze?
I'm trying to debug your GlazeIssue1 branch, but I get the following error after configuring and then running
make
: