diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 258f5622..d1445928 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -27,7 +27,7 @@ jobs: steps: - uses: msys2/setup-msys2@v2 with: - install: base-devel ${{ matrix.prefix }}-toolchain ${{ matrix.prefix }}-qt5-base ${{ matrix.prefix }}-qt5-svg ${{ matrix.prefix }}-libxml2 git unzip p7zip + install: base-devel ${{ matrix.prefix }}-toolchain ${{ matrix.prefix }}-qt5-base ${{ matrix.prefix }}-qt5-svg ${{ matrix.prefix }}-assimp ${{ matrix.prefix }}-libxml2 git unzip p7zip msystem: ${{ matrix.msystem }} path-type: minimal release: false @@ -62,7 +62,7 @@ jobs: - name: Install tools run: | sudo apt-get -qq update - sudo apt-get -y install mesa-common-dev qtbase5-dev libqt5svg5-dev libglib2.0-dev libjpeg-dev libpng-dev + sudo apt-get -y install mesa-common-dev qtbase5-dev libqt5svg5-dev libglib2.0-dev libjpeg-dev libpng-dev libassimp-dev - uses: actions/checkout@v4 with: submodules: recursive diff --git a/COMPILING b/COMPILING index b98454cc..9b02f4cf 100644 --- a/COMPILING +++ b/COMPILING @@ -33,6 +33,7 @@ dependencies: - libxml2 >= 2.0.0 - zlib >= 1.2.0 (for archivezip module) - libpng >= 1.2.0 (for imagepng module) +- libassimp build: run 'make' @@ -76,9 +77,9 @@ environment: - from MSYS2 MINGW32 or MSYS2 MINGW64 shell: pacman -S --needed base-devel 32 bit: - pacman -S --needed mingw-w64-i686-{toolchain,qt5-base,qt5-svg,libxml2} + pacman -S --needed mingw-w64-i686-{toolchain,qt5-base,qt5-svg,assimp,libxml2} 64 bit: - pacman -S --needed mingw-w64-x86_64-{toolchain,qt5-base,qt5-svg,libxml2} + pacman -S --needed mingw-w64-x86_64-{toolchain,qt5-base,qt5-svg,assimp,libxml2} these are only strictly required for gamepacks: pacman -S --needed unzip svn git diff --git a/Makefile b/Makefile index bed4791b..91b41382 100644 --- a/Makefile +++ b/Makefile @@ -86,6 +86,16 @@ CPPFLAGS_QTSVG ?= $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) Qt LIBS_QTSVG ?= $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) Qt5Svg --libs-only-L --libs-only-l $(STDERR_TO_DEVNULL)) CPPFLAGS_QTSVG := $(CPPFLAGS_QTSVG) LIBS_QTSVG := $(LIBS_QTSVG) +ASSIMP_INTERNAL ?= no +CPPFLAGS_ASSIMP ?= $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) assimp --cflags $(STDERR_TO_DEVNULL)) +LIBS_ASSIMP ?= $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKGCONFIG) assimp --libs-only-L --libs-only-l $(STDERR_TO_DEVNULL)) +ifneq ($(ASSIMP_INTERNAL),yes) +CPPFLAGS_ASSIMP := $(CPPFLAGS_ASSIMP) +LIBS_ASSIMP := $(LIBS_ASSIMP) +else +CPPFLAGS_ASSIMP := -Ilibs/assimp/include +LIBS_ASSIMP := -lassimp_ +endif CPPFLAGS_GL ?= LIBS_GL ?= -lGL # -lopengl32 on Win32 CPPFLAGS_DL ?= @@ -392,6 +402,7 @@ dependencies-check: checkheader Qt5Gui QGuiApplication QGuiApplication::exec "$(CPPFLAGS_QTGUI)" "$(LIBS_QTGUI)"; \ checkheader Qt5Widgets QApplication QApplication::exec "$(CPPFLAGS_QTWIDGETS)" "$(LIBS_QTWIDGETS)"; \ checkheader Qt5Svg QSvgWidget QSvgWidget::mouseGrabber "$(CPPFLAGS_QTSVG)" "$(LIBS_QTSVG)"; \ + [ "$(ASSIMP_INTERNAL)" != "yes" ] && checkheader libassimp-dev assimp/Importer.hpp Assimp::Importer::MaxLenHint "$(CPPFLAGS_ASSIMP)" "$(LIBS_ASSIMP)"; \ [ "$(OS)" != "Win32" ] && checkheader libc6-dev dlfcn.h dlopen "$(CPPFLAGS_DL)" "$(LIBS_DL)"; \ checkheader zlib1g-dev zlib.h zlibVersion "$(CPPFLAGS_ZLIB)" "$(LIBS_ZLIB)"; \ [ "$$failed" = "0" ] && $(ECHO) All required libraries have been found! @@ -527,10 +538,12 @@ $(INSTALLDIR)/q3map2.$(EXE): LDFLAGS_EXTRA := -Wl,--stack,4194304 endif endif ifneq ($(OS),Win32) +ifeq ($(ASSIMP_INTERNAL),yes) $(INSTALLDIR)/q3map2.$(EXE): LDFLAGS_EXTRA += -Wl,-rpath '-Wl,$$ORIGIN' endif -$(INSTALLDIR)/q3map2.$(EXE): LIBS_EXTRA := $(LIBS_XML) $(LIBS_GLIB) $(LIBS_PNG) $(LIBS_JPEG) $(LIBS_ZLIB) -lassimp_ -L$(INSTALLDIR) -$(INSTALLDIR)/q3map2.$(EXE): CPPFLAGS_EXTRA := $(CPPFLAGS_XML) $(CPPFLAGS_GLIB) $(CPPFLAGS_PNG) $(CPPFLAGS_JPEG) -Itools/quake3/common -Ilibs -Iinclude -Ilibs/assimp/include +endif +$(INSTALLDIR)/q3map2.$(EXE): LIBS_EXTRA := $(LIBS_XML) $(LIBS_GLIB) $(LIBS_PNG) $(LIBS_JPEG) $(LIBS_ZLIB) $(LIBS_ASSIMP) -L$(INSTALLDIR) +$(INSTALLDIR)/q3map2.$(EXE): CPPFLAGS_EXTRA := $(CPPFLAGS_XML) $(CPPFLAGS_GLIB) $(CPPFLAGS_PNG) $(CPPFLAGS_JPEG) -Itools/quake3/common -Ilibs -Iinclude $(CPPFLAGS_ASSIMP) $(INSTALLDIR)/q3map2.$(EXE): \ tools/quake3/common/cmdlib.o \ tools/quake3/common/qimagelib.o \ @@ -593,7 +606,7 @@ $(INSTALLDIR)/q3map2.$(EXE): \ libfilematch.$(A) \ libl_net.$(A) \ $(if $(findstring Win32,$(OS)),icons/q3map2.o,) \ - | $(INSTALLDIR)/libassimp_.$(DLL) \ + | $(if $(findstring yes,$(ASSIMP_INTERNAL)),$(INSTALLDIR)/libassimp_.$(DLL),) \ libmathlib.$(A): CPPFLAGS_EXTRA := -Ilibs libmathlib.$(A): \ @@ -1067,15 +1080,17 @@ $(INSTALLDIR)/modules/mapxml.$(DLL): \ plugins/mapxml/xmlwrite.o \ ifneq ($(OS),Win32) +ifeq ($(ASSIMP_INTERNAL),yes) $(INSTALLDIR)/modules/assmodel.$(DLL): LDFLAGS_EXTRA := -Wl,-rpath '-Wl,$$ORIGIN/..' endif -$(INSTALLDIR)/modules/assmodel.$(DLL): LIBS_EXTRA := -lassimp_ -L$(INSTALLDIR) -$(INSTALLDIR)/modules/assmodel.$(DLL): CPPFLAGS_EXTRA := -Ilibs -Iinclude -Ilibs/assimp/include $(CPPFLAGS_QTGUI) +endif +$(INSTALLDIR)/modules/assmodel.$(DLL): LIBS_EXTRA := $(LIBS_ASSIMP) -L$(INSTALLDIR) +$(INSTALLDIR)/modules/assmodel.$(DLL): CPPFLAGS_EXTRA := -Ilibs -Iinclude $(CPPFLAGS_ASSIMP) $(CPPFLAGS_QTGUI) $(INSTALLDIR)/modules/assmodel.$(DLL): \ plugins/assmodel/mdlimage.o \ plugins/assmodel/model.o \ plugins/assmodel/plugin.o \ - | $(INSTALLDIR)/libassimp_.$(DLL) \ + | $(if $(findstring yes,$(ASSIMP_INTERNAL)),$(INSTALLDIR)/libassimp_.$(DLL),) \ $(INSTALLDIR)/modules/shaders.$(DLL): LIBS_EXTRA := $(LIBS_GLIB) $(INSTALLDIR)/modules/shaders.$(DLL): CPPFLAGS_EXTRA := $(CPPFLAGS_GLIB) -Ilibs -Iinclude