diff --git a/Makefile b/Makefile index 6cb1176..6605879 100644 --- a/Makefile +++ b/Makefile @@ -1,85 +1,45 @@ -T=openssl - -PREFIX ?=/usr/local -LIB_OPTION ?= -shared - -#Lua auto detect -LUA_VERSION ?= $(shell pkg-config luajit --print-provides) -ifeq ($(LUA_VERSION),) ############ Not use luajit -LUAV ?= $(shell lua -e "_,_,v=string.find(_VERSION,'Lua (.+)');print(v)") -LUA_CFLAGS ?= -I$(PREFIX)/include/lua$(LUAV) -LUA_LIBS ?= -L$(PREFIX)/lib -LUA_LIBDIR ?= $(PREFIX)/lib/lua/$(LUAV) -else -LUAV ?= $(shell lua -e "_,_,v=string.find(_VERSION,'Lua (.+)');print(v)") -LUA_CFLAGS ?= $(shell pkg-config luajit --cflags) -LUA_LIBS ?= $(shell pkg-config luajit --libs) -LUA_LIBDIR ?= $(PREFIX)/lib/lua/$(LUAV) -endif - -#OS auto detect -SYS := $(shell gcc -dumpmachine) - -ifneq (, $(findstring linux, $(SYS))) -# Do linux things -LDFLAGS = -fPIC -lrt -ldl -OPENSSL_LIBS ?= $(shell pkg-config openssl --libs) -OPENSSL_CFLAGS ?= $(shell pkg-config openssl --cflags) -CFLAGS = -fPIC $(OPENSSL_CFLAGS) $(LUA_CFLAGS) -endif -ifneq (, $(findstring apple, $(SYS))) -# Do darwin things -LDFLAGS = -fPIC -lrt -ldl -OPENSSL_LIBS ?= $(shell pkg-config openssl --libs) -OPENSSL_CFLAGS ?= $(shell pkg-config openssl --cflags) -CFLAGS = -fPIC $(OPENSSL_CFLAGS) $(LUA_CFLAGS) -endif -ifneq (, $(findstring mingw, $(SYS))) -# Do mingw things -V = $(shell lua -e "v=string.gsub('$(LUAV)','%.','');print(v)") -LDFLAGS = -mwindows -lcrypt32 -lssl -lcrypto -lws2_32 $(PREFIX)/bin/lua$(V).dll -LUA_CFLAGS = -DLUA_LIB -DLUA_BUILD_AS_DLL -I$(PREFIX)/include/ -CFLAGS = $(OPENSSL_CFLAGS) $(LUA_CFLAGS) -endif -ifneq (, $(findstring cygwin, $(SYS))) -# Do cygwin things -OPENSSL_LIBS ?= $(shell pkg-config openssl --libs) -OPENSSL_CFLAGS ?= $(shell pkg-config openssl --cflags) -CFLAGS = -fPIC $(OPENSSL_CFLAGS) $(LUA_CFLAGS) -endif -#custome config -ifeq (.config, $(wildcard .config)) -include .config -endif - -LIBNAME= $T.so.$V - -#LIB_OPTION= -bundle -undefined dynamic_lookup #for MacOS X - -# Compilation directives -WARN_MOST = -Wall -W -Waggregate-return -Wcast-align -Wmissing-prototypes -Wnested-externs -Wshadow -Wwrite-strings -pedantic -WARN = -Wall -Wno-unused-value -WARN_MIN = -CFLAGS += $(WARN_MIN) -DPTHREADS -CC= gcc -g $(CFLAGS) -Ideps - - -OBJS=src/asn1.o src/auxiliar.o src/bio.o src/cipher.o src/cms.o src/compat.o src/crl.o src/csr.o src/dh.o src/digest.o src/dsa.o \ -src/ec.o src/engine.o src/hmac.o src/lbn.o src/lhash.o src/misc.o src/ocsp.o src/openssl.o src/ots.o src/pkcs12.o src/pkcs7.o \ -src/pkey.o src/rsa.o src/ssl.o src/th-lock.o src/util.o src/x509.o src/xattrs.o src/xexts.o src/xname.o src/xstore.o src/xalgor.o src/callback.o - -.c.o: - $(CC) -c -o $@ $? - -all: $T.so - echo $(SYS) - -$T.so: $(OBJS) - MACOSX_DEPLOYMENT_TARGET="10.3"; export MACOSX_DEPLOYMENT_TARGET; $(CC) $(CFLAGS) $(LIB_OPTION) -o $T.so $(OBJS) $(OPENSSL_LIBS) $(LUA_LIBS) $(LDFLAGS) - -install: all - mkdir -p $(LUA_LIBDIR) - cp $T.so $(LUA_LIBDIR) - -clean: - rm -f $T.so $(OBJS) +.PHONY: install clean + +PKGC ?= pkg-config + +LIBNAME = openssl.so +LIB_OPTION = -shared + +# lua's package config can be under various names +LUAPKGC := $(shell for pc in lua lua5.1 lua5.2 lua5.3; do \ + $(PKGC) --exists $$pc && echo $$pc && break; \ + done) + +BUILD_DIR = $(shell pwd) + +# LUA include/libraries build flags +LUA_LIBDIR := $(shell $(PKGC) --variable=libdir $(LUAPKGC)) +LUA_CFLAGS := $(shell $(PKGC) --cflags $(LUAPKGC)) +LUA_LIBS := $(shell $(PKGC) --libs-only-L $(LUAPKGC)) + +# openssl include/libraries build flags +OPENSSL_LIBS = $(shell $(PKGC) openssl --libs) +OPENSSL_CFLAGS = $(shell $(PKGC) openssl --cflags) + +# openssl include/libraries build flags +LOCAL_INCLUDE = -I$(BUILD_DIR)/deps + +CFLAGS += -fPIC -DPTHREADS -g $(LOCAL_INCLUDE) $(OPENSSL_CFLAGS) $(LUA_CFLAGS) +LDFLAGS += -lrt -ldl $(OPENSSL_LIBS) $(LUA_LIBS) + +OBJS = src/asn1.o src/auxiliar.o src/bio.o src/cipher.o src/cms.o src/compat.o src/crl.o src/csr.o src/dh.o src/digest.o src/dsa.o src/ec.o src/engine.o src/hmac.o src/lbn.o src/lhash.o src/misc.o src/ocsp.o src/openssl.o src/ots.o src/pkcs12.o src/pkcs7.o src/pkey.o src/rsa.o src/ssl.o src/th-lock.o src/util.o src/x509.o src/xattrs.o src/xexts.o src/xname.o src/xstore.o src/xalgor.o src/callback.o + +all: clean $(LIBNAME) + +$(LIBNAME): $(OBJS) + $(CC) $(LDFLAGS) $(LIB_OPTION) $(OBJS) -o $@ + +%.o: %.c + $(CC) $(CFLAGS) -c $< -o $@ + +install: all + mkdir -p $(LUA_LIBDIR) + cp $(LIBNAME) $(LUA_LIBDIR) + +clean: + rm -f $(LIBNAME) $(OBJS)