File

util-src/Makefile.win @ 11748:88ba05494d17 0.11

makefile: fix prosody.version target POSIX is quite explicit regarding the precedence of AND-OR lists [0]: > The operators "&&" and "||" shall have equal precedence and shall be > evaluated with left associativity. For example, both of the following > commands write solely `bar` to standard output: > false && echo foo || echo bar > true || echo foo && echo bar Given that, `prosody.version` target behaves as ((((((test -f prosody.release && cp ...) || test -f ...) && sed ...) || test -f ...) && hexdump ...) || echo unknown > $@) In the case of release tarballs, `prosody.release` does exist, so the first AND pair is executed. Given that it's successful, then the first `test -f` in the OR pair is ignored, and instead the `sed` in the AND pair is executed. `sed` success, as `.hg_archival.txt` exists, making the second `test -f` in the OR pair ignored, and `hexdump` in the AND pair is executed. Now, given that `.hg` doesn't exist, it fails, so the last `echo` is run, overwriting `prosody.version` with `unknown`. This can be worked around placing `()` around the AND pairs. Decided to use conditionals instead, as I think they better communicate the intention of the block. [0]: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09_03
author Lucas <lucas@sexy.is>
date Sun, 15 Aug 2021 04:10:36 +0000
parent 2063:e89594a1bf4a
line wrap: on
line source


LUA_PATH=$(LUA_DEV)
IDN_PATH=..\..\libidn-1.15
OPENSSL_PATH=..\..\openssl-0.9.8k

LUA_INCLUDE=$(LUA_PATH)\include
LUA_LIB=$(LUA_PATH)\lib\lua5.1.lib

IDN_LIB=$(IDN_PATH)\win32\lib\libidn.lib
IDN_INCLUDE1=$(IDN_PATH)\lib
IDN_INCLUDE2=$(IDN_PATH)\win32\include
OPENSSL_LIB=$(OPENSSL_PATH)\out32dll\libeay32.lib
OPENSSL_INCLUDE=$(OPENSSL_PATH)\include

CL=cl /LD /MD /nologo

all: encodings.dll hashes.dll windows.dll

install: encodings.dll hashes.dll windows.dll
	copy /Y *.dll ..\util\

clean:
	del encodings.dll encodings.exp encodings.lib encodings.obj encodings.dll.manifest
	del hashes.dll hashes.exp hashes.lib hashes.obj hashes.dll.manifest
	del windows.dll windows.exp windows.lib windows.obj windows.dll.manifest

encodings.dll: encodings.c
	$(CL) encodings.c /I"$(LUA_INCLUDE)" /I"$(IDN_INCLUDE1)" /I"$(IDN_INCLUDE2)" /link "$(LUA_LIB)" "$(IDN_LIB)" /export:luaopen_util_encodings
	del encodings.exp encodings.lib encodings.obj encodings.dll.manifest

hashes.dll: hashes.c
	$(CL) hashes.c /I"$(LUA_INCLUDE)" /I"$(OPENSSL_INCLUDE)" /link "$(LUA_LIB)" "$(OPENSSL_LIB)" /export:luaopen_util_hashes
	del hashes.exp hashes.lib hashes.obj hashes.dll.manifest

windows.dll: windows.c
	$(CL) windows.c /I"$(LUA_INCLUDE)" /link "$(LUA_LIB)" dnsapi.lib /export:luaopen_util_windows
	del windows.exp windows.lib windows.obj windows.dll.manifest