Makefile 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400
  1. LBITS := $(shell getconf LONG_BIT)
  2. MARCH ?= $(LBITS)
  3. PREFIX ?= /usr/local
  4. INSTALL_DIR ?= $(PREFIX)
  5. INSTALL_BIN_DIR ?= $(PREFIX)/bin
  6. INSTALL_LIB_DIR ?= $(PREFIX)/lib
  7. INSTALL_INCLUDE_DIR ?= $(PREFIX)/include
  8. LIBS=fmt sdl ssl openal ui uv mysql sqlite heaps
  9. ARCH ?= $(shell uname -m)
  10. CFLAGS = -Wall -O3 -I src -std=c11 -D LIBHL_EXPORTS -fvisibility=hidden
  11. LFLAGS = -L. -lhl
  12. EXTRA_LFLAGS ?=
  13. LIBFLAGS =
  14. LIBHL_LDLIBS = -lm -lpthread
  15. HLFLAGS = -ldl
  16. LIBEXT = so
  17. LIBTURBOJPEG = -lturbojpeg
  18. LHL_LINK_FLAGS =
  19. PCRE_FLAGS = -D PCRE2_CODE_UNIT_WIDTH=16
  20. ifdef WITH_SYSTEM_PCRE2
  21. LHL_LINK_FLAGS += -lpcre2-16
  22. else
  23. PCRE_FLAGS += -I include/pcre -D HAVE_CONFIG_H -D PCRE2_STATIC
  24. PCRE = include/pcre/pcre2_auto_possess.o include/pcre/pcre2_chartables.o include/pcre/pcre2_compile.o \
  25. include/pcre/pcre2_config.o include/pcre/pcre2_context.o include/pcre/pcre2_convert.o \
  26. include/pcre/pcre2_dfa_match.o include/pcre/pcre2_error.o include/pcre/pcre2_extuni.o \
  27. include/pcre/pcre2_find_bracket.o include/pcre/pcre2_jit_compile.o include/pcre/pcre2_maketables.o \
  28. include/pcre/pcre2_match_data.o include/pcre/pcre2_match.o include/pcre/pcre2_newline.o \
  29. include/pcre/pcre2_ord2utf.o include/pcre/pcre2_pattern_info.o include/pcre/pcre2_script_run.o \
  30. include/pcre/pcre2_serialize.o include/pcre/pcre2_string_utils.o include/pcre/pcre2_study.o \
  31. include/pcre/pcre2_substitute.o include/pcre/pcre2_substring.o include/pcre/pcre2_tables.o \
  32. include/pcre/pcre2_ucd.o include/pcre/pcre2_valid_utf.o include/pcre/pcre2_xclass.o
  33. endif
  34. RUNTIME = src/gc.o
  35. STD = src/std/array.o src/std/buffer.o src/std/bytes.o src/std/cast.o src/std/date.o src/std/error.o src/std/debug.o \
  36. src/std/file.o src/std/fun.o src/std/maps.o src/std/math.o src/std/obj.o src/std/random.o src/std/regexp.o \
  37. src/std/socket.o src/std/string.o src/std/sys.o src/std/types.o src/std/ucs2.o src/std/thread.o src/std/process.o \
  38. src/std/track.o
  39. HL = src/code.o src/jit.o src/main.o src/module.o src/debugger.o src/profile.o
  40. FMT_INCLUDE = -I include/mikktspace -I include/minimp3
  41. FMT = libs/fmt/fmt.o libs/fmt/sha1.o include/mikktspace/mikktspace.o libs/fmt/mikkt.o libs/fmt/dxt.o
  42. SDL = libs/sdl/sdl.o libs/sdl/gl.o
  43. OPENAL = libs/openal/openal.o
  44. SSL = libs/ssl/ssl.o
  45. ifdef SSL_STATIC
  46. SSL += include/mbedtls/library/aes.o include/mbedtls/library/aesce.o include/mbedtls/library/aesni.o \
  47. include/mbedtls/library/aria.o include/mbedtls/library/asn1parse.o include/mbedtls/library/asn1write.o \
  48. include/mbedtls/library/base64.o include/mbedtls/library/bignum.o include/mbedtls/library/bignum_core.o \
  49. include/mbedtls/library/bignum_mod.o include/mbedtls/library/bignum_mod_raw.o \
  50. include/mbedtls/library/block_cipher.o include/mbedtls/library/camellia.o include/mbedtls/library/ccm.o \
  51. include/mbedtls/library/chacha20.o include/mbedtls/library/chachapoly.o include/mbedtls/library/cipher.o \
  52. include/mbedtls/library/cipher_wrap.o include/mbedtls/library/cmac.o include/mbedtls/library/constant_time.o \
  53. include/mbedtls/library/ctr_drbg.o include/mbedtls/library/debug.o include/mbedtls/library/des.o \
  54. include/mbedtls/library/dhm.o include/mbedtls/library/ecdh.o include/mbedtls/library/ecdsa.o \
  55. include/mbedtls/library/ecjpake.o include/mbedtls/library/ecp.o include/mbedtls/library/ecp_curves.o \
  56. include/mbedtls/library/ecp_curves_new.o include/mbedtls/library/entropy.o include/mbedtls/library/entropy_poll.o \
  57. include/mbedtls/library/error.o include/mbedtls/library/gcm.o include/mbedtls/library/hkdf.o \
  58. include/mbedtls/library/hmac_drbg.o include/mbedtls/library/lmots.o include/mbedtls/library/lms.o \
  59. include/mbedtls/library/md.o include/mbedtls/library/md5.o include/mbedtls/library/memory_buffer_alloc.o \
  60. include/mbedtls/library/mps_reader.o include/mbedtls/library/mps_trace.o include/mbedtls/library/net_sockets.o \
  61. include/mbedtls/library/nist_kw.o include/mbedtls/library/oid.o include/mbedtls/library/padlock.o \
  62. include/mbedtls/library/pem.o include/mbedtls/library/pk.o include/mbedtls/library/pk_ecc.o \
  63. include/mbedtls/library/pk_wrap.o include/mbedtls/library/pkcs12.o include/mbedtls/library/pkcs5.o \
  64. include/mbedtls/library/pkcs7.o include/mbedtls/library/pkparse.o include/mbedtls/library/pkwrite.o \
  65. include/mbedtls/library/platform.o include/mbedtls/library/platform_util.o include/mbedtls/library/poly1305.o \
  66. include/mbedtls/library/psa_crypto.o include/mbedtls/library/psa_crypto_aead.o include/mbedtls/library/psa_crypto_cipher.o \
  67. include/mbedtls/library/psa_crypto_client.o include/mbedtls/library/psa_crypto_driver_wrappers_no_static.o \
  68. include/mbedtls/library/psa_crypto_ecp.o include/mbedtls/library/psa_crypto_ffdh.o \
  69. include/mbedtls/library/psa_crypto_hash.o include/mbedtls/library/psa_crypto_mac.o \
  70. include/mbedtls/library/psa_crypto_pake.o include/mbedtls/library/psa_crypto_rsa.o \
  71. include/mbedtls/library/psa_crypto_se.o include/mbedtls/library/psa_crypto_slot_management.o \
  72. include/mbedtls/library/psa_crypto_storage.o include/mbedtls/library/psa_its_file.o \
  73. include/mbedtls/library/psa_util.o include/mbedtls/library/ripemd160.o include/mbedtls/library/rsa.o \
  74. include/mbedtls/library/rsa_alt_helpers.o include/mbedtls/library/sha1.o include/mbedtls/library/sha256.o \
  75. include/mbedtls/library/sha3.o include/mbedtls/library/sha512.o include/mbedtls/library/ssl_cache.o \
  76. include/mbedtls/library/ssl_ciphersuites.o include/mbedtls/library/ssl_client.o include/mbedtls/library/ssl_cookie.o \
  77. include/mbedtls/library/ssl_debug_helpers_generated.o include/mbedtls/library/ssl_msg.o \
  78. include/mbedtls/library/ssl_ticket.o include/mbedtls/library/ssl_tls.o include/mbedtls/library/ssl_tls12_client.o \
  79. include/mbedtls/library/ssl_tls12_server.o include/mbedtls/library/ssl_tls13_client.o \
  80. include/mbedtls/library/ssl_tls13_generic.o include/mbedtls/library/ssl_tls13_keys.o \
  81. include/mbedtls/library/ssl_tls13_server.o include/mbedtls/library/threading.o include/mbedtls/library/timing.o \
  82. include/mbedtls/library/version.o include/mbedtls/library/version_features.o include/mbedtls/library/x509.o \
  83. include/mbedtls/library/x509_create.o include/mbedtls/library/x509_crl.o include/mbedtls/library/x509_crt.o \
  84. include/mbedtls/library/x509_csr.o include/mbedtls/library/x509write.o include/mbedtls/library/x509write_crt.o \
  85. include/mbedtls/library/x509write_csr.o
  86. SSL_CFLAGS = -I libs/ssl -I include/mbedtls/include -D MBEDTLS_USER_CONFIG_FILE=\"mbedtls_user_config.h\"
  87. else
  88. SSL_LDLIBS = -lmbedtls -lmbedx509 -lmbedcrypto
  89. endif
  90. UV = libs/uv/uv.o
  91. UI = libs/ui/ui_stub.o
  92. MYSQL = libs/mysql/socket.o libs/mysql/sha1.o libs/mysql/my_proto.o libs/mysql/my_api.o libs/mysql/mysql.o
  93. SQLITE = libs/sqlite/sqlite.o
  94. HEAPS = libs/heaps/mikkt.o libs/heaps/meshoptimizer.o libs/heaps/vhacd.o libs/heaps/renderdoc.o
  95. HEAPS += include/mikktspace/mikktspace.o
  96. HEAPS += include/meshoptimizer/allocator.o include/meshoptimizer/overdrawoptimizer.o \
  97. include/meshoptimizer/vcacheoptimizer.o include/meshoptimizer/clusterizer.o \
  98. include/meshoptimizer/quantization.o include/meshoptimizer/vertexcodec.o \
  99. include/meshoptimizer/indexcodec.o include/meshoptimizer/simplifier.o \
  100. include/meshoptimizer/vertexfilter.o include/meshoptimizer/indexgenerator.o \
  101. include/meshoptimizer/spatialorder.o include/meshoptimizer/vfetchanalyzer.o \
  102. include/meshoptimizer/stripifier.o include/meshoptimizer/vfetchoptimizer.o \
  103. include/meshoptimizer/overdrawanalyzer.o include/meshoptimizer/vcacheanalyzer.o
  104. HEAPS_CFLAGS = -I include/mikktspace -I include/meshoptimizer -I include/vhacd -I include/renderdoc
  105. LIB = ${PCRE} ${RUNTIME} ${STD}
  106. BOOT = src/_main.o
  107. UNAME := $(shell uname)
  108. # Cygwin / mingw
  109. ifeq ($(OS),Windows_NT)
  110. LIBEXT = dll
  111. RELEASE_NAME=win
  112. # VS variables are for packaging Visual Studio builds
  113. VS_RUNTIME_LIBRARY ?= c:/windows/system32/vcruntime140.dll
  114. ifeq ($(MARCH),32)
  115. CFLAGS += -msse2 -mfpmath=sse
  116. CC=i686-pc-cygwin-gcc
  117. BUILD_DIR = Release
  118. VS_SDL_LIBRARY ?= include/sdl/lib/x86/SDL2.dll
  119. VS_OPENAL_LIBRARY ?= include/openal/bin/Win32/soft_oal.dll
  120. VS_DX_LIBRARY ?= include/dx/bin/x86/dxcompiler.dll include/dx/bin/x86/dxil.dll
  121. else
  122. BUILD_DIR = x64/Release
  123. VS_SDL_LIBRARY ?= include/sdl/lib/x64/SDL2.dll
  124. VS_OPENAL_LIBRARY ?= include/openal/bin/Win64/soft_oal.dll
  125. VS_DX_LIBRARY ?= include/dx/bin/x64/dxcompiler.dll include/dx/bin/x64/dxil.dll
  126. endif
  127. ifneq (, $(findstring MINGW64, $(UNAME)))
  128. LIBHL_LDLIBS += -lws2_32 -lwsock32
  129. SSL_LDLIBS += -lcrypt32 -lbcrypt -lws2_32
  130. MYSQL_LDLIBS += -lws2_32 -lwsock32
  131. HLC_LDLIBS = -ldbghelp
  132. CFLAGS += -municode
  133. LIBFLAGS += -municode
  134. HLFLAGS =
  135. endif
  136. else ifeq ($(UNAME),Darwin)
  137. # Mac
  138. LIBEXT=dylib
  139. BREW_PREFIX := $(shell brew --prefix)
  140. # prefixes for keg-only packages
  141. BREW_OPENAL_PREFIX := $(shell brew --prefix openal-soft)
  142. BREW_SDL_PREFIX := $(shell brew --prefix sdl2)
  143. CFLAGS += -m$(MARCH) -I include -I $(BREW_PREFIX)/include -I $(BREW_OPENAL_PREFIX)/include -I $(BREW_SDL_PREFIX)/include/SDL2 -Dopenal_soft -DGL_SILENCE_DEPRECATION
  144. ifdef OSX_SDK
  145. ISYSROOT = $(shell xcrun --sdk macosx$(OSX_SDK) --show-sdk-path)
  146. CFLAGS += -isysroot $(ISYSROOT)
  147. LFLAGS += -isysroot $(ISYSROOT)
  148. endif
  149. SDL_LINK_FLAGS = -L$(BREW_SDL_PREFIX)/lib -lSDL2
  150. LIBFLAGS += -L$(BREW_PREFIX)/lib -L$(BREW_OPENAL_PREFIX)/lib
  151. LIBOPENGL = -framework OpenGL
  152. LIBOPENAL = -lopenal
  153. LIBSSL = -framework Security -framework CoreFoundation
  154. RELEASE_NAME = osx
  155. # Mac native debug
  156. ifneq ($(ARCH),arm64)
  157. HL_DEBUG = include/mdbg/mdbg.o include/mdbg/mach_excServer.o include/mdbg/mach_excUser.o
  158. LIB += ${HL_DEBUG}
  159. endif
  160. CFLAGS += -arch $(ARCH)
  161. LFLAGS += -arch $(ARCH)
  162. LFLAGS += -rpath @executable_path -rpath $(INSTALL_LIB_DIR)
  163. LIBFLAGS += -rpath @executable_path -rpath $(INSTALL_LIB_DIR)
  164. LHL_LINK_FLAGS += -install_name @rpath/libhl.dylib
  165. else
  166. # Linux
  167. CFLAGS += -m$(MARCH) -fPIC -pthread -fno-omit-frame-pointer $(shell pkg-config --cflags sdl2)
  168. LFLAGS += -lm -Wl,-rpath,.:'$$ORIGIN':$(INSTALL_LIB_DIR) -Wl,--no-undefined
  169. ifeq ($(MARCH),32)
  170. CFLAGS += -I /usr/include/i386-linux-gnu -msse2 -mfpmath=sse
  171. LIBFLAGS += -L/opt/libjpeg-turbo/lib
  172. else
  173. LIBFLAGS += -L/opt/libjpeg-turbo/lib64
  174. endif
  175. SDL_LINK_FLAGS = $(shell pkg-config --libs sdl2)
  176. LIBOPENAL = -lopenal
  177. LIBOPENGL = -lGL
  178. RELEASE_NAME = linux
  179. endif
  180. ifdef MESA
  181. LIBS += mesa
  182. endif
  183. ifdef DEBUG
  184. CFLAGS += -g
  185. endif
  186. all: libhl libs
  187. ifeq ($(ARCH),arm64)
  188. $(warning HashLink vm is not supported on arm64, skipping)
  189. else
  190. all: hl
  191. endif
  192. install:
  193. $(UNAME)==Darwin && ${MAKE} uninstall
  194. ifneq ($(ARCH),arm64)
  195. mkdir -p $(INSTALL_BIN_DIR)
  196. cp hl $(INSTALL_BIN_DIR)
  197. endif
  198. mkdir -p $(INSTALL_LIB_DIR)
  199. cp *.hdll $(INSTALL_LIB_DIR)
  200. cp libhl.${LIBEXT} $(INSTALL_LIB_DIR)
  201. mkdir -p $(INSTALL_INCLUDE_DIR)
  202. cp src/hl.h src/hlc.h src/hlc_main.c $(INSTALL_INCLUDE_DIR)
  203. uninstall:
  204. rm -f $(INSTALL_BIN_DIR)/hl $(INSTALL_LIB_DIR)/libhl.${LIBEXT} $(INSTALL_LIB_DIR)/*.hdll
  205. rm -f $(INSTALL_INCLUDE_DIR)/hl.h $(INSTALL_INCLUDE_DIR)/hlc.h $(INSTALL_INCLUDE_DIR)/hlc_main.c
  206. libs: $(LIBS)
  207. ./include/pcre/%.o: include/pcre/%.c
  208. ${CC} ${CFLAGS} -o $@ -c $< ${PCRE_FLAGS}
  209. src/std/regexp.o: src/std/regexp.c
  210. ${CC} ${CFLAGS} -o $@ -c $< ${PCRE_FLAGS}
  211. libhl: ${LIB}
  212. ${CC} ${CFLAGS} -o libhl.$(LIBEXT) -m${MARCH} ${LIBFLAGS} ${LHL_LINK_FLAGS} -shared $^ ${LIBHL_LDLIBS}
  213. hlc: ${BOOT}
  214. ${CC} ${CFLAGS} -o hlc ${BOOT} ${LFLAGS} ${EXTRA_LFLAGS} ${HLC_LDLIBS}
  215. hl: ${HL} libhl
  216. ${CC} ${CFLAGS} -o hl ${HL} ${LFLAGS} ${EXTRA_LFLAGS} ${HLFLAGS}
  217. libs/fmt/%.o: libs/fmt/%.c
  218. ${CC} ${CFLAGS} -o $@ -c $< ${FMT_INCLUDE}
  219. fmt: ${FMT} libhl
  220. ${CC} ${CFLAGS} -shared -o fmt.hdll ${FMT} ${LIBFLAGS} -L. -lhl -lpng $(LIBTURBOJPEG) -lz -lvorbisfile
  221. sdl: ${SDL} libhl
  222. ${CC} ${CFLAGS} -shared -o sdl.hdll ${SDL} ${LIBFLAGS} -L. -lhl $(SDL_LINK_FLAGS) $(LIBOPENGL)
  223. openal: ${OPENAL} libhl
  224. ${CC} ${CFLAGS} -shared -o openal.hdll ${OPENAL} ${LIBFLAGS} -L. -lhl $(LIBOPENAL)
  225. ./include/mbedtls/%.o: ./include/mbedtls/%.c
  226. ${CC} ${CFLAGS} -o $@ -c $< ${SSL_CFLAGS}
  227. # force rebuild ssl.o in case we mix SSL_STATIC with normal build
  228. .PHONY: libs/ssl/ssl.o
  229. libs/ssl/ssl.o: libs/ssl/ssl.c
  230. ${CC} ${CFLAGS} -o $@ -c $< ${SSL_CFLAGS}
  231. ssl: ${SSL} libhl
  232. ${CC} ${CFLAGS} ${SSL_CFLAGS} -shared -o ssl.hdll ${SSL} ${LIBFLAGS} -L. -lhl ${SSL_LDLIBS} $(LIBSSL)
  233. ui: ${UI} libhl
  234. ${CC} ${CFLAGS} -shared -o ui.hdll ${UI} ${LIBFLAGS} -L. -lhl
  235. uv: ${UV} libhl
  236. ${CC} ${CFLAGS} -shared -o uv.hdll ${UV} ${LIBFLAGS} -L. -lhl -luv
  237. mysql: ${MYSQL} libhl
  238. ${CC} ${CFLAGS} -shared -o mysql.hdll ${MYSQL} ${LIBFLAGS} -L. -lhl ${MYSQL_LDLIBS}
  239. sqlite: ${SQLITE} libhl
  240. ${CC} ${CFLAGS} -shared -o sqlite.hdll ${SQLITE} ${LIBFLAGS} -L. -lhl -lsqlite3
  241. CXXFLAGS:=$(filter-out -std=c11,$(CFLAGS)) -std=c++11
  242. ./include/mikktspace/%.o: ./include/mikktspace/%.c
  243. ${CC} ${CFLAGS} -o $@ -c $< ${HEAPS_CFLAGS}
  244. ./include/meshoptimizer/%.o: ./include/meshoptimizer/%.cpp
  245. ${CC} ${CXXFLAGS} -o $@ -c $< ${HEAPS_CFLAGS}
  246. ./libs/heaps/%.o: ./libs/heaps/%.c
  247. ${CC} ${CFLAGS} -o $@ -c $< ${HEAPS_CFLAGS}
  248. ./libs/heaps/%.o: ./libs/heaps/%.cpp
  249. ${CC} ${CXXFLAGS} -o $@ -c $< ${HEAPS_CFLAGS}
  250. heaps: ${HEAPS} libhl
  251. ${CXX} ${CFLAGS} ${HEAPS_CFLAGS} -shared -o heaps.hdll ${HEAPS} ${LIBFLAGS} -L. -lhl
  252. mesa:
  253. (cd libs/mesa && ${MAKE})
  254. release: release_prepare release_$(RELEASE_NAME)
  255. release_haxelib:
  256. ${MAKE} HLIB=hashlink release_haxelib_package
  257. ${MAKE} HLIB=directx release_haxelib_package
  258. ${MAKE} HLIB=sdl release_haxelib_package
  259. ${MAKE} HLIB=openal release_haxelib_package
  260. ifeq ($(HLIB),hashlink)
  261. HLDIR=other/haxelib
  262. HLPACK=templates hlmem memory.hxml Run.hx
  263. else
  264. HLDIR=libs/$(HLIB)
  265. ifeq ($(HLIB),directx)
  266. HLPACK=dx *.h *.c *.cpp
  267. else
  268. HLPACK=$(HLIB) *.h *.c
  269. endif
  270. endif
  271. release_haxelib_package:
  272. rm -rf $(HLIB)_release
  273. mkdir $(HLIB)_release
  274. (cd $(HLDIR) && cp -R $(HLPACK) haxelib.json $(CURDIR)/$(HLIB)_release | true)
  275. zip -r $(HLIB).zip $(HLIB)_release
  276. haxelib submit $(HLIB).zip
  277. rm -rf $(HLIB)_release
  278. BUILD_DIR ?= .
  279. PACKAGE_NAME = $(eval PACKAGE_NAME := hashlink-$(shell $(BUILD_DIR)/hl --version)-$(RELEASE_NAME))$(PACKAGE_NAME)
  280. release_prepare:
  281. rm -rf $(PACKAGE_NAME)
  282. mkdir $(PACKAGE_NAME)
  283. mkdir $(PACKAGE_NAME)/include
  284. cp src/hl.h src/hlc.h src/hlc_main.c $(PACKAGE_NAME)/include
  285. release_win:
  286. cp $(BUILD_DIR)/{hl.exe,libhl.dll,*.hdll,*.lib} $(PACKAGE_NAME)
  287. cp $(VS_RUNTIME_LIBRARY) $(PACKAGE_NAME)
  288. cp $(VS_SDL_LIBRARY) $(PACKAGE_NAME)
  289. cp $(VS_OPENAL_LIBRARY) $(PACKAGE_NAME)/OpenAL32.dll
  290. cp $(VS_DX_LIBRARY) $(PACKAGE_NAME)
  291. # 7z switches: https://sevenzip.osdn.jp/chm/cmdline/switches/
  292. 7z a -spf -y -mx9 -bt $(PACKAGE_NAME).zip $(PACKAGE_NAME)
  293. rm -rf $(PACKAGE_NAME)
  294. release_linux release_osx:
  295. ifeq ($(ARCH),arm64)
  296. cp libhl.$(LIBEXT) *.hdll $(PACKAGE_NAME)
  297. else
  298. cp hl libhl.$(LIBEXT) *.hdll $(PACKAGE_NAME)
  299. endif
  300. tar -cvzf $(PACKAGE_NAME).tar.gz $(PACKAGE_NAME)
  301. rm -rf $(PACKAGE_NAME)
  302. codesign_osx:
  303. sudo security delete-identity -c hl-cert || echo
  304. echo "[req]\ndistinguished_name=codesign_dn\n[codesign_dn]\ncommonName=hl-cert\n[v3_req]\nkeyUsage=critical,digitalSignature\nextendedKeyUsage=critical,codeSigning" > openssl.cnf
  305. openssl req -x509 -newkey rsa:4096 -keyout key.pem -nodes -days 365 -subj '/CN=hl-cert' -outform der -out cert.cer -extensions v3_req -config openssl.cnf
  306. sudo security add-trusted-cert -d -k /Library/Keychains/System.keychain cert.cer
  307. sudo security import key.pem -k /Library/Keychains/System.keychain -A
  308. codesign --entitlements other/osx/entitlements.xml -fs hl-cert hl
  309. rm key.pem cert.cer openssl.cnf
  310. .SUFFIXES : .c .o
  311. .c.o :
  312. ${CC} ${CFLAGS} -o $@ -c $<
  313. clean_o:
  314. rm -f ${STD} ${BOOT} ${RUNTIME} ${PCRE} ${HL} ${FMT} ${SDL} ${SSL} ${OPENAL} ${UI} ${UV} ${MYSQL} ${SQLITE} ${HEAPS} ${HL_DEBUG}
  315. clean: clean_o
  316. rm -f hl hl.exe libhl.$(LIBEXT) *.hdll
  317. .PHONY: libhl hl hlc fmt sdl libs release