freeimage fix clang build

bgb
This commit is contained in:
Raed Rizqie
2021-11-01 00:36:05 +08:00
parent 0d9d12985a
commit bbd2de9d31
3 changed files with 80 additions and 179 deletions

View File

@@ -1,37 +1,34 @@
diff -rupN FreeImage/Makefile.fip FreeImage-new/Makefile.fip
--- FreeImage/Makefile.fip 2015-09-17 22:51:21.797196208 +0200
+++ FreeImage-new/Makefile.fip 2015-09-24 01:18:01.576395215 +0200
@@ -3,6 +3,14 @@
diff -urN FreeImage-orig/Makefile.fip FreeImage/Makefile.fip
--- FreeImage-orig/Makefile.fip 2015-03-10 15:03:56 +0800
+++ FreeImage/Makefile.fip 2021-11-01 18:34:10 +0800
@@ -3,6 +3,12 @@
# This file can be generated by ./genfipsrclist.sh
include fipMakefile.srcs
+CC = gcc
+CXX = g++
+LD = g++
+AR = ar
+DLLTOOL = dlltool
+RC = windres
+PKGCONFIG = pkg-config
+
# General configuration variables:
DESTDIR ?= /
INCDIR ?= $(DESTDIR)/usr/include
@@ -24,24 +32,21 @@ override CFLAGS += -DNO_LCMS
override CFLAGS += -DDISABLE_PERF_MEASUREMENT -D__ANSI__
override CFLAGS += $(INCLUDE)
@@ -24,22 +30,20 @@
CFLAGS += -DDISABLE_PERF_MEASUREMENT -D__ANSI__
CFLAGS += $(INCLUDE)
CXXFLAGS ?= -O3 -fPIC -fexceptions -fvisibility=hidden -Wno-ctor-dtor-privacy
+override CXXFLAGS += -DFIP_EXPORTS
+CXXFLAGS += -DFIP_EXPORTS -DOPJ_EXPORTS
# LibJXR
override CXXFLAGS += -D__ANSI__
override CXXFLAGS += $(INCLUDE)
LDFLAGS ?=
-override LDFLAGS += -LDist -lfreeimage-$(VER_MAJOR).$(VER_MINOR)
CXXFLAGS += -D__ANSI__
CXXFLAGS += $(INCLUDE)
-
-ifeq ($(shell sh -c 'uname -m 2>/dev/null || echo not'),x86_64)
- override CFLAGS += -fPIC
- override CXXFLAGS += -fPIC
- CFLAGS += -fPIC
- CXXFLAGS += -fPIC
-endif
+override LDFLAGS += -LDist -lfreeimage-$(VER_MAJOR) -lgdi32
+LDFLAGS ?=
+LDFLAGS += -LDist -lfreeimage-$(VER_MAJOR) -lgdi32
TARGET = freeimageplus
STATICLIB = lib$(TARGET).a
@@ -40,34 +37,34 @@ diff -rupN FreeImage/Makefile.fip FreeImage-new/Makefile.fip
-VERLIBNAME = $(LIBNAME).$(VER_MAJOR)
+SHAREDLIB = lib$(TARGET)-$(VER_MAJOR).dll
+IMPORTLIB = lib$(TARGET).dll.a
+EXPORTLIB = lib$(TARGET).exp
HEADER = Source/FreeImage.h
HEADERFIP = Wrapper/FreeImagePlus/FreeImagePlus.h
+RCFILE = Wrapper/FreeImagePlus/FreeImagePlus.rc
default: all
@@ -51,7 +56,8 @@ all: dist
@@ -49,7 +53,7 @@
dist: FreeImage
mkdir -p Dist
cp *.a Dist/
- cp *.so Dist/
+ cp *.dll Dist/
+ cp *.dll.a Dist/
cp Source/FreeImage.h Dist/
cp Wrapper/FreeImagePlus/FreeImagePlus.h Dist/
@@ -66,21 +72,14 @@ FreeImage: $(STATICLIB) $(SHAREDLIB)
@@ -64,21 +68,13 @@
.cpp.o:
$(CXX) $(CXXFLAGS) -c $< -o $@
-$(STATICLIB): $(MODULES)
- $(AR) r $@ $(MODULES)
+%.coff: %.rc
+ $(RC) $(RCFLAGS) -o $@ $<
+
$(STATICLIB): $(MODULES)
- $(AR) r $@ $(MODULES)
+ $(AR) rs $@ $(MODULES)
-$(SHAREDLIB): $(MODULES)
- $(CC) -shared -Wl,-soname,$(VERLIBNAME) $(LDFLAGS) -o $@ $(MODULES) $(LIBRARIES)
$(SHAREDLIB): $(MODULES)
- $(CC) -s -shared -Wl,-soname,$(VERLIBNAME) $(LDFLAGS) -o $@ $(MODULES) $(LIBRARIES)
-
-install:
- install -d $(INCDIR) $(INSTALLDIR)
@@ -77,46 +74,50 @@ diff -rupN FreeImage/Makefile.fip FreeImage-new/Makefile.fip
- install -m 755 -o root -g root $(SHAREDLIB) $(INSTALLDIR)
- ln -sf $(SHAREDLIB) $(INSTALLDIR)/$(VERLIBNAME)
- ln -sf $(VERLIBNAME) $(INSTALLDIR)/$(LIBNAME)
+$(STATICLIB): $(MODULES)
+ $(AR) rs $@ $(MODULES)
+ $(CC) -shared -Wl,--out-implib,$(IMPORTLIB) -o $@ $(MODULES) $(LDFLAGS) $(LIBRARIES)
-clean:
- rm -f core Dist/*.* u2dtmp* $(MODULES) $(STATICLIB) $(SHAREDLIB) $(LIBNAME)
+$(IMPORTLIB) $(EXPORTLIB): $(MODULES)
+ $(DLLTOOL) -e $(EXPORTLIB) -l $(IMPORTLIB) -D $(SHAREDLIB) $(DLLTOOLFLAGS) $(MODULES)
+$(SHAREDLIB): $(EXPORTLIB) $(RESOURCE)
+ $(LD) -shared -o $@ $(EXPORTLIB) $(MODULES) $(RESOURCE) $(LDFLAGS)
diff -rupN FreeImage/Makefile.gnu FreeImage-new/Makefile.gnu
--- FreeImage/Makefile.gnu 2015-09-17 22:51:21.798196232 +0200
+++ FreeImage-new/Makefile.gnu 2015-09-24 01:24:52.381788259 +0200
@@ -3,6 +3,14 @@
diff -urN FreeImage-orig/Makefile.gnu FreeImage/Makefile.gnu
--- FreeImage-orig/Makefile.gnu 2015-03-10 15:04:00 +0800
+++ FreeImage/Makefile.gnu 2021-11-01 18:33:44 +0800
@@ -3,6 +3,12 @@
# This file can be generated by ./gensrclist.sh
include Makefile.srcs
+CC = gcc
+CXX = g++
+LD = g++
+AR = ar
+DLLTOOL = dlltool
+RC = windres
+PKGCONFIG = pkg-config
+
# General configuration variables:
DESTDIR ?= /
INCDIR ?= $(DESTDIR)/usr/include
@@ -16,18 +24,14 @@ LIBRARIES = -lstdc++
@@ -16,6 +22,7 @@
MODULES = $(SRCS:.c=.o)
MODULES := $(MODULES:.cpp=.o)
CFLAGS ?= -O3 -fPIC -fexceptions -fvisibility=hidden
-override CFLAGS += $(INCLUDE) -D__ANSI__ -I/usr/include/jxrlib $(shell pkg-config --cflags OpenEXR libopenjp2 libraw libpng libtiff-4 libwebp libwebpmux zlib)
-override LDFLAGS += -ljpeg -ljpegxr -ljxrglue $(shell pkg-config --libs OpenEXR libopenjp2 libraw libpng libtiff-4 libwebp libwebpmux zlib)
-
+CFLAGS += -D__ANSI__ -DFREEIMAGE_EXPORTS $(INCLUDE) -I$(shell ${PKGCONFIG} --variable pc_system_includedirs pkg-config)/jxrlib $(shell ${PKGCONFIG} --cflags OpenEXR libopenjp2 libraw libpng libtiff-4 libwebp libwebpmux zlib)
# OpenJPEG
CFLAGS += -DOPJ_STATIC
# LibRaw
@@ -25,19 +32,16 @@
CFLAGS += $(INCLUDE)
CXXFLAGS ?= -O3 -fPIC -fexceptions -fvisibility=hidden -Wno-ctor-dtor-privacy
# LibJXR
-CXXFLAGS += -D__ANSI__
-CXXFLAGS += $(INCLUDE)
+CXXFLAGS += -D__ANSI__ -DFREEIMAGE_EXPORTS -DOPJ_EXPORTS
+CXXFLAGS += $(INCLUDE) -I$(shell ${PKGCONFIG} --variable pc_system_includedirs pkg-config)/jxrlib $(shell ${PKGCONFIG} --cflags OpenEXR libopenjp2 libraw libpng libtiff-4 libwebp libwebpmux zlib)
-ifeq ($(shell sh -c 'uname -m 2>/dev/null || echo not'),x86_64)
- override CFLAGS += -fPIC
- CFLAGS += -fPIC
- CXXFLAGS += -fPIC
-endif
+override CFLAGS += $(INCLUDE) -D__ANSI__ -DFREEIMAGE_EXPORTS -I$(shell ${PKGCONFIG} --variable pc_system_includedirs pkg-config)/jxrlib $(shell ${PKGCONFIG} --cflags OpenEXR libopenjp2 libraw libpng libtiff-4 libwebp libwebpmux zlib)
+override LDFLAGS += -ljpeg -ljpegxr -ljxrglue $(shell ${PKGCONFIG} --libs OpenEXR libopenjp2 libraw libpng libtiff-4 libwebp libwebpmux zlib)
+LDFLAGS ?=
+LDFLAGS += $(shell ${PKGCONFIG} --libs OpenEXR libopenjp2 libraw libpng libtiff-4 libwebp libwebpmux zlib) -ljpeg -ljpegxr -ljxrglue
TARGET = freeimage
STATICLIB = lib$(TARGET).a
@@ -125,28 +126,27 @@ diff -rupN FreeImage/Makefile.gnu FreeImage-new/Makefile.gnu
-VERLIBNAME = $(LIBNAME).$(VER_MAJOR)
+SHAREDLIB = lib$(TARGET)-$(VER_MAJOR).dll
+IMPORTLIB = lib$(TARGET).dll.a
+EXPORTLIB = lib$(TARGET).exp
HEADER = Source/FreeImage.h
@@ -39,7 +43,8 @@ all: dist
@@ -49,7 +53,7 @@
dist: FreeImage
mkdir -p Dist
cp *.a Dist/
- cp *.so Dist/
+ cp *.dll Dist/
+ cp *.dll.a Dist/
cp Source/FreeImage.h Dist/
dos2unix:
@@ -54,20 +59,10 @@ FreeImage: $(STATICLIB) $(SHAREDLIB)
$(CXX) $(CFLAGS) -c $< -o $@
@@ -64,20 +68,9 @@
$(CXX) $(CXXFLAGS) -c $< -o $@
$(STATICLIB): $(MODULES)
- $(AR) r $@ $(MODULES)
-
-$(SHAREDLIB): $(MODULES)
- $(CC) -shared -Wl,-soname,$(VERLIBNAME) $(LDFLAGS) -o $@ $(MODULES) $(LIBRARIES)
+ $(AR) rs $@ $(MODULES)
$(SHAREDLIB): $(MODULES)
- $(CC) -s -shared -Wl,-soname,$(VERLIBNAME) $(LDFLAGS) -o $@ $(MODULES) $(LIBRARIES)
-
-install:
- install -d $(INCDIR) $(INSTALLDIR)
@@ -156,12 +156,8 @@ diff -rupN FreeImage/Makefile.gnu FreeImage-new/Makefile.gnu
- ln -sf $(SHAREDLIB) $(INSTALLDIR)/$(VERLIBNAME)
- ln -sf $(VERLIBNAME) $(INSTALLDIR)/$(LIBNAME)
-# ldconfig
+ $(AR) rs $@ $(MODULES)
+ $(CC) -shared -Wl,--out-implib,$(IMPORTLIB) -o $@ $(MODULES) $(LDFLAGS) $(LIBRARIES)
-clean:
- rm -f core Dist/*.* u2dtmp* $(MODULES) $(STATICLIB) $(SHAREDLIB) $(LIBNAME)
+$(IMPORTLIB) $(EXPORTLIB): $(MODULES)
+ $(DLLTOOL) -e $(EXPORTLIB) -l $(IMPORTLIB) -D $(SHAREDLIB) $(DLLTOOLFLAGS) $(MODULES)
+$(SHAREDLIB): $(EXPORTLIB) $(RESOURCE)
+ $(LD) -shared -o $@ $(EXPORTLIB) $(MODULES) $(RESOURCE) $(LDFLAGS)

View File

@@ -27,94 +27,7 @@ diff -rupN FreeImage/gensrclist.sh FreeImage-new/gensrclist.sh
echo "VER_MAJOR = 3" > Makefile.srcs
echo "VER_MINOR = 18.0" >> Makefile.srcs
diff -rupN FreeImage/Makefile.fip FreeImage-new/Makefile.fip
--- FreeImage/Makefile.fip 2015-03-10 08:03:56.000000000 +0100
+++ FreeImage-new/Makefile.fip 2018-07-31 23:37:58.556953201 +0200
@@ -17,20 +17,22 @@ MODULES = $(SRCS:.c=.o)
MODULES := $(MODULES:.cpp=.o)
CFLAGS ?= -O3 -fPIC -fexceptions -fvisibility=hidden
# OpenJPEG
-CFLAGS += -DOPJ_STATIC
+override CFLAGS += -DOPJ_STATIC
# LibRaw
-CFLAGS += -DNO_LCMS
+override CFLAGS += -DNO_LCMS
# LibJXR
-CFLAGS += -DDISABLE_PERF_MEASUREMENT -D__ANSI__
-CFLAGS += $(INCLUDE)
+override CFLAGS += -DDISABLE_PERF_MEASUREMENT -D__ANSI__
+override CFLAGS += $(INCLUDE)
CXXFLAGS ?= -O3 -fPIC -fexceptions -fvisibility=hidden -Wno-ctor-dtor-privacy
# LibJXR
-CXXFLAGS += -D__ANSI__
-CXXFLAGS += $(INCLUDE)
+override CXXFLAGS += -D__ANSI__
+override CXXFLAGS += $(INCLUDE)
+LDFLAGS ?=
+override LDFLAGS += -LDist -lfreeimage-$(VER_MAJOR).$(VER_MINOR)
ifeq ($(shell sh -c 'uname -m 2>/dev/null || echo not'),x86_64)
- CFLAGS += -fPIC
- CXXFLAGS += -fPIC
+ override CFLAGS += -fPIC
+ override CXXFLAGS += -fPIC
endif
TARGET = freeimageplus
@@ -68,7 +70,7 @@ $(STATICLIB): $(MODULES)
$(AR) r $@ $(MODULES)
$(SHAREDLIB): $(MODULES)
- $(CC) -s -shared -Wl,-soname,$(VERLIBNAME) $(LDFLAGS) -o $@ $(MODULES) $(LIBRARIES)
+ $(CC) -shared -Wl,-soname,$(VERLIBNAME) $(LDFLAGS) -o $@ $(MODULES) $(LIBRARIES)
install:
install -d $(INCDIR) $(INSTALLDIR)
diff -rupN FreeImage/Makefile.gnu FreeImage-new/Makefile.gnu
--- FreeImage/Makefile.gnu 2015-03-10 08:04:00.000000000 +0100
+++ FreeImage-new/Makefile.gnu 2018-07-31 23:37:58.556953201 +0200
@@ -16,21 +16,11 @@ LIBRARIES = -lstdc++
MODULES = $(SRCS:.c=.o)
MODULES := $(MODULES:.cpp=.o)
CFLAGS ?= -O3 -fPIC -fexceptions -fvisibility=hidden
-# OpenJPEG
-CFLAGS += -DOPJ_STATIC
-# LibRaw
-CFLAGS += -DNO_LCMS
-# LibJXR
-CFLAGS += -DDISABLE_PERF_MEASUREMENT -D__ANSI__
-CFLAGS += $(INCLUDE)
-CXXFLAGS ?= -O3 -fPIC -fexceptions -fvisibility=hidden -Wno-ctor-dtor-privacy
-# LibJXR
-CXXFLAGS += -D__ANSI__
-CXXFLAGS += $(INCLUDE)
+override CFLAGS += $(INCLUDE) -D__ANSI__ -I/usr/include/jxrlib $(shell pkg-config --cflags OpenEXR libopenjp2 libraw libpng libtiff-4 libwebp libwebpmux zlib)
+override LDFLAGS += -ljpeg -ljpegxr -ljxrglue $(shell pkg-config --libs OpenEXR libopenjp2 libraw libpng libtiff-4 libwebp libwebpmux zlib)
ifeq ($(shell sh -c 'uname -m 2>/dev/null || echo not'),x86_64)
- CFLAGS += -fPIC
- CXXFLAGS += -fPIC
+ override CFLAGS += -fPIC
endif
TARGET = freeimage
@@ -61,13 +51,13 @@ FreeImage: $(STATICLIB) $(SHAREDLIB)
$(CC) $(CFLAGS) -c $< -o $@
.cpp.o:
- $(CXX) $(CXXFLAGS) -c $< -o $@
+ $(CXX) $(CFLAGS) -c $< -o $@
$(STATICLIB): $(MODULES)
$(AR) r $@ $(MODULES)
$(SHAREDLIB): $(MODULES)
- $(CC) -s -shared -Wl,-soname,$(VERLIBNAME) $(LDFLAGS) -o $@ $(MODULES) $(LIBRARIES)
+ $(CC) -shared -Wl,-soname,$(VERLIBNAME) $(LDFLAGS) -o $@ $(MODULES) $(LIBRARIES)
install:
install -d $(INCDIR) $(INSTALLDIR)
diff -rupN FreeImage/Source/FreeImage/J2KHelper.cpp FreeImage-new/Source/FreeImage/J2KHelper.cpp
diff -rupN FreeImage/Source/FreeImage/J2KHelper.cpp FreeImage-new/Source/FreeImage/J2KHelper.cpp
--- FreeImage/Source/FreeImage/J2KHelper.cpp 2015-03-03 23:07:08.000000000 +0100
+++ FreeImage-new/Source/FreeImage/J2KHelper.cpp 2018-07-31 23:37:58.557953201 +0200
@@ -21,7 +21,7 @@

View File

@@ -7,10 +7,11 @@ provides=("${MINGW_PACKAGE_PREFIX}-${_realname}")
conflicts=("${MINGW_PACKAGE_PREFIX}-${_realname}")
replaces=("${MINGW_PACKAGE_PREFIX}-${_realname}")
pkgver=3.18.0
pkgrel=6
pkgrel=7
libver=3
pkgdesc="Library project for developers who would like to support popular graphics image formats (mingw-w64)"
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32')
license=('GPL' 'custom:FIPL')
url="https://freeimage.sourceforge.io/"
depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs"
@@ -28,19 +29,20 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-gcc"
"dos2unix" "make" "lndir")
options=('strip' 'staticlibs' '!buildflags')
source=("https://downloads.sourceforge.net/sourceforge/freeimage/${_realname}${pkgver//./}.zip"
'FreeImage-3.17.0_mingw-makefiles.patch'
'FreeImage-3.18.0_mingw-makefiles.patch'
'FreeImage-3.18.0_unbundle.patch'
'freeimage-libraw-0.20.patch')
sha256sums=('f41379682f9ada94ea7b34fe86bf9ee00935a3147be41b6569c9605a53e438fd'
'c68da81f38e122943c3c1f0d42b67766a326a7dcfa99fe523ac2fc74e6cec965'
'029960951b743bbf78557d78cd3ac5c417146b169f65aaf9fc2c7a914a87611b'
'8f8988c65ca775c02247adbc770b8c9cff5b528500dc761b5f8abc3192d2b478'
'c3e25d4d51d89dbefb197fc6eb2f7d3eaccb4b90d6408537eb4f717fd3912fa3'
'71c25974c25dfced11b08206aae6e759675b53bae061be5f34fa1107beec9233')
prepare() {
cd ${srcdir}/${_realname}
patch -p1 -i ${srcdir}/FreeImage-3.18.0_mingw-makefiles.patch
patch -p1 -i ${srcdir}/FreeImage-3.18.0_unbundle.patch
patch -p1 -i ${srcdir}/FreeImage-3.17.0_mingw-makefiles.patch
# taken from Arch
patch -p1 -i ${srcdir}/freeimage-libraw-0.20.patch
@@ -67,41 +69,31 @@ prepare() {
}
build() {
cd ${srcdir}/${_realname}
cd "${srcdir}"
rm -rf build-${MSYSTEM} | true
cp -r "${_realname}" "build-${MSYSTEM}"
mkdir -p ${srcdir}/build-${CARCH}
lndir ${srcdir}/FreeImage ${srcdir}/build-${CARCH}
plain "Build shared version..."
cd ${srcdir}/build-${CARCH}
msg "Building freeimage..."
cd "${srcdir}/build-${MSYSTEM}"
make \
MINGW_TARGET=${MINGW_CHOST} \
-f Makefile.gnu
MINGW_TARGET=${MINGW_CHOST} -f Makefile.gnu
msg "Building freeimageplus..."
make \
MINGW_TARGET=${MINGW_CHOST} \
-f Makefile.fip
MINGW_TARGET=${MINGW_CHOST} -f Makefile.fip
}
package() {
install -d "${pkgdir}${MINGW_PREFIX}"/lib
install -d "${pkgdir}${MINGW_PREFIX}"/bin
install -d "${pkgdir}${MINGW_PREFIX}"/include
install -d "${pkgdir}${MINGW_PREFIX}"/share/doc/FreeImage
cd "${srcdir}/build-${MSYSTEM}"
install -Dm755 Dist/libfreeimage-${libver}.dll "${pkgdir}${MINGW_PREFIX}/bin/libfreeimage-${libver}.dll"
install -Dm644 Dist/libfreeimage.dll.a "${pkgdir}${MINGW_PREFIX}/lib/libfreeimage.dll.a"
install -Dm755 Dist/libfreeimageplus-${libver}.dll "${pkgdir}${MINGW_PREFIX}/bin/libfreeimageplus-${libver}.dll"
install -Dm644 Dist/libfreeimageplus.dll.a "${pkgdir}${MINGW_PREFIX}/lib/libfreeimageplus.dll.a"
install -Dm644 Dist/FreeImage.h "${pkgdir}${MINGW_PREFIX}/include/FreeImage.h"
install -Dm644 Dist/FreeImagePlus.h "${pkgdir}${MINGW_PREFIX}/include/FreeImagePlus.h"
cd ${srcdir}/build-${CARCH}
install -m755 Dist/libfreeimage-*.dll "${pkgdir}${MINGW_PREFIX}"/bin/
install -m644 Dist/libfreeimage.dll.a "${pkgdir}${MINGW_PREFIX}"/lib/
install -m755 Dist/libfreeimageplus-*.dll "${pkgdir}${MINGW_PREFIX}"/bin/
install -m644 Dist/libfreeimageplus.dll.a "${pkgdir}${MINGW_PREFIX}"/lib/
install -m644 Dist/FreeImage.h "${pkgdir}${MINGW_PREFIX}"/include/
install -m644 Dist/FreeImagePlus.h "${pkgdir}${MINGW_PREFIX}"/include/
install -Dm644 Dist/libfreeimage.a "${pkgdir}${MINGW_PREFIX}/lib/libfreeimage.a"
install -Dm644 Dist/libfreeimageplus.a "${pkgdir}${MINGW_PREFIX}/lib/libfreeimageplus.a"
install -m644 Whatsnew.txt "${pkgdir}${MINGW_PREFIX}"/share/doc/FreeImage/
install -m644 license-fi.txt "${pkgdir}${MINGW_PREFIX}"/share/doc/FreeImage/
install -m644 license-gplv2.txt "${pkgdir}${MINGW_PREFIX}"/share/doc/FreeImage/
install -m644 license-gplv3.txt "${pkgdir}${MINGW_PREFIX}"/share/doc/FreeImage/
install -m644 Dist/libfreeimage.a "${pkgdir}${MINGW_PREFIX}"/lib/
install -m644 Dist/libfreeimageplus.a "${pkgdir}${MINGW_PREFIX}"/lib/
install -Dm644 license-fi.txt "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE"
}