Skip to content

Commit

Permalink
Merge pull request #1 from intersystems-ru/adding-libffi-sources
Browse files Browse the repository at this point in the history
Adding libffi sources
  • Loading branch information
daugeldauge committed Aug 26, 2014
2 parents be48974 + 0e81bf5 commit 3c52979
Show file tree
Hide file tree
Showing 323 changed files with 139,927 additions and 658 deletions.
66 changes: 38 additions & 28 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,43 +1,50 @@
CC = gcc
RM = rm
CC := gcc
RM := rm
CD := cd
MAKE := make

CFLAGS = -Wall -Wextra -fpic -O2 -fno-strict-aliasing -Wno-unused-parameter
CFLAGS += -Wall -Wextra -fpic -O2 -fno-strict-aliasing -Wno-unused-parameter

SYS := $(shell gcc -dumpmachine)
ifneq (, $(findstring linux, $(SYS)))

SUFFIX = so
LDFLAGS = -shared
LIBS = -ldl -lffi
CFLAGS += -I/usr/local/lib/libffi-3.1/include/
ifndef GLOBALS_HOME
$(error Couldn't find GLOBALS_HOME)
endif
LIBFFI_PATH := ./libs/libffi

else ifneq (, $(findstring mingw, $(SYS)))
ifneq (, $(findstring x86_64, $(SYS)))
PLATFORM = x86-64
else
PLATFORM = x86-32
endif
SUFFIX = dll
LDFLAGS = -mdll
LIBS = -L./libs/$(PLATFORM)/ -lffi
CFLAGS += -I./libs/$(PLATFORM)/include/
ifndef GLOBALS_HOME
GLOBALS_HOME = C:/InterSystems/Cache
endif
ifeq ($(SYS), x86_64-w64-mingw32)
BUILDSYS := $(SYS)
else
BUILDSYS := $(shell bash $(LIBFFI_PATH)/config.guess)
endif

LIBFFI_PATH := $(LIBFFI_PATH)/$(BUILDSYS)
INCLUDES :=-I$(LIBFFI_PATH)/include
LIBS := -L$(LIBFFI_PATH)/.libs -lffi

ifneq (, $(findstring linux, $(SYS)))
SUFFIX := so
LDFLAGS := -shared
LIBS += -ldl
else ifneq (, $(findstring mingw, $(SYS)))
SUFFIX := dll
LDFLAGS := -mdll
else
$(error Unsupported build platform)
endif

CFLAGS += -I${GLOBALS_HOME}/dev/cpp/include

TESTSDIR = tests
ifndef GLOBALS_HOME
$(error Couldn't find GLOBALS_HOME)
endif


INCLUDES += -I${GLOBALS_HOME}/dev/cpp/include
CFLAGS += $(INCLUDES)
TESTSDIR := tests

.PHONY: all clean libffi libffi-clean

all: libcna.$(SUFFIX) $(TESTSDIR)/libtest.$(SUFFIX)
all: libcna.$(SUFFIX) $(TESTSDIR)/libtest.$(SUFFIX)

libffi:
cd libs/libffi && ./configure --build=$(BUILDSYS) --enable-shared=no && $(MAKE)

cna.o: cna.c storage.h

Expand All @@ -51,5 +58,8 @@ $(TESTSDIR)/teslib.o: $(TESTSDIR)/testlib.c
$(TESTSDIR)/libtest.$(SUFFIX): $(TESTSDIR)/testlib.o
$(CC) $(LDFLAGS) -o $@ $^

libffi-clean:
$(CD) libs/libffi && $(MAKE) clean

clean:
$(RM) *.$(SUFFIX) *.o $(TESTSDIR)/*.$(SUFFIX) $(TESTSDIR)/*.o
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,13 @@ CNA — связка класса Caché и библиотеки на C, поз

###Linux###

- Устанавливаем пакет libffi-dev из репозиториев или собираем libffi из [исходников](https://github.com/atgreen/libffi).
- Делаем `make`. Если ругается на отстуствие переменной `GLOBALS_HOME` — прописываем
- Собираем libffi: `make libffi`. Если ругается на отстуствие переменной `GLOBALS_HOME` — прописываем

```sh
export GLOBALS_HOME='путь к корневой папке Caché'
```

- Собираем libcna: `make`
- Готово! Нужный нам файл — libcna.so. Осталось только импортировать класс cna.xml в любую удобную область Caché:

```lisp
Expand All @@ -22,7 +23,7 @@ CNA — связка класса Caché и библиотеки на C, поз

###Windows###

Для Windows-систем можно повторить указанные выше действия (для компиляции и сборки использовать [mingw32](http://www.mingw.org/) или [mingw32-w64](http://mingw-w64.sourceforge.net/)). libffi устанавливать не надо, она скачивается вместе с репозиторием. Или можно загрузить уже готовые [бинарные версии](https://github.com/intersystems-ru/cna/releases) CNA. **Внимание: разрядности libcna, инсталяции Caché и внешних библиотек доллжны совпадать.** Импорт cna.xml делаем аналогично или через студию.
Для Windows-систем можно повторить указанные выше действия (для компиляции и сборки использовать [mingw32](http://www.mingw.org/) или [mingw32-w64](http://mingw-w64.sourceforge.net/)). Или можно загрузить уже готовые [бинарные версии](https://github.com/intersystems-ru/cna/releases) CNA. **Внимание: разрядности libcna, инсталяции Caché и внешних библиотек доллжны совпадать.** Импорт cna.xml делаем аналогично или через студию.

##Запуск тестов##

Expand Down
5 changes: 5 additions & 0 deletions libs/libffi/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Makefile
config.log
confdefs.h
*~
x86_64-w64-mingw32
Loading

0 comments on commit 3c52979

Please sign in to comment.