File: Makefile

package info (click to toggle)
chromium 138.0.7204.183-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 6,071,908 kB
  • sloc: cpp: 34,937,088; ansic: 7,176,967; javascript: 4,110,704; python: 1,419,953; asm: 946,768; xml: 739,971; pascal: 187,324; sh: 89,623; perl: 88,663; objc: 79,944; sql: 50,304; cs: 41,786; fortran: 24,137; makefile: 21,806; php: 13,980; tcl: 13,166; yacc: 8,925; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (51 lines) | stat: -rw-r--r-- 1,683 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# Makefile for piex-wasm
#
# An IIFE https://developer.mozilla.org/en-US/docs/Glossary/IIFE is used to
# wrap em++ compiler-generated JS code so it does not pollute |globalThis|.
#
# CFI sanitizer options are used to compile our WebAssembly, as recommended
# by https://webassembly.org/docs/security/#memory-safety (for more details
# about CFI see https://clang.llvm.org/docs/ControlFlowIntegrity.html).
#
PIEX = node_modules/piex

PSRC = $(PIEX)/src/piex.cc \
       $(PIEX)/src/tiff_parser.cc \
       $(PIEX)/src/image_type_recognition/image_type_recognition_lite.cc \
       $(PIEX)/src/tiff_directory/tiff_directory.cc \
       $(PIEX)/src/binary_parse/range_checked_byte_ptr.cc \
       $(PIEX)/src/binary_parse/cached_paged_byte_array.cc

INCS = -I $(PIEX)
WASM = -s WASM=1 -fno-exceptions -Wall -fsanitize=cfi -flto -fvisibility=hidden
WOPT = -Os --llvm-opts 3 \
  -s MODULARIZE=1 \
  -s EXPORT_NAME=createPiexModule \
  -s STRICT=1 \
  -s ALLOW_MEMORY_GROWTH=1 \
  -s ENVIRONMENT='web' \
  -s NO_DYNAMIC_EXECUTION=1 \
  -s TOTAL_STACK=$(shell echo $$((8*1024)))

IIFE = --pre-js iife.beg --post-js iife.end

.PHONY: all clean release

all: piex.out.js release

piex.out.js: piex.cpp.bc piex.src.bc iife.beg iife.end
	em++ --bind --std=c++11 $(WASM) $(WOPT) $(IIFE) piex.cpp.bc piex.src.bc -o $@

piex.cpp.bc: piex.cpp Makefile
	em++ --bind --std=c++11 $(WASM) $(WOPT) $(INCS) piex.cpp -o $@

piex.src.bc: $(PSRC) Makefile
	em++ --bind --std=c++11 $(WASM) $(WOPT) $(INCS) $(PSRC) -o $@

release:
	$(shell cp piex.out.js piex.js.wasm)
	$(shell cp piex*wasm extension)

clean:
	$(shell rm -f tests.{result*,log} *.bc piex.out.js)
	$(shell rm -f piex*wasm extension/piex*wasm)