# GNU Makefile for third party libraries used by MuPDF # # If thirdparty libraries are supplied, they will be built as # static libraries. # # Use 'git submodule init' and 'git submodule update' to check # out the thirdparty libraries from git. FREETYPE_DIR := thirdparty/freetype HARFBUZZ_DIR := thirdparty/harfbuzz JBIG2DEC_DIR := thirdparty/jbig2dec JPEGXR_DIR := thirdparty/jpegxr LCMS2_DIR := thirdparty/lcms2 LIBJPEG_DIR := thirdparty/libjpeg LURATECH_DIR := thirdparty/luratech MUJS_DIR := thirdparty/mujs OPENJPEG_DIR := thirdparty/openjpeg/src/lib/openjp2 ZLIB_DIR := thirdparty/zlib CURL_DIR := thirdparty/curl GLFW_DIR := thirdparty/glfw # --- MuJS --- ifneq "$(wildcard $(MUJS_DIR)/README)" "" MUJS_OUT := $(OUT)/thirdparty/mujs MUJS_SRC := one.c MUJS_OBJ := $(addprefix $(MUJS_OUT)/, $(MUJS_SRC:%.c=%.o)) $(MUJS_OUT)/one.o: $(wildcard $(MUJS_DIR)/js*.c $(MUJS_DIR)/utf*.c $(MUJS_DIR)/regex.c $(MUJS_DIR)/*.h) $(MUJS_OUT): $(MKDIR_CMD) $(MUJS_OUT)/%.o: $(MUJS_DIR)/%.c | $(MUJS_OUT) $(CC_CMD) MUJS_CFLAGS := -I$(MUJS_DIR) else MUJS_CFLAGS := -DFZ_ENABLE_JS=0 endif # --- FreeType 2 --- ifneq "$(wildcard $(FREETYPE_DIR)/README)" "" FREETYPE_OUT := $(OUT)/thirdparty/freetype FREETYPE_SRC := \ ftbase.c \ ftbbox.c \ ftbitmap.c \ ftdebug.c \ ftfntfmt.c \ ftgasp.c \ ftglyph.c \ ftinit.c \ ftstroke.c \ ftsynth.c \ ftsystem.c \ fttype1.c \ cff.c \ psaux.c \ pshinter.c \ psnames.c \ raster.c \ sfnt.c \ smooth.c \ truetype.c \ type1.c \ type1cid.c \ FREETYPE_OBJ := $(addprefix $(FREETYPE_OUT)/, $(FREETYPE_SRC:%.c=%.o)) $(FREETYPE_OUT): $(MKDIR_CMD) FT_CFLAGS := -DFT2_BUILD_LIBRARY -DDARWIN_NO_CARBON \ '-DFT_CONFIG_MODULES_H="slimftmodules.h"' \ '-DFT_CONFIG_OPTIONS_H="slimftoptions.h"' $(FREETYPE_OUT)/%.o: $(FREETYPE_DIR)/src/base/%.c | $(FREETYPE_OUT) $(CC_CMD) $(FT_CFLAGS) $(FREETYPE_OUT)/%.o: $(FREETYPE_DIR)/src/cff/%.c | $(FREETYPE_OUT) $(CC_CMD) $(FT_CFLAGS) $(FREETYPE_OUT)/%.o: $(FREETYPE_DIR)/src/cid/%.c | $(FREETYPE_OUT) $(CC_CMD) $(FT_CFLAGS) $(FREETYPE_OUT)/%.o: $(FREETYPE_DIR)/src/psaux/%.c | $(FREETYPE_OUT) $(CC_CMD) $(FT_CFLAGS) $(FREETYPE_OUT)/%.o: $(FREETYPE_DIR)/src/pshinter/%.c | $(FREETYPE_OUT) $(CC_CMD) $(FT_CFLAGS) $(FREETYPE_OUT)/%.o: $(FREETYPE_DIR)/src/psnames/%.c | $(FREETYPE_OUT) $(CC_CMD) $(FT_CFLAGS) $(FREETYPE_OUT)/%.o: $(FREETYPE_DIR)/src/raster/%.c | $(FREETYPE_OUT) $(CC_CMD) $(FT_CFLAGS) $(FREETYPE_OUT)/%.o: $(FREETYPE_DIR)/src/smooth/%.c | $(FREETYPE_OUT) $(CC_CMD) $(FT_CFLAGS) $(FREETYPE_OUT)/%.o: $(FREETYPE_DIR)/src/sfnt/%.c | $(FREETYPE_OUT) $(CC_CMD) $(FT_CFLAGS) $(FREETYPE_OUT)/%.o: $(FREETYPE_DIR)/src/truetype/%.c | $(FREETYPE_OUT) $(CC_CMD) $(FT_CFLAGS) $(FREETYPE_OUT)/%.o: $(FREETYPE_DIR)/src/type1/%.c | $(FREETYPE_OUT) $(CC_CMD) $(FT_CFLAGS) FREETYPE_CFLAGS := -Iscripts/freetype -I$(FREETYPE_DIR)/include else FREETYPE_CFLAGS := $(SYS_FREETYPE_CFLAGS) FREETYPE_LIBS := $(SYS_FREETYPE_LIBS) endif # --- HarfBuzz --- ifneq "$(wildcard $(HARFBUZZ_DIR)/README)" "" HARFBUZZ_OUT := $(OUT)/thirdparty/harfbuzz HARFBUZZ_SRC := \ hb-blob.cc \ hb-buffer.cc \ hb-buffer-serialize.cc \ hb-common.cc \ hb-face.cc \ hb-fallback-shape.cc \ hb-font.cc \ hb-ft.cc \ hb-ot-font.cc \ hb-ot-layout.cc \ hb-ot-map.cc \ hb-ot-shape-complex-arabic.cc \ hb-ot-shape-complex-default.cc \ hb-ot-shape-complex-hangul.cc \ hb-ot-shape-complex-hebrew.cc \ hb-ot-shape-complex-indic-table.cc \ hb-ot-shape-complex-indic.cc \ hb-ot-shape-complex-myanmar.cc \ hb-ot-shape-complex-thai.cc \ hb-ot-shape-complex-tibetan.cc \ hb-ot-shape-complex-use-table.cc \ hb-ot-shape-complex-use.cc \ hb-ot-shape-fallback.cc \ hb-ot-shape-normalize.cc \ hb-ot-shape.cc \ hb-ot-tag.cc \ hb-set.cc \ hb-shape-plan.cc \ hb-shape.cc \ hb-shaper.cc \ hb-ucdn.cc \ hb-unicode.cc \ hb-warning.cc # hb-coretext.cc # hb-directwrite.cc # hb-glib.cc # hb-gobject-structs.cc # hb-graphite2.cc # hb-icu.cc # hb-uniscribe.cc HARFBUZZ_OBJ := $(addprefix $(HARFBUZZ_OUT)/, $(HARFBUZZ_SRC:%.cc=%.o)) $(HARFBUZZ_OUT): $(MKDIR_CMD) $(HARFBUZZ_OUT)/%.o: $(HARFBUZZ_DIR)/src/%.cc | $(HARFBUZZ_OUT) $(CC_CMD) -DHAVE_OT -DHAVE_UCDN -DHB_NO_MT $(FREETYPE_CFLAGS) \ -Dhb_malloc_impl=fz_hb_malloc -Dhb_calloc_impl=fz_hb_calloc \ -Dhb_free_impl=fz_hb_free -Dhb_realloc_impl=fz_hb_realloc \ -fno-rtti -fno-exceptions -fvisibility-inlines-hidden --std=c++0x HARFBUZZ_CFLAGS := -I$(HARFBUZZ_DIR)/src else HARFBUZZ_CFLAGS := $(SYS_HARFBUZZ_CFLAGS) HARFBUZZ_LIBS := $(SYS_HARFBUZZ_LIBS) endif # --- LURATECH --- ifneq "$(wildcard $(LURATECH_DIR)/ldf_jb2)$(wildcard $(LURATECH_DIR)/lwf_jp2)" "" LURATECH_OUT := $(OUT)/thirdparty/luratech LURATECH_SRC := \ jb2_adt_cache.c \ jb2_adt_decoder_halftone_region.c \ jb2_adt_encoder_text_region.c \ jb2_adt_huffman_tree.c \ jb2_adt_symbol_instance.c \ jb2_adt_context_ref_encoder.c \ jb2_adt_context_ref_buffer.c \ jb2_adt_context_ref_encoder.c \ jb2_adt_mq_encoder.c \ jb2_adt_decoder_text_region.c \ jb2_adt_huffman_table_user_defined.c \ jb2_adt_mmr_tables.c \ jb2_adt_huffman_table_symbol.c \ jb2_adt_component.c \ jb2_adt_context_buffer.c \ jb2_adt_context_decoder.c \ jb2_adt_context_encoder.c \ jb2_adt_context_ref_decoder.c \ jb2_adt_decoder_collective_bitmap.c \ jb2_adt_decoder_generic_region.c \ jb2_adt_decoder_pattern_dict.c \ jb2_adt_decoder_symbol_dict.c \ jb2_adt_encoder_symbol_dict.c \ jb2_adt_external_cache.c \ jb2_adt_file.c \ jb2_adt_file_extras.c \ jb2_adt_handle_document.c \ jb2_adt_huffman_decoder.c \ jb2_adt_huffman_encoder.c \ jb2_adt_huffman_table.c \ jb2_adt_huffman_table_standard.c \ jb2_adt_location.c \ jb2_adt_memory.c \ jb2_adt_message.c \ jb2_adt_mmr_decoder.c \ jb2_adt_mq_decoder.c \ jb2_adt_mq_encoder.c \ jb2_adt_mq_state.c \ jb2_adt_pattern_dict.c \ jb2_adt_pdf_file.c \ jb2_adt_pdf_stream.c \ jb2_adt_props_decompress.c \ jb2_adt_read_bit_buffer.c \ jb2_adt_read_data.c \ jb2_adt_render_common.c \ jb2_adt_render_generic_region.c \ jb2_adt_render_halftone_region.c \ jb2_adt_render_text_region.c \ jb2_adt_run_array.c \ jb2_adt_segment_array.c \ jb2_adt_segment.c \ jb2_adt_segment_end_of_stripe.c \ jb2_adt_segment_generic_region.c \ jb2_adt_segment_halftone_region.c \ jb2_adt_segment_page_info.c \ jb2_adt_segment_pattern_dict.c \ jb2_adt_segment_region.c \ jb2_adt_segment_symbol_dict.c \ jb2_adt_segment_table.c \ jb2_adt_segment_text_region.c \ jb2_adt_segment_types.c \ jb2_adt_stack.c \ jb2_adt_symbol.c \ jb2_adt_symbol_dict.c \ jb2_adt_symbol_unify.c \ jb2_adt_write_bits.c \ jb2_adt_write_data.c \ jb2_adt_write_pdf.c \ jb2_common.c \ jb2_license_dummy.c \ jp2_adt_band_array.c \ jp2_adt_band_buffer.c \ jp2_adt_block_array.c \ jp2_adt_cache.c \ jp2_adt_comp.c \ jp2_adt_component_array.c \ jp2_adt_decomp.c \ jp2_adt_ebcot_decoder.c \ jp2_adt_external_cache.c \ jp2_adt_image.c \ jp2_adt_memory.c \ jp2_adt_mq_decoder.c \ jp2_adt_mq_state.c \ jp2_adt_packet_decoder.c \ jp2_adt_precinct_array.c \ jp2_adt_rate.c \ jp2_adt_rate_list.c \ jp2_adt_read_bits.c \ jp2_adt_read_data.c \ jp2_adt_reader_requirements.c \ jp2_adt_resolution_array.c \ jp2_adt_tile_array.c \ jp2_adt_tlm_marker_array.c \ jp2_adt_write_data.c \ jp2_buffer.c \ jp2c_code_cb.c \ jp2c_coder.c \ jp2c_codestream.c \ jp2c_file_format.c \ jp2c_format.c \ jp2c_memory.c \ jp2_code_cb.c \ jp2_common.c \ jp2c_progression.c \ jp2c_quant.c \ jp2c_wavelet.c \ jp2c_wavelet_lifting.c \ jp2c_weights.c \ jp2c_write.c \ jp2d_codestream.c \ jp2d_decoder.c \ jp2d_file_format.c \ jp2d_format.c \ jp2d_image.c \ jp2d_memory.c \ jp2d_partial_decoding.c \ jp2d_progression.c \ jp2d_quant.c \ jp2d_scale.c \ jp2d_wavelet.c \ jp2d_wavelet_lifting.c \ jp2d_write.c \ jp2_icc.c \ jp2_license.c \ jp2_packet.c \ jp2_tag_tree.c LURATECH_OBJ := $(addprefix $(LURATECH_OUT)/, $(LURATECH_SRC:%.c=%.o)) $(LURATECH_OUT): $(MKDIR_CMD) $(LURATECH_OUT)/%.o: $(LURATECH_DIR)/ldf_jb2/source/common/%.c | $(LURATECH_OUT) $(CC_CMD) \ -I$(LURATECH_DIR)/ldf_jb2/source/common \ -DLINUX $(LURATECH_OUT)/%.o: $(LURATECH_DIR)/ldf_jb2/source/compress/%.c | $(LURATECH_OUT) $(CC_CMD) \ -I$(LURATECH_DIR)/ldf_jb2/source/common \ -DLINUX $(LURATECH_OUT)/%.o: $(LURATECH_DIR)/lwf_jp2/library/source/%.c | $(LURATECH_OUT) $(CC_CMD) \ -I$(LURATECH_DIR)/ldf_jb2/source/common \ -DLINUX LURATECH_CFLAGS := \ -I$(LURATECH_DIR)/ldf_jb2/source/common \ -I$(LURATECH_DIR)/ldf_jb2/source/libraries \ -I$(LURATECH_DIR)/ldf_jb2/source/compress \ -I$(LURATECH_DIR)/lwf_jp2/library/source \ -DHAVE_LURATECH else # --- LURATECH --- # --- JBIG2DEC --- ifneq "$(wildcard $(JBIG2DEC_DIR)/README)" "" JBIG2DEC_OUT := $(OUT)/thirdparty/jbig2dec JBIG2DEC_SRC := \ jbig2.c \ jbig2_arith.c \ jbig2_arith_iaid.c \ jbig2_arith_int.c \ jbig2_generic.c \ jbig2_halftone.c \ jbig2_huffman.c \ jbig2_image.c \ jbig2_metadata.c \ jbig2_mmr.c \ jbig2_page.c \ jbig2_refinement.c \ jbig2_segment.c \ jbig2_symbol_dict.c \ jbig2_text.c JBIG2DEC_OBJ := $(addprefix $(JBIG2DEC_OUT)/, $(JBIG2DEC_SRC:%.c=%.o)) $(JBIG2DEC_OUT): $(MKDIR_CMD) $(JBIG2DEC_OUT)/%.o: $(JBIG2DEC_DIR)/%.c | $(JBIG2DEC_OUT) $(CC_CMD) -DHAVE_STDINT_H -DJBIG_EXTERNAL_MEMENTO_H=\"mupdf/memento.h\" JBIG2DEC_CFLAGS := -I$(JBIG2DEC_DIR) else JBIG2DEC_CFLAGS := $(SYS_JBIG2DEC_CFLAGS) JBIG2DEC_LIBS := $(SYS_JBIG2DEC_LIBS) endif # --- OpenJPEG --- ifneq "$(wildcard $(OPENJPEG_DIR)/openjpeg.h)" "" OPENJPEG_OUT := $(OUT)/thirdparty/openjpeg OPENJPEG_SRC := \ bio.c \ cidx_manager.c \ cio.c \ dwt.c \ event.c \ function_list.c \ image.c \ invert.c \ j2k.c \ jp2.c \ mct.c \ mqc.c \ openjpeg.c \ phix_manager.c \ pi.c \ ppix_manager.c \ raw.c \ t1.c \ t2.c \ tcd.c \ tgt.c \ thix_manager.c \ tpix_manager.c \ thread.c OPENJPEG_OBJ := $(addprefix $(OPENJPEG_OUT)/, $(OPENJPEG_SRC:%.c=%.o)) $(OPENJPEG_OUT): $(MKDIR_CMD) $(OPENJPEG_OUT)/%.o: $(OPENJPEG_DIR)/%.c | $(OPENJPEG_OUT) $(CC_CMD) -DOPJ_STATIC -DOPJ_HAVE_STDINT_H -DOPJ_HAVE_INTTYPES_H -DUSE_JPIP OPENJPEG_CFLAGS += -I$(OPENJPEG_DIR) else OPENJPEG_CFLAGS := $(SYS_OPENJPEG_CFLAGS) OPENJPEG_LIBS := $(SYS_OPENJPEG_LIBS) endif endif # --- LURATECH --- # --- JPEG library from IJG --- ifneq "$(wildcard $(LIBJPEG_DIR)/README)" "" LIBJPEG_OUT := $(OUT)/thirdparty/libjpeg LIBJPEG_SRC := \ jaricom.c \ jcomapi.c \ jdapimin.c \ jdapistd.c \ jdarith.c \ jdatadst.c \ jdatasrc.c \ jdcoefct.c \ jdcolor.c \ jddctmgr.c \ jdhuff.c \ jdinput.c \ jdmainct.c \ jdmarker.c \ jdmaster.c \ jdmerge.c \ jdpostct.c \ jdsample.c \ jdtrans.c \ jerror.c \ jfdctflt.c \ jfdctfst.c \ jfdctint.c \ jidctflt.c \ jidctfst.c \ jidctint.c \ jmemmgr.c \ jquant1.c \ jquant2.c \ jutils.c \ LIBJPEG_OBJ := $(addprefix $(LIBJPEG_OUT)/, $(LIBJPEG_SRC:%.c=%.o)) $(LIBJPEG_OUT): $(MKDIR_CMD) $(LIBJPEG_OUT)/%.o: $(LIBJPEG_DIR)/%.c | $(LIBJPEG_OUT) $(CC_CMD) -Dmain=xxxmain LIBJPEG_CFLAGS := -Iscripts/libjpeg -I$(LIBJPEG_DIR) else LIBJPEG_CFLAGS := $(SYS_LIBJPEG_CFLAGS) -DSHARE_JPEG LIBJPEG_LIBS := $(SYS_LIBJPEG_LIBS) endif # --- jpegxr --- ifneq "$(wildcard $(JPEGXR_DIR)/T835E.pdf)" "" JPEGXR_OUT := $(OUT)/thirdparty/jpegxr JPEGXR_SRC := \ algo.c \ api.c \ flags.c \ init.c \ io.c \ cr_parse.c \ jpegxr_pixelformat.c \ r_parse.c \ r_strip.c \ r_tile_spatial.c \ r_tile_frequency.c \ x_strip.c JPEGXR_OBJ := $(addprefix $(JPEGXR_OUT)/, $(JPEGXR_SRC:%.c=%.o)) $(JPEGXR_OUT): $(MKDIR_CMD) $(JPEGXR_OUT)/%.o: $(JPEGXR_DIR)/Software/%.c | $(JPEGXR_OUT) $(CC_CMD) $(JPEGXR_CFLAGS) JPEGXR_CFLAGS := \ -I$(JPEGXR_DIR) \ -I$(JPEGXR_DIR)/Software \ -DHAVE_JPEGXR endif # --- ZLIB --- ifneq "$(wildcard $(ZLIB_DIR)/README)" "" ZLIB_OUT := $(OUT)/thirdparty/zlib ZLIB_SRC := \ adler32.c \ compress.c \ crc32.c \ deflate.c \ inffast.c \ inflate.c \ inftrees.c \ trees.c \ uncompr.c \ zutil.c \ gzlib.c \ gzwrite.c \ gzclose.c \ gzread.c \ ZLIB_OBJ := $(addprefix $(ZLIB_OUT)/, $(ZLIB_SRC:%.c=%.o)) $(ZLIB_OUT): $(MKDIR_CMD) $(ZLIB_OUT)/%.o: $(ZLIB_DIR)/%.c | $(ZLIB_OUT) $(CC_CMD) -Dverbose=-1 -DHAVE_UNISTD_H -DHAVE_STDARG_H ZLIB_CFLAGS := -I$(ZLIB_DIR) else ZLIB_CFLAGS := $(SYS_ZLIB_CFLAGS) ZLIB_LIBS := $(SYS_ZLIB_LIBS) endif # --- LCMS2 --- ifneq "$(wildcard $(LCMS2_DIR)/INSTALL)" "" LCMS2_OUT := $(OUT)/lcms2 LCMS2_SRC := \ cmsalpha.c \ cmscam02.c \ cmscgats.c \ cmscnvrt.c \ cmserr.c \ cmsgamma.c \ cmsgmt.c \ cmshalf.c \ cmsintrp.c \ cmsio0.c \ cmsio1.c \ cmslut.c \ cmsmd5.c \ cmsmtrx.c \ cmsnamed.c \ cmsopt.c \ cmspack.c \ cmspcs.c \ cmsplugin.c \ cmsps2.c \ cmssamp.c \ cmssm.c \ cmstypes.c \ cmsvirt.c \ cmswtpnt.c \ cmsxform.c \ LCMS2_OBJ := $(addprefix $(LCMS2_OUT)/, $(LCMS2_SRC:%.c=%.o)) $(LCMS2_OUT): $(MKDIR_CMD) $(LCMS2_OUT)/%.o: $(LCMS2_DIR)/src/%.c | $(LCMS2_OUT) $(CC_CMD) -I$(LCMS2_DIR)/include LCMS2_CFLAGS := -I$(LCMS2_DIR)/include else LCMS2_CFLAGS := $(SYS_LCMS2_CFLAGS) LCMS2_LIBS := $(SYS_LCMS2_LIBS) endif # --- cURL --- ifneq "$(wildcard $(CURL_DIR)/README)" "" CURL_LIB := $(OUT)/libcurl.a CURL_OUT := $(OUT)/thirdparty/curl CURL_SRC := \ base64.c \ conncache.c \ connect.c \ content_encoding.c \ curl_addrinfo.c \ dotdot.c \ easy.c \ escape.c \ fileinfo.c \ formdata.c \ getenv.c \ getinfo.c \ hash.c \ hostcheck.c \ hostip4.c \ hostip.c \ hostsyn.c \ http.c \ http_chunks.c \ if2ip.c \ llist.c \ mprintf.c \ multi.c \ netrc.c \ nonblock.c \ openssl.c \ parsedate.c \ pipeline.c \ progress.c \ select.c \ sendf.c \ share.c \ slist.c \ speedcheck.c \ splay.c \ strcase.c \ strdup.c \ strerror.c \ timeval.c \ transfer.c \ url.c \ version.c \ vtls.c \ warnless.c \ wildcard.c $(CURL_LIB): $(addprefix $(CURL_OUT)/, $(CURL_SRC:%.c=%.o)) $(CURL_OUT): $(MKDIR_CMD) CRL_CFLAGS := -DHAVE_CONFIG_H -DBUILDING_LIBCURL -DCURL_STATICLIB \ -DCURL_DISABLE_LDAP -I$(CURL_DIR)/include -I$(CURL_DIR)/lib ifeq "$(HAVE_OPENSSL_SSL)" "yes" CRL_CFLAGS += -DUSE_OPENSSL endif $(CURL_OUT)/%.o: $(CURL_DIR)/lib/%.c | $(CURL_OUT) $(CC_CMD) $(CRL_CFLAGS) $(CURL_OUT)/%.o: $(CURL_DIR)/lib/vtls/%.c | $(CURL_OUT) $(CC_CMD) $(CRL_CFLAGS) CURL_CFLAGS := -I$(CURL_DIR)/include CURL_LIBS := $(SYS_CURL_DEPS) HAVE_CURL := yes else ifeq "$(HAVE_CURL)" "yes" CURL_CFLAGS := $(SYS_CURL_CFLAGS) CURL_LIBS := $(SYS_CURL_LIBS) endif # --- GLFW --- ifneq "$(wildcard $(GLFW_DIR)/README.md)" "" GLFW_LIB := $(OUT)/libglfw.a GLFW_OUT := $(OUT)/thirdparty/glfw ifeq "$(OS)" "MACOS" GLFW_SRC := \ cocoa_init.m \ cocoa_joystick.m \ cocoa_monitor.m \ cocoa_time.c \ cocoa_window.m \ context.c \ init.c \ input.c \ monitor.c \ nsgl_context.m \ posix_tls.c \ vulkan.c \ window.c $(GLFW_OUT)/%.o: $(GLFW_DIR)/src/%.m | $(GLFW_OUT) $(CC_CMD) -D_GLFW_COCOA -D_GLFW_USE_MENUBAR -D_GLFW_USE_RETINA -Wno-deprecated-declarations $(GLFW_OUT)/%.o: $(GLFW_DIR)/src/%.c | $(GLFW_OUT) $(CC_CMD) -D_GLFW_COCOA -D_GLFW_USE_MENUBAR -D_GLFW_USE_RETINA GLFW_OBJ := $(addprefix $(GLFW_OUT)/, $(GLFW_SRC)) GLFW_OBJ := $(GLFW_OBJ:%.c=%.o) GLFW_OBJ := $(GLFW_OBJ:%.m=%.o) $(GLFW_LIB): $(GLFW_OBJ) GLFW_LIBS := -framework OpenGL -framework IOKit -framework CoreVideo -framework Cocoa else GLFW_SRC := \ context.c \ egl_context.c \ glx_context.c \ init.c \ input.c \ linux_joystick.c \ monitor.c \ posix_time.c \ posix_tls.c \ vulkan.c \ window.c \ x11_init.c \ x11_monitor.c \ x11_window.c \ xkb_unicode.c $(GLFW_OUT)/%.o: $(GLFW_DIR)/src/%.c | $(GLFW_OUT) $(CC_CMD) -D_GLFW_X11 $(GLFW_LIB): $(addprefix $(GLFW_OUT)/, $(GLFW_SRC:%.c=%.o)) GLFW_LIBS := -lGL -ldl -lX11 -lXcursor -lXrandr -lXinerama -lpthread endif GLFW_CFLAGS := -I$(GLFW_DIR)/include $(GLFW_OUT): $(MKDIR_CMD) GLFW_SRC_UNUSED := \ mir_init.c \ mir_monitor.c \ mir_window.c \ wgl_context.c \ win32_init.c \ win32_joystick.c \ win32_monitor.c \ win32_time.c \ win32_tls.c \ win32_window.c \ wl_init.c \ wl_monitor.c \ wl_window.c \ HAVE_GLFW := yes else ifeq "$(HAVE_GLFW)" "yes" GLFW_CFLAGS := $(SYS_GLFW_CFLAGS) GLFW_LIBS := $(SYS_GLFW_LIBS) endif # --- X11 --- ifeq "$(HAVE_X11)" "yes" X11_CFLAGS := $(SYS_X11_CFLAGS) X11_LIBS := $(SYS_X11_LIBS) endif # --- OpenSSL --- ifeq "$(HAVE_LIBCRYPTO)" "yes" LIBCRYPTO_CFLAGS := $(SYS_LIBCRYPTO_CFLAGS) LIBCRYPTO_LIBS := $(SYS_LIBCRYPTO_LIBS) endif # --- pthread --- ifneq "$(threading)" "no" ifeq "$(HAVE_PTHREAD)" "yes" THREADING_CFLAGS := $(SYS_PTHREAD_CFLAGS) -DHAVE_PTHREAD THREADING_LIBS := $(SYS_PTHREAD_LIBS) endif endif