68 lines
2.2 KiB
Makefile
68 lines
2.2 KiB
Makefile
SYSROOT := $(shell em-config CACHE)/sysroot
|
|
|
|
# Add custom sysroot to library & macro search paths.
|
|
export LDFLAGS += -L$(SYSROOT)/lib
|
|
|
|
# Common linking flags for all targets.
|
|
export LDFLAGS += -s DYNAMIC_EXECUTION=0 -s AUTO_JS_LIBRARIES=0 -s AUTO_NATIVE_LIBRARIES=0
|
|
# Temporary workaround for https://github.com/emscripten-core/emscripten/issues/16836.
|
|
export LDFLAGS += -Wl,-u,ntohs
|
|
|
|
# Common compilation & linking flags for all langs and targets.
|
|
COMMON_FLAGS = -Os -flto
|
|
export CFLAGS += $(COMMON_FLAGS)
|
|
export CXXFLAGS += $(COMMON_FLAGS)
|
|
export LDFLAGS += $(COMMON_FLAGS)
|
|
|
|
## Main API module
|
|
|
|
build/libapi.mjs: src/api.o $(SYSROOT)/lib/libltdl.la $(SYSROOT)/lib/libgphoto2.la
|
|
libtool --verbose --mode=link $(LD) $(LDFLAGS) -o $@ $+ \
|
|
-fexceptions --bind -s ASYNCIFY -s ALLOW_MEMORY_GROWTH -s ENVIRONMENT=web,worker \
|
|
-dlpreopen $(SYSROOT)/lib/libgphoto2/2.5.28.1/ptp2.la \
|
|
-dlpreopen $(SYSROOT)/lib/libgphoto2_port/0.12.0/usb1.la
|
|
|
|
src/api.o: deps/libgphoto2/configure.ac
|
|
src/api.o: CPPFLAGS += -Ideps/libgphoto2 -Ideps/libgphoto2/libgphoto2_port
|
|
src/api.o: CXXFLAGS += -std=c++17 -fexceptions -pthread
|
|
|
|
## Generic rules for deps
|
|
|
|
$(SYSROOT):
|
|
mkdir -p $(@D)
|
|
|
|
deps/%/configure.ac:
|
|
git submodule update --init $(@D)
|
|
|
|
deps/%/configure: deps/%/configure.ac | $(SYSROOT)/lib/libltdl.la
|
|
cd $(@D) && autoreconf -fiv
|
|
|
|
deps/%/Makefile: deps/%/configure
|
|
cd $(@D) && ./configure --prefix=$(SYSROOT) --disable-shared $(CONFIGURE_ARGS)
|
|
|
|
## libtool
|
|
|
|
deps/libtool/configure:
|
|
mkdir -p deps/libtool
|
|
curl -L https://ftpmirror.gnu.org/libtool/libtool-2.4.6.tar.gz | tar zx --strip 1 -C deps/libtool
|
|
|
|
$(SYSROOT)/lib/libltdl.la: deps/libtool/Makefile | $(SYSROOT)
|
|
$(MAKE) -C deps/libtool install
|
|
|
|
## libusb
|
|
|
|
deps/libusb/Makefile: CONFIGURE_ARGS = --host=wasm32
|
|
|
|
$(SYSROOT)/lib/libusb-1.0.la: deps/libusb/Makefile
|
|
$(MAKE) -C deps/libusb install
|
|
|
|
## libgphoto2
|
|
|
|
deps/libgphoto2/Makefile: | $(SYSROOT)/lib/libusb-1.0.la
|
|
deps/libgphoto2/Makefile: CONFIGURE_ARGS = --host=wasm32 \
|
|
--without-libxml-2.0 --disable-nls --disable-ptpip --disable-disk \
|
|
--with-camlibs=ptp2
|
|
|
|
$(SYSROOT)/lib/libgphoto2.la: deps/libgphoto2/Makefile $(SYSROOT)/lib/libusb-1.0.la $(SYSROOT)/lib/libltdl.la
|
|
$(MAKE) -C deps/libgphoto2 install
|