1- CC = gcc
2- RM = rm
1+ CC := gcc
2+ RM := rm
3+ CD := cd
4+ MAKE := make
35
4- CFLAGS = -Wall -Wextra -fpic -O2 -fno-strict-aliasing -Wno-unused-parameter
6+ CFLAGS + = -Wall -Wextra -fpic -O2 -fno-strict-aliasing -Wno-unused-parameter
57
68SYS := $(shell gcc -dumpmachine)
7- ifneq (, $(findstring linux, $(SYS ) ) )
8-
9- SUFFIX = so
10- LDFLAGS = -shared
11- LIBS = -ldl -lffi
12- CFLAGS += -I/usr/local/lib/libffi-3.1/include/
13- ifndef GLOBALS_HOME
14- $(error Couldn't find GLOBALS_HOME)
15- endif
9+ LIBFFI_PATH := ./libs/libffi/$(SYS )
10+ INCLUDES := -I$(LIBFFI_PATH ) /include
11+ LIBS := -L$(LIBFFI_PATH ) /.libs -lffi
1612
13+ ifneq (, $(findstring linux, $(SYS ) ) )
14+ SUFFIX := so
15+ LDFLAGS := -shared
16+ LIBS += -ldl
1717else ifneq (, $(findstring mingw, $(SYS)))
18- ifneq (, $(findstring x86_64, $(SYS)))
19- PLATFORM = x86-64
20- else
21- PLATFORM = x86-32
22- endif
2318 SUFFIX = dll
2419 LDFLAGS = -mdll
25- LIBS = -L./libs/$(PLATFORM)/ -lffi
2620 CFLAGS += -I./libs/$(PLATFORM)/include/
27- ifndef GLOBALS_HOME
28- GLOBALS_HOME = C:/InterSystems/Cache
29- endif
30-
3121else
3222 $(error Unsupported build platform)
3323endif
3424
35- CFLAGS += -I${GLOBALS_HOME}/dev/cpp/include
3625
37- TESTSDIR = tests
26+ ifndef GLOBALS_HOME
27+ $(error Couldn't find GLOBALS_HOME)
28+ endif
29+
30+
31+ INCLUDES += -I${GLOBALS_HOME}/dev/cpp/include
32+ CFLAGS += $(INCLUDES )
33+ TESTSDIR := tests
3834
35+ .PHONY : all clean libffi libffi_clean
3936
40- all : libcna.$(SUFFIX ) $(TESTSDIR ) /libtest.$(SUFFIX )
37+ all : libcna.$(SUFFIX ) $(TESTSDIR ) /libtest.$(SUFFIX )
38+
39+ libffi :
40+ cd libs/libffi && ./configure --build=$(SYS ) --enable-shared=no && $(MAKE )
4141
4242cna.o : cna.c storage.h
4343
@@ -51,5 +51,8 @@ $(TESTSDIR)/teslib.o: $(TESTSDIR)/testlib.c
5151$(TESTSDIR ) /libtest.$(SUFFIX ) : $(TESTSDIR ) /testlib.o
5252 $(CC ) $(LDFLAGS ) -o $@ $^
5353
54+ libffi-clean :
55+ $(CD ) libs/libffi && $(MAKE ) clean
56+
5457clean :
5558 $(RM ) * .$(SUFFIX ) * .o $(TESTSDIR ) /* .$(SUFFIX ) $(TESTSDIR ) /* .o
0 commit comments