Radix cross Linux

The main Radix cross Linux repository contains the build scripts of packages, which have the most complete and common functionality for desktop machines

452 Commits   2 Branches   1 Tag
     5         kx #
     5         kx # Argon2 reference source code package - reference C implementations
     5         kx #
     5         kx # Copyright 2015
     5         kx # Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves
     5         kx #
     5         kx # You may use this work under the terms of a Creative Commons CC0 1.0
     5         kx # License/Waiver or the Apache Public License 2.0, at your option. The terms of
     5         kx # these licenses can be found at:
     5         kx #
     5         kx # - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
     5         kx # - Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0
     5         kx #
     5         kx # You should have received a copy of both of these licenses along with this
     5         kx # software. If not, they may be obtained at the above URLs.
     5         kx #
     5         kx 
     5         kx RUN = argon2
     5         kx BENCH = bench
     5         kx GENKAT = genkat
     5         kx ARGON2_VERSION ?= ZERO
     5         kx 
     5         kx # installation parameters for staging area and final installation path
     5         kx # Note; if Linux and not Debian/Ubuntu version also add lib override to make command-line
     5         kx #       for RedHat/Fedora, add: LIBRARY_REL=lib64
     5         kx DESTDIR ?=
     5         kx PREFIX ?= /usr
     5         kx 
     5         kx # Increment on an ABI breaking change
     5         kx ABI_VERSION = 1
     5         kx 
     5         kx DIST = phc-winner-argon2
     5         kx 
     5         kx SRC = src/argon2.c src/core.c src/blake2/blake2b.c src/thread.c src/encoding.c
     5         kx SRC_RUN = src/run.c
     5         kx SRC_BENCH = src/bench.c
     5         kx SRC_GENKAT = src/genkat.c
     5         kx OBJ = $(SRC:.c=.o)
     5         kx 
     5         kx CFLAGS += -std=c89 -Iinclude -Isrc
     5         kx 
     5         kx ifeq ($(NO_THREADS), 1)
     5         kx CFLAGS += -DARGON2_NO_THREADS
     5         kx else
     5         kx CFLAGS += -pthread
     5         kx endif
     5         kx 
     5         kx CI_CFLAGS := $(CFLAGS) -Werror=declaration-after-statement -D_FORTIFY_SOURCE=2 \
     5         kx 				-Wextra -Wno-type-limits -Werror -coverage -DTEST_LARGE_RAM
     5         kx 
     5         kx $(info Building without optimizations)
     5         kx 	SRC += src/ref.c
     5         kx 
     5         kx BUILD_PATH := $(shell pwd)
     5         kx KERNEL_NAME := $(shell uname -s)
     5         kx MACHINE_NAME := $(shell uname -m)
     5         kx 
     5         kx LIB_NAME = argon2
     5         kx PC_NAME = lib$(LIB_NAME).pc
     5         kx PC_SRC = $(PC_NAME).in
     5         kx 
     5         kx ifeq ($(KERNEL_NAME), Linux)
     5         kx 	LIB_EXT := so.$(ABI_VERSION)
     5         kx 	LIB_CFLAGS := -shared -fPIC -fvisibility=hidden -DA2_VISCTL=1
     5         kx 	SO_LDFLAGS := -Wl,-soname,lib$(LIB_NAME).$(LIB_EXT)
     5         kx 	LINKED_LIB_EXT := so
     5         kx 	PC_EXTRA_LIBS ?= -lrt -ldl
     5         kx endif
     5         kx ifeq ($(KERNEL_NAME), $(filter $(KERNEL_NAME),DragonFly FreeBSD NetBSD OpenBSD))
     5         kx 	LIB_EXT := so
     5         kx 	LIB_CFLAGS := -shared -fPIC
     5         kx 	PC_EXTRA_LIBS ?=
     5         kx endif
     5         kx ifeq ($(KERNEL_NAME), Darwin)
     5         kx 	LIB_EXT := $(ABI_VERSION).dylib
     5         kx 	LIB_CFLAGS := -dynamiclib -install_name @rpath/lib$(LIB_NAME).$(LIB_EXT)
     5         kx 	LINKED_LIB_EXT := dylib
     5         kx 	PC_EXTRA_LIBS ?=
     5         kx endif
     5         kx ifeq ($(findstring CYGWIN, $(KERNEL_NAME)), CYGWIN)
     5         kx 	LIB_EXT := dll
     5         kx 	LIB_CFLAGS := -shared -Wl,--out-implib,lib$(LIB_NAME).$(LIB_EXT).a
     5         kx 	PC_EXTRA_LIBS ?=
     5         kx endif
     5         kx ifeq ($(findstring MINGW, $(KERNEL_NAME)), MINGW)
     5         kx 	LIB_EXT := dll
     5         kx 	LIB_CFLAGS := -shared -Wl,--out-implib,lib$(LIB_NAME).$(LIB_EXT).a
     5         kx 	PC_EXTRA_LIBS ?=
     5         kx endif
     5         kx ifeq ($(findstring MSYS, $(KERNEL_NAME)), MSYS)
     5         kx 	LIB_EXT := dll
     5         kx 	LIB_CFLAGS := -shared -Wl,--out-implib,lib$(LIB_NAME).$(LIB_EXT).a
     5         kx 	PC_EXTRA_LIBS ?=
     5         kx endif
     5         kx ifeq ($(KERNEL_NAME), SunOS)
     5         kx 	CC := gcc
     5         kx 	CFLAGS += -D_REENTRANT
     5         kx 	LIB_EXT := so
     5         kx 	LIB_CFLAGS := -shared -fPIC
     5         kx 	PC_EXTRA_LIBS ?=
     5         kx endif
     5         kx 
     5         kx ifeq ($(KERNEL_NAME), Linux)
     5         kx ifeq ($(CC), clang)
     5         kx 	CI_CFLAGS += -fsanitize=address -fsanitize=undefined
     5         kx endif
     5         kx endif
     5         kx 
     5         kx LIB_SH := lib$(LIB_NAME).$(LIB_EXT)
     5         kx LIB_ST := lib$(LIB_NAME).a
     5         kx 
     5         kx ifdef LINKED_LIB_EXT
     5         kx LINKED_LIB_SH := lib$(LIB_NAME).$(LINKED_LIB_EXT)
     5         kx endif
     5         kx 
     5         kx 
     5         kx LIBRARIES = $(LIB_SH) $(LIB_ST)
     5         kx HEADERS = include/argon2.h
     5         kx 
     5         kx INSTALL = install
     5         kx 
     5         kx # relative paths for different OS
     5         kx ifeq ($(KERNEL_NAME), $(filter $(KERNEL_NAME),DragonFly FreeBSD))
     5         kx 
     5         kx # default for FreeBSD
     5         kx BINARY_REL ?= bin
     5         kx INCLUDE_REL ?= include
     5         kx LIBRARY_REL ?= lib
     5         kx PKGCONFIG_REL ?= libdata
     5         kx 
     5         kx else ifeq ($(KERNEL_NAME)-$(MACHINE_NAME), Linux-x86_64)
     5         kx 
     5         kx # default for Debian/Ubuntu x86_64
     5         kx BINARY_REL ?= bin
     5         kx INCLUDE_REL ?= include
     5         kx LIBRARY_REL ?= lib/x86_64-linux-gnu
     5         kx PKGCONFIG_REL ?= $(LIBRARY_REL)
     5         kx 
     5         kx else
     5         kx 
     5         kx # NetBSD, ... and Linux64/Linux32 variants that use plain lib directory
     5         kx BINARY_REL ?= bin
     5         kx INCLUDE_REL ?= include
     5         kx LIBRARY_REL ?= lib
     5         kx PKGCONFIG_REL ?= $(LIBRARY_REL)
     5         kx 
     5         kx endif
     5         kx 
     5         kx # absolute paths to staging area
     5         kx INST_INCLUDE = $(DESTDIR)$(PREFIX)/$(INCLUDE_REL)
     5         kx INST_LIBRARY = $(DESTDIR)$(PREFIX)/$(LIBRARY_REL)
     5         kx INST_BINARY = $(DESTDIR)$(PREFIX)/$(BINARY_REL)
     5         kx INST_PKGCONFIG = $(DESTDIR)$(PREFIX)/$(PKGCONFIG_REL)/pkgconfig
     5         kx 
     5         kx # main target
     5         kx .PHONY: all
     5         kx all: $(RUN) libs
     5         kx 
     5         kx .PHONY: libs
     5         kx libs: $(LIBRARIES) $(PC_NAME)
     5         kx 
     5         kx $(RUN):	        $(SRC) $(SRC_RUN)
     5         kx 		$(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@
     5         kx 
     5         kx $(BENCH):       $(SRC) $(SRC_BENCH)
     5         kx 		$(CC) $(CFLAGS) $^ -o $@
     5         kx 
     5         kx $(GENKAT):      $(SRC) $(SRC_GENKAT)
     5         kx 		$(CC) $(CFLAGS) $^ -o $@ -DGENKAT
     5         kx 
     5         kx $(LIB_SH): 	$(SRC)
     5         kx 		$(CC) $(CFLAGS) $(LIB_CFLAGS) $(LDFLAGS) $(SO_LDFLAGS) $^ -o $@
     5         kx 
     5         kx $(LIB_ST): 	$(OBJ)
     5         kx 		ar rcs $@ $^
     5         kx 
     5         kx .PHONY: clean
     5         kx clean:
     5         kx 		rm -f '$(RUN)' '$(BENCH)' '$(GENKAT)'
     5         kx 		rm -f '$(LIB_SH)' '$(LIB_ST)' kat-argon2* '$(PC_NAME)'
     5         kx 		rm -f testcase
     5         kx 		rm -rf *.dSYM
     5         kx 		cd src/ && rm -f *.o
     5         kx 		cd src/blake2/ && rm -f *.o
     5         kx 		cd kats/ &&  rm -f kat-* diff* run_* make_*
     5         kx 
     5         kx 
     5         kx # all substitutions to pc template
     5         kx SED_COMMANDS  = /^\#\#.*$$/d;
     5         kx SED_COMMANDS += s\#@PREFIX@\#$(PREFIX)\#g;
     5         kx SED_COMMANDS += s\#@EXTRA_LIBS@\#$(PC_EXTRA_LIBS)\#g;
     5         kx SED_COMMANDS += s\#@UPSTREAM_VER@\#$(ARGON2_VERSION)\#g;
     5         kx SED_COMMANDS += s\#@HOST_MULTIARCH@\#$(LIBRARY_REL)\#g;
     5         kx SED_COMMANDS += s\#@INCLUDE@\#$(INCLUDE_REL)\#g;
     5         kx 
     5         kx # substitute PREFIX and PC_EXTRA_LIBS into pkgconfig pc file
     5         kx $(PC_NAME): $(PC_SRC)
     5         kx 		sed '$(SED_COMMANDS)' < '$(PC_SRC)' > '$@'
     5         kx 
     5         kx 
     5         kx .PHONY: dist
     5         kx dist:
     5         kx 		cd ..; \
     5         kx 		tar -c --exclude='.??*' -z -f $(DIST)-`date "+%Y%m%d"`.tgz $(DIST)/*
     5         kx 
     5         kx .PHONY: test
     5         kx test:           $(SRC) src/test.c
     5         kx 		$(CC) $(CFLAGS)  -Wextra -Wno-type-limits $^ -o testcase
     5         kx 		@sh kats/test.sh
     5         kx 		./testcase
     5         kx 
     5         kx .PHONY: testci
     5         kx testci:         $(SRC) src/test.c
     5         kx 		$(CC) $(CI_CFLAGS) $^ -o testcase
     5         kx 		@sh kats/test.sh
     5         kx 		./testcase
     5         kx 
     5         kx 
     5         kx .PHONY: format
     5         kx format:
     5         kx 		clang-format -style="{BasedOnStyle: llvm, IndentWidth: 4}" \
     5         kx 			-i include/*.h src/*.c src/*.h src/blake2/*.c src/blake2/*.h
     5         kx 
     5         kx .PHONY: install
     5         kx install: $(RUN) libs
     5         kx 	$(INSTALL) -d $(INST_INCLUDE)
     5         kx 	$(INSTALL) -m 0644 $(HEADERS) $(INST_INCLUDE)
     5         kx 	$(INSTALL) -d $(INST_LIBRARY)
     5         kx 	$(INSTALL) -m 0644 $(LIBRARIES) $(INST_LIBRARY)
     5         kx ifdef LINKED_LIB_SH
     5         kx 	cd $(INST_LIBRARY) && ln -s $(notdir $(LIB_SH) $(LINKED_LIB_SH))
     5         kx endif
     5         kx 	$(INSTALL) -d $(INST_BINARY)
     5         kx 	$(INSTALL) $(RUN) $(INST_BINARY)
     5         kx 	$(INSTALL) -d $(INST_PKGCONFIG)
     5         kx 	$(INSTALL) -m 0644 $(PC_NAME) $(INST_PKGCONFIG)
     5         kx 
     5         kx .PHONY: uninstall
     5         kx uninstall:
     5         kx 	cd $(INST_INCLUDE) && rm -f $(notdir $(HEADERS))
     5         kx 	cd $(INST_LIBRARY) && rm -f $(notdir $(LIBRARIES) $(LINKED_LIB_SH))
     5         kx 	cd $(INST_BINARY) && rm -f $(notdir $(RUN))
     5         kx 	cd $(INST_PKG_CONFIG) && rm -f $(notdir $(PC_NAME))