On 4/26/19 7:31 AM, Ramsay Jones wrote: > > > On 26/04/2019 03:44, Randy Dunlap wrote: >> On 4/25/19 6:55 PM, Randy Dunlap wrote: >>> Hi, >>> >>> I'm trying to build 0.6.0 and I get these error messages: >>> >>> CC sparse-llvm.o >>> In file included from /usr/include/llvm-c/Types.h:17:0, >>> from /usr/include/llvm-c/ErrorHandling.h:17, >>> from /usr/include/llvm-c/Core.h:18, >>> from sparse-llvm.c:6: >>> /usr/include/llvm/Support/DataTypes.h:57:3: error: #error "Must #define __STDC_LIMIT_MACROS before #including Support/DataTypes.h" >>> # error "Must #define __STDC_LIMIT_MACROS before #including Support/DataTypes.h" >>> ^ >>> /usr/include/llvm/Support/DataTypes.h:61:3: error: #error "Must #define __STDC_CONSTANT_MACROS before " "#including Support/DataTypes.h" >>> # error "Must #define __STDC_CONSTANT_MACROS before " \ >>> ^ >>> Makefile:206: recipe for target 'sparse-llvm.o' failed >>> >>> >>> Any hints or help on that? >>> >>> thanks. >>> >> >> This is what I did to build sparse-llvm. FWIW. >> >> --- >> From: Randy Dunlap <rdunlap@xxxxxxxxxxxxx> >> >> Certain macros have to be defined in order to use the llvm >> DataTypes.h header file. Fixes these build errors when building >> sparse-llvm: >> >> CC sparse-llvm.o >> In file included from /usr/include/llvm-c/Types.h:17:0, >> from /usr/include/llvm-c/ErrorHandling.h:17, >> from /usr/include/llvm-c/Core.h:18, >> from sparse-llvm.c:6: >> /usr/include/llvm/Support/DataTypes.h:57:3: error: #error "Must #define __STDC_LIMIT_MACROS before #including Support/DataTypes.h" >> # error "Must #define __STDC_LIMIT_MACROS before #including Support/DataTypes.h" >> ^ >> /usr/include/llvm/Support/DataTypes.h:61:3: error: #error "Must #define __STDC_CONSTANT_MACROS before " "#including Support/DataTypes.h" >> # error "Must #define __STDC_CONSTANT_MACROS before " \ >> ^ >> >> This is from using llvm 3.8.0. >> >> Signed-off-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx> >> --- >> Makefile | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> --- sparse-0.6.0.orig/Makefile >> +++ sparse-0.6.0/Makefile >> @@ -160,7 +160,8 @@ ifeq ($(shell expr "$(LLVM_VERSION)" : ' >> LLVM_PROGS := sparse-llvm >> $(LLVM_PROGS): LD := g++ >> LLVM_LDFLAGS := $(shell $(LLVM_CONFIG) --ldflags) >> -LLVM_CFLAGS := -I$(shell $(LLVM_CONFIG) --includedir) >> +LLVM_CFLAGS := -I$(shell $(LLVM_CONFIG) --includedir) \ >> + -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS > > Hmm, I only build sparse-llvm on cygwin these days (I don't have > llvm installed on Linux at the moment). You didn't say which system > and versions of OS, compiler and llvm you are using. > > However, I think it may be more appropriate to add: > > $(shell $(LLVM_CONFIG) --cppflags) > > rather than these specific '-D'efines. > > On cygwin, for example, I see: > > $ llvm-config --cppflags > -I/usr/include -DLLVM_BUILD_GLOBAL_ISEL -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS > $ > > Looking at the cygwin header files, they automatically #define > these same macros before the '#include <stdint.h>', so this > addition to the Makefile is not required there ... :-D > > [assuming that works for you, of course! hint, hint ;-) ] Yes, that works and makes sense. Thanks. Here is the updated patch. --- From: Randy Dunlap <rdunlap@xxxxxxxxxxxxx> Certain macros have to be defined in order to use the llvm DataTypes.h header file. Fixes these build errors when building sparse-llvm: CC sparse-llvm.o In file included from /usr/include/llvm-c/Types.h:17:0, from /usr/include/llvm-c/ErrorHandling.h:17, from /usr/include/llvm-c/Core.h:18, from sparse-llvm.c:6: /usr/include/llvm/Support/DataTypes.h:57:3: error: #error "Must #define __STDC_LIMIT_MACROS before #including Support/DataTypes.h" # error "Must #define __STDC_LIMIT_MACROS before #including Support/DataTypes.h" ^ /usr/include/llvm/Support/DataTypes.h:61:3: error: #error "Must #define __STDC_CONSTANT_MACROS before " "#including Support/DataTypes.h" # error "Must #define __STDC_CONSTANT_MACROS before " \ ^ This is from using llvm 3.8.0. Suggested-by: Ramsay Jones <ramsay@xxxxxxxxxxxxxxxxxxxx> Signed-off-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx> --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --- sparse-0.6.0.orig/Makefile +++ sparse-0.6.0/Makefile @@ -160,7 +160,8 @@ ifeq ($(shell expr "$(LLVM_VERSION)" : ' LLVM_PROGS := sparse-llvm $(LLVM_PROGS): LD := g++ LLVM_LDFLAGS := $(shell $(LLVM_CONFIG) --ldflags) -LLVM_CFLAGS := -I$(shell $(LLVM_CONFIG) --includedir) +LLVM_CFLAGS := -I$(shell $(LLVM_CONFIG) --includedir) \ + $(shell $(LLVM_CONFIG) --cppflags) LLVM_LIBS := $(shell $(LLVM_CONFIG) --libs) LLVM_LIBS += $(shell $(LLVM_CONFIG) --system-libs 2>/dev/null) LLVM_LIBS += $(shell $(LLVM_CONFIG) --cxxflags | grep -F -q -e '-stdlib=libc++' && echo -lc++)