diff --git a/build/apple-osx.mk b/build/apple-osx.mk index e1750e8ae..bcae4d549 100644 --- a/build/apple-osx.mk +++ b/build/apple-osx.mk @@ -17,9 +17,10 @@ endif all: ${BUILD_DEPS} zenroom.command zencode-exec.command -zenroom.command: ${ZEN_SOURCES} src/cli-zenroom.o +cli_sources := src/cli-zenroom.o src/repl.o +zenroom.command: ${ZEN_SOURCES} ${cli_sources} $(info === Building the zenroom CLI) - ${zenroom_cc} ${cflags} ${ZEN_SOURCES} src/cli-zenroom.o -o $@ ${ldflags} ${ldadd} + ${zenroom_cc} ${cflags} ${ZEN_SOURCES} ${cli_sources} -o $@ ${ldflags} ${ldadd} zencode-exec.command: ${ZEN_SOURCES} src/zencode-exec.o $(info === Building the zencode-exec utility) diff --git a/build/init.mk b/build/init.mk index a3cfe7d34..2ea1ebfa3 100644 --- a/build/init.mk +++ b/build/init.mk @@ -8,7 +8,7 @@ ZEN_SOURCES := \ src/lua_functions.o src/lua_modules.o src/lualibs_detected.o src/lua_shims.o \ src/encoding.o src/base58.o src/rmd160.o src/segwit_addr.o \ src/zen_memory.o src/mutt_sprintf.o \ - src/zen_io.o src/zen_parse.o src/repl.o src/zen_config.o \ + src/zen_io.o src/zen_parse.o src/zen_config.o \ src/zen_octet.o src/zen_ecp.o src/zen_ecp2.o src/zen_big.o \ src/zen_fp12.o src/zen_random.o src/zen_hash.o \ src/zen_ecdh_factory.o src/zen_ecdh.o \ diff --git a/build/linux.mk b/build/linux.mk index a600bc53c..8c4d668d7 100644 --- a/build/linux.mk +++ b/build/linux.mk @@ -1,142 +1,56 @@ -musl: ldadd += /usr/lib/${ARCH}-linux-musl/libc.a -musl: ${BUILDS} - CC="${gcc}" AR="${ar}" CFLAGS="${cflags}" LDFLAGS="${ldflags}" LDADD="${ldadd}" \ - $(MAKE) -C src musl - @cp -v src/zenroom build/zenroom - -musl-local: ldadd += /usr/local/musl/lib/libc.a -musl-local: ${BUILDS} - CC="${gcc}" AR="${ar}" CFLAGS="${cflags}" LDFLAGS="${ldflags}" LDADD="${ldadd}" \ - $(MAKE) -C src musl - -musl-system: gcc := gcc -musl-system: ldadd += -lm -musl-system: ${BUILDS} - CC="${gcc}" AR="${ar}" CFLAGS="${cflags}" LDFLAGS="${ldflags}" LDADD="${ldadd}" \ - $(MAKE) -C src musl - -bsd: gcc := clang -bsd: cflags := -O3 ${cflags_protection} -fPIE -fPIC -DARCH_BSD -bsd: ldadd += -lm -bsd: ${BUILDS} - CC="${gcc}" AR="${ar}" CFLAGS="${cflags}" LDFLAGS="${ldflags}" LDADD="${ldadd}" \ - $(MAKE) -C src linux - @cp -v src/zenroom build/zenroom - - -linux: cflags := -O2 ${cflags_protection} -fPIE -fPIC -linux: ${BUILDS} - CC="${gcc}" AR="${ar}" CFLAGS="${cflags}" LDFLAGS="${ldflags}" LDADD="${ldadd}" \ - $(MAKE) -C src linux - @cp -v src/zenroom build/zenroom - -linux-raspi: ${BUILDS} - CC="${gcc}" AR="${ar}" CFLAGS="${cflags}" LDFLAGS="${ldflags}" LDADD="${ldadd}" \ - $(MAKE) -C src linux - @cp -v src/zenroom build/zenroom - -android-arm android-x86 android-aarch64 java-x86_64: ${BUILDS} - CC="${gcc}" CFLAGS="${cflags}" LDFLAGS="${ldflags}" LDADD="${ldadd}" \ - LD="${ld}" RANLIB="${ranlib}" AR="${ar}" \ - $(MAKE) -C src $@ - -cortex-arm: ldflags += -Wl,-Map=./zenroom.map -cortex-arm: ${BUILDS} - CC="${gcc}" AR="${ar}" OBJCOPY="${objcopy}" CFLAGS="${cflags}" LDFLAGS="${ldflags}" LDADD="${ldadd}" \ - $(MAKE) -C src arm - -aarch64: ldflags += -Wl,-Map=./zenroom.map -aarch64: ${BUILDS} - CC="${gcc}" AR="${ar}" OBJCOPY="${objcopy}" CFLAGS="${cflags}" LDFLAGS="${ldflags}" LDADD="${ldadd}" \ - $(MAKE) -C src aarch64 - -linux-riscv64: ${BUILDS} - CC="${gcc}" AR="${ar}" CFLAGS="${cflags}" LDFLAGS="${ldflags}" LDADD="${ldadd}" \ - $(MAKE) -C src linux - @cp -v src/zenroom build/zenroom - -linux-debug: ${BUILDS} - CC="${gcc}" AR="${ar}" CFLAGS="${cflags}" LDFLAGS="${ldflags}" LDADD="${ldadd}" \ - $(MAKE) -C src linux-debug - @cp -v src/zenroom build/zenroom - -linux-asan: ${BUILDS} - CC="${gcc}" AR="${ar}" CFLAGS="${cflags}" LDFLAGS="${ldflags}" LDADD="${ldadd}" \ - $(MAKE) -C src linux-debug - @cp -v src/zenroom build/zenroom - -linux-debug-ccache: ${BUILDS} - CC="${gcc}" AR="${ar}" CFLAGS="${cflags}" LDFLAGS="${ldflags}" LDADD="${ldadd}" \ - $(MAKE) -C src linux-debug - @cp -v src/zenroom build/zenroom - -linux-profile: ${BUILDS} - CC="${gcc}" AR="${ar}" CFLAGS="${cflags}" LDFLAGS="${ldflags}" LDADD="${ldadd}" \ - $(MAKE) -C src linux - @cp -v src/zenroom build/zenroom - -linux-c++: linux - -linux-jemalloc: linux - -linux-debug-jemalloc: cflags += -O1 -ggdb ${cflags_protection} -DDEBUG=1 -Wstack-usage=4096 -linux-debug-jemalloc: linux - -# linux-clang: gcc := clang -linux-clang: linux - -linux-clang-debug: gcc := clang -linux-clang-debug: linux - -linux-sanitizer: gcc := clang -linux-sanitizer: cflags := -O1 -ggdb ${cflags_protection} -DDEBUG=1 -linux-sanitizer: cflags += -fsanitize=address -fno-omit-frame-pointer -linux-sanitizer: linux - ASAN_OPTIONS=verbosity=1:log_threads=1 \ - ASAN_SYMBOLIZER_PATH=/usr/bin/asan_symbolizer \ - ASAN_OPTIONS=abort_on_error=1 \ - ./src/zenroom -i -d - -linux-lib: cflags := -O3 ${cflags_protection} -fPIE -fPIC -linux-lib: cflags += -shared -DLIBRARY -linux-lib: ${BUILDS} - CC="${gcc}" CFLAGS="${cflags}" LDFLAGS="${ldflags}" LDADD="${ldadd}" \ - $(MAKE) -C src linux-lib - -musl-lib: ldadd += /usr/lib/${ARCH}-linux-musl/libc.a -musl-lib: cflags += -DLIBRARY -musl-lib: ${BUILDS} - CC="${gcc}" CFLAGS="${cflags}" LDFLAGS="${ldflags}" LDADD="${ldadd}" \ - ECP=${ecp_curve} ECDH=${ecdh_curve} MILIB=${milib} \ - $(MAKE) -C src lib-static - -linux-lib-static: cflags := -O3 ${cflags_protection} -fPIE -fPIC -linux-lib-static: cflags += -DLIBRARY -linux-lib-static: ${BUILDS} - CC="${gcc}" CFLAGS="${cflags}" LDFLAGS="${ldflags}" LDADD="${ldadd}" \ - ECP=${ecp_curve} ECDH=${ecdh_curve} MILIB=${milib} \ - $(MAKE) -C src lib-static - -linux-lib-debug: cflags += -shared -DLIBRARY -linux-lib-debug: ${BUILDS} - CC="${gcc}" CFLAGS="${cflags}" LDFLAGS="${ldflags}" LDADD="${ldadd}" \ - $(MAKE) -C src linux-lib - -linux-python3: linux-lib - @cp -v ${pwd}/src/libzenroom-${ARCH}.so \ - ${pwd}/bindings/python3/zenroom/libzenroom.so - -linux-go: - $(MAKE) meson - cp meson/libzenroom.so bindings/golang/zenroom/lib - # cd bindings/golang/zenroom && $(MAKE) test - -linux-rust: CMD ?= build -linux-rust: - $(MAKE) meson - [ -d bindings/rust/clib ] || mkdir bindings/rust/clib - cp meson/libzenroom.a bindings/rust/clib - cp lib/milagro-crypto-c/build/lib/* bindings/rust/clib - cp meson/*.a bindings/rust/clib - cp src/zenroom.h bindings/rust - cd bindings/rust && cargo ${CMD} +## Initialize build defaults +include build/init.mk + +COMPILER ?= gcc + +cc := ${COMPILER} +quantum_proof_cc := ${cc} +ed25519_cc := ${cc} +libcc_cc := ${cc} +lua_cc := ${cc} +zenroom_cc := ${cc} + +## Additional dependencies +BUILD_DEPS += tinycc mimalloc +ldadd += -lm +ldadd += ${pwd}/lib/tinycc/libtcc.a +ldadd += ${pwd}/lib/mimalloc/build/libmimalloc-static.a + +cflags += -fPIC -D'ARCH="LINUX"' -DARCH_LINUX +system := Linux + +ifdef CCACHE + milagro_cmake_flags += -DCMAKE_C_COMPILER_LAUNCHER=ccache + quantum_proof_cc := ccache ${cc} + ed25519_cc := ccache ${cc} + libcc_cc := ccache ${cc} + lua_cc := ccache ${cc} + zenroom_cc := ccache ${cc} +endif +# default is DEBUG +ifdef RELEASE + cflags += -O3 ${cflags_protection} +else + cflags += ${cflags_debug} +endif + +all: ${BUILD_DEPS} zenroom zencode-exec zencc + +cli_sources := src/cli-zenroom.o src/repl.o +zenroom: ${ZEN_SOURCES} ${cli_sources} + $(info === Building the zenroom CLI) + ${zenroom_cc} ${cflags} ${ZEN_SOURCES} ${cli_sources} \ + -o $@ ${ldflags} ${ldadd} -lreadline + +zencode-exec: ${ZEN_SOURCES} src/zencode-exec.o + $(info === Building the zencode-exec utility) + ${zenroom_cc} ${cflags} ${ZEN_SOURCES} src/zencode-exec.o \ + -o $@ ${ldflags} ${ldadd} + +zencc: ldadd += ${pwd}/lib/tinycc/libtcc.a +zencc: ${ZEN_SOURCES} src/zencc.o src/cflag.o + $(info === Building the zencode-exec utility) + ${zenroom_cc} ${cflags} ${ZEN_SOURCES} src/zencc.o src/cflag.o \ + -o $@ ${ldflags} ${ldadd} + +include build/deps.mk diff --git a/build/musl-linux.mk b/build/musl-linux.mk index 6d460c0ae..3d2072a7d 100644 --- a/build/musl-linux.mk +++ b/build/musl-linux.mk @@ -32,9 +32,10 @@ endif all: ${BUILD_DEPS} zenroom zencode-exec zencc -zenroom: ${ZEN_SOURCES} src/cli-zenroom.o +cli_sources := src/cli-zenroom.o src/repl.o +zenroom: ${ZEN_SOURCES} ${cli_sources} $(info === Building the zenroom CLI) - ${zenroom_cc} ${cflags} ${ZEN_SOURCES} src/cli-zenroom.o \ + ${zenroom_cc} ${cflags} ${ZEN_SOURCES} ${cli_sources} \ -o $@ ${ldflags} ${ldadd} zencode-exec: ${ZEN_SOURCES} src/zencode-exec.o diff --git a/build/win-exe.mk b/build/win-exe.mk index fac776145..f4817dbc1 100644 --- a/build/win-exe.mk +++ b/build/win-exe.mk @@ -35,9 +35,10 @@ all: ${BUILD_DEPS} stamp-exe-windres zenroom.exe zencode-exec.exe stamp-exe-windres: sh build/stamp-exe.sh -zenroom.exe: ${ZEN_SOURCES} src/cli-zenroom.o +cli_sources := src/cli-zenroom.o src/repl.o +zenroom.exe: ${ZEN_SOURCES} ${cli_sources} $(info === Linking Windows zenroom.exe) - ${cc} ${cflags} ${ZEN_SOURCES} src/cli-zenroom.o \ + ${cc} ${cflags} ${ZEN_SOURCES} ${cli_sources} \ -o $@ zenroom.res ${ldflags} ${ldadd} zencode-exec.exe: ${ZEN_SOURCES} src/zencode-exec.o