summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Wey2017-05-19 20:29:37 +0200
committerMike Wey2017-05-19 20:31:44 +0200
commit87c811161c608f8428ff8e399c60f9672c6cfc7e (patch)
tree59f2d3656e14e13c32354a835a5251bea864a174
parent1f55c1eaf58bd2bcdb8d11656e816db2e9f05682 (diff)
Swith to using a config file.
This is hopefully a first step to supporting dub. See #12
-rw-r--r--GNUmakefile33
-rw-r--r--dmagick/c/magickModule.d8
-rw-r--r--dmagick/c/magickType.d18
-rw-r--r--dmagick/c/magickVersion.d311
-rw-r--r--dmagick/c/magickVersion.d.in48
-rw-r--r--dmagick/c/quantum.d4
-rw-r--r--dmagick/c/resample.d30
-rw-r--r--windows.mak8
8 files changed, 98 insertions, 362 deletions
diff --git a/GNUmakefile b/GNUmakefile
index 94d2c7f..55e5b35 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -48,37 +48,27 @@ ifeq ("$(ARCH)", "x86_64")
LDFLAGS+=-m64
endif
-MAGICKCORELIB=$(LINKERFLAG)$(lastword $(shell pkg-config --libs MagickCore))
+MAGICKCORELIB=$(LINKERFLAG)-l$(shell pkg-config --variable=libname MagickCore)
AR=ar
RANLIB=ranlib
QUANTUMDEPTH = $(filter Q%,$(shell convert --version))
-MAGICKVERSION = $(firstword $(subst -, ,$(subst .,,$(word 3,$(shell convert --version)))))
+MAGICKVERSION = $(firstword $(subst -, ,$(word 3,$(shell convert --version))))
HDRISUPPORT = $(findstring HDRI,$(shell convert --version | grep HDRI))
-WRAPEDVERSION = $(subst 0x,,$(subst ;,,$(lastword $(shell grep "enum\ MagickLibVersion\ " dmagick/c/magickVersion.d))))
-
-ifneq ("$(QUANTUMDEPTH)","Q16")
- VERSIONS+= $(VERSIONFLAG)$(subst Q,Quantum,$(QUANTUMDEPTH))
-endif
-
-ifneq ("$(MAGICKVERSION)","$(WRAPEDVERSION)")
- VERSIONS+= $(VERSIONFLAG)MagickCore_$(MAGICKVERSION)
-endif
ifeq ("$(HDRISUPPORT)","HDRI")
- VERSIONS+= $(VERSIONFLAG)MagickCore_HDRI
-endif
-
-ifdef VERSIONS
- DCFLAGS+=$(VERSIONS)
+ HDRI=true
+else
+ HDRI=false
endif
#######################################################################
LIBNAME_DMAGICK = libDMagick.a
SOURCES_DMAGICK = $(sort $(wildcard dmagick/*.d)) \
- $(sort $(wildcard dmagick/c/*.d))
+ $(sort $(wildcard dmagick/c/*.d)) \
+ dmagick/c/magickVersion.d
OBJECTS_DMAGICK = $(patsubst %.d,%.o,$(SOURCES_DMAGICK))
DOCS_DMAGICK = $(patsubst dmagick/%.d,docs/%.html,$(SOURCES_DMAGICK))
@@ -91,9 +81,15 @@ $(LIBNAME_DMAGICK): $(OBJECTS_DMAGICK)
$(AR) rcs $@ $^
$(RANLIB) $@
+dmagick/c/magickVersion.d: dmagick/c/magickVersion.d.in
+ sed 's/@MagickLibVersion@/$(subst .,,$(MAGICKVERSION))/g' $< > $@
+ sed -i 's/@MagickLibVersionText@/$(MAGICKVERSION)/g' $@
+ sed -i 's/@QuantumDepth@/$(subst Q,,$(QUANTUMDEPTH))/g' $@
+ sed -i 's/@HDRI@/$(HDRI)/g' $@
+
#######################################################################
-%.o : %.d
+%.o : %.d dmagick/c/magickVersion.d
$(DC) $(DCFLAGS) -c $< $(output)
#######################################################################
@@ -145,6 +141,7 @@ uninstall:
rm -f $(DESTDIR)$(prefix)/lib/pkgconfig/DMagick.pc
clean:
+ rm -rf dmagick/c/magickVersion.d
rm -rf $(LIBNAME_DMAGICK) $(OBJECTS_DMAGICK)
rm -rf $(DOCS_DMAGICK) docs/c
rm -rf unittest.o unittest
diff --git a/dmagick/c/magickModule.d b/dmagick/c/magickModule.d
index 8aa3a6e..a40ce0c 100644
--- a/dmagick/c/magickModule.d
+++ b/dmagick/c/magickModule.d
@@ -16,7 +16,7 @@ extern(C)
MagickImageFilterModule
}
- struct ModuleInfo
+ struct MagickModuleInfo
{
char*
path,
@@ -37,7 +37,7 @@ extern(C)
MagickBooleanType
stealth;
- ModuleInfo*
+ MagickModuleInfo*
previous,
next;
@@ -49,7 +49,7 @@ extern(C)
char** GetModuleList(const(char)*, const MagickModuleType, size_t*, ExceptionInfo*);
- const(ModuleInfo)** GetModuleInfoList(const(char)*, size_t*, ExceptionInfo*);
+ const(MagickModuleInfo)** GetModuleInfoList(const(char)*, size_t*, ExceptionInfo*);
static if ( MagickLibVersion < 0x689 )
{
@@ -62,7 +62,7 @@ extern(C)
MagickBooleanType OpenModule(const(char)*, ExceptionInfo*);
MagickBooleanType OpenModules(ExceptionInfo*);
- ModuleInfo* GetModuleInfo(const(char)*, ExceptionInfo*);
+ MagickModuleInfo* GetModuleInfo(const(char)*, ExceptionInfo*);
void DestroyModuleList();
void ModuleComponentTerminus();
diff --git a/dmagick/c/magickType.d b/dmagick/c/magickType.d
index 8666820..9103823 100644
--- a/dmagick/c/magickType.d
+++ b/dmagick/c/magickType.d
@@ -19,13 +19,13 @@ extern (C)
alias double MagickDoubleT;
}
- version(Quantum8)
+ static if(MagickQuantumDepth == 8)
{
/**
* Quantum is an alias for the smallest integer that can hold
* a pixel channel.
*/
- version(MagickCore_HDRI)
+ static if(MagickHDRISupport)
alias float Quantum;
else
alias ubyte Quantum;
@@ -44,7 +44,6 @@ extern (C)
* as Quantum.max except when the Quantum dept is 64 bits.
*/
enum QuantumRange = ubyte.max;
- enum MagickQuantumDepth = 8;
enum MaxColormapSize = 256;
static if ( MagickLibVersion < 0x678 )
@@ -53,13 +52,13 @@ extern (C)
enum MagickHuge = 1.0e6;
}
}
- else version(Quantum32)
+ else static if(MagickQuantumDepth == 32)
{
/**
* Quantum is an alias for the smallest integer that can hold
* a pixel channel.
*/
- version(MagickCore_HDRI)
+ static if(MagickHDRISupport)
{
static if ( MagickLibVersion >= 0x690 )
alias double Quantum;
@@ -83,7 +82,6 @@ extern (C)
* as Quantum.max except when the Quantum dept is 64 bits.
*/
enum QuantumRange = uint.max;
- enum MagickQuantumDepth = 32;
enum MaxColormapSize = 65536;
static if ( MagickLibVersion < 0x678 )
@@ -92,7 +90,7 @@ extern (C)
enum MagickHuge = 1.0e12;
}
}
- else version(Quantum64)
+ else static if(MagickQuantumDepth == 64)
{
/**
* Quantum is an alias for the smallest integer that can hold
@@ -117,7 +115,6 @@ extern (C)
* as Quantum.max except when the Quantum dept is 64 bits.
*/
enum QuantumRange = 18446744073709551615.0;
- enum MagickQuantumDepth = 64;
enum MaxColormapSize = 65536;
static if ( MagickLibVersion < 0x678 )
@@ -132,7 +129,7 @@ extern (C)
* Quantum is an alias for the smallest integer that can hold
* a pixel channel.
*/
- version(MagickCore_HDRI)
+ static if(MagickHDRISupport)
alias float Quantum;
else
alias ushort Quantum;
@@ -151,7 +148,6 @@ extern (C)
* as Quantum.max except when the Quantum dept is 64 bits.
*/
enum QuantumRange = ushort.max;
- enum MagickQuantumDepth = 16;
enum MaxColormapSize = 65536;
static if ( MagickLibVersion < 0x678 )
@@ -161,6 +157,8 @@ extern (C)
}
}
+ alias MagickQuantumDepth = dmagick.c.magickVersion.MagickQuantumDepth;
+
static if ( MagickLibVersion == 0x678 )
{
enum MagickRealType MagickEpsilon = 2.220446e-16;
diff --git a/dmagick/c/magickVersion.d b/dmagick/c/magickVersion.d
deleted file mode 100644
index a7ae11c..0000000
--- a/dmagick/c/magickVersion.d
+++ /dev/null
@@ -1,311 +0,0 @@
-module dmagick.c.magickVersion;
-
-import core.stdc.config;
-import core.stdc.stdio;
-
-extern(C)
-{
- version(MagickCore_660)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x660;
- ///ditto
- enum MagickLibVersionText = "6.6.0";
- }
- else version(MagickCore_661)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x661;
- ///ditto
- enum MagickLibVersionText = "6.6.1";
- }
- else version(MagickCore_662)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x662;
- ///ditto
- enum MagickLibVersionText = "6.6.2";
- }
- else version(MagickCore_663)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x663;
- ///ditto
- enum MagickLibVersionText = "6.6.3";
- }
- else version(MagickCore_664)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x664;
- ///ditto
- enum MagickLibVersionText = "6.6.4";
- }
- else version(MagickCore_665)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x665;
- ///ditto
- enum MagickLibVersionText = "6.6.5";
- }
- else version(MagickCore_666)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x666;
- ///ditto
- enum MagickLibVersionText = "6.6.6";
- }
- else version(MagickCore_667)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x667;
- ///ditto
- enum MagickLibVersionText = "6.6.7";
- }
- else version(MagickCore_668)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x668;
- ///ditto
- enum MagickLibVersionText = "6.6.8";
- }
- else version(MagickCore_669)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x669;
- ///ditto
- enum MagickLibVersionText = "6.6.9";
- }
- else version(MagickCore_670)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x670;
- ///ditto
- enum MagickLibVersionText = "6.7.0";
- }
- else version(MagickCore_671)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x671;
- ///ditto
- enum MagickLibVersionText = "6.7.1";
- }
- else version(MagickCore_672)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x672;
- ///ditto
- enum MagickLibVersionText = "6.7.2";
- }
- else version(MagickCore_673)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x673;
- ///ditto
- enum MagickLibVersionText = "6.7.3";
- }
- else version(MagickCore_674)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x674;
- ///ditto
- enum MagickLibVersionText = "6.7.4";
- }
- else version(MagickCore_675)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x675;
- ///ditto
- enum MagickLibVersionText = "6.7.5";
- }
- else version(MagickCore_676)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x676;
- ///ditto
- enum MagickLibVersionText = "6.7.6";
- }
- else version(MagickCore_677)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x677;
- ///ditto
- enum MagickLibVersionText = "6.7.7";
- }
- else version(MagickCore_678)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x678;
- ///ditto
- enum MagickLibVersionText = "6.7.8";
- }
- else version(MagickCore_679)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x679;
- ///ditto
- enum MagickLibVersionText = "6.7.9";
- }
- else version(MagickCore_680)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x680;
- ///ditto
- enum MagickLibVersionText = "6.8.0";
- }
- else version(MagickCore_681)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x681;
- ///ditto
- enum MagickLibVersionText = "6.8.1";
- }
- else version(MagickCore_682)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x682;
- ///ditto
- enum MagickLibVersionText = "6.8.2";
- }
- else version(MagickCore_683)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x683;
- ///ditto
- enum MagickLibVersionText = "6.8.3";
- }
- else version(MagickCore_684)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x684;
- ///ditto
- enum MagickLibVersionText = "6.8.4";
- }
- else version(MagickCore_685)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x685;
- ///ditto
- enum MagickLibVersionText = "6.8.5";
- }
- else version(MagickCore_686)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x686;
- ///ditto
- enum MagickLibVersionText = "6.8.6";
- }
- else version(MagickCore_687)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x687;
- ///ditto
- enum MagickLibVersionText = "6.8.7";
- }
- else version(MagickCore_688)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x688;
- ///ditto
- enum MagickLibVersionText = "6.8.8";
- }
- else version(MagickCore_689)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x689;
- ///ditto
- enum MagickLibVersionText = "6.8.9";
- }
- else version(MagickCore_690)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x690;
- ///ditto
- enum MagickLibVersionText = "6.9.0";
- }
- else version(MagickCore_691)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x691;
- ///ditto
- enum MagickLibVersionText = "6.9.1";
- }
- else version(MagickCore_692)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x692;
- ///ditto
- enum MagickLibVersionText = "6.9.2";
- }
- else version(MagickCore_693)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x693;
- ///ditto
- enum MagickLibVersionText = "6.9.3";
- }
- else version(MagickCore_694)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x694;
- ///ditto
- enum MagickLibVersionText = "6.9.4";
- }
- else version(MagickCore_695)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x695;
- ///ditto
- enum MagickLibVersionText = "6.9.5";
- }
- else version(MagickCore_696)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x696;
- ///ditto
- enum MagickLibVersionText = "6.9.6";
- }
- else version(MagickCore_697)
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x697;
- ///ditto
- enum MagickLibVersionText = "6.9.7";
- }
- else
- {
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x698;
- ///ditto
- enum MagickLibVersionText = "6.9.8";
- }
-
- /*
- * With ImageMagick 6.6.3 long and unsinged long were changed to
- * ssize_t and size_t. This is only a problem for 64bits windows.
- */
- static if (MagickLibVersion < 0x663 && c_ulong.sizeof != size_t.sizeof)
- {
- static assert(0, "Only ImageMagick version 6.6.3 and up are supported on your platform");
- }
-
- char* GetMagickHomeURL();
-
- const(char)* GetMagickCopyright();
-
- static if ( MagickLibVersion >= 0x681 )
- {
- const(char)* GetMagickDelegates();
- }
-
- const(char)* GetMagickFeatures();
- const(char)* GetMagickPackageName();
- const(char)* GetMagickQuantumDepth(size_t*);
- const(char)* GetMagickQuantumRange(size_t*);
- const(char)* GetMagickReleaseDate();
- const(char)* GetMagickVersion(size_t*);
-
- static if ( MagickLibVersion >= 0x681 )
- {
- void ListMagickVersion(FILE*);
- }
-}
diff --git a/dmagick/c/magickVersion.d.in b/dmagick/c/magickVersion.d.in
new file mode 100644
index 0000000..3d7d79c
--- /dev/null
+++ b/dmagick/c/magickVersion.d.in
@@ -0,0 +1,48 @@
+module dmagick.c.magickVersion;
+
+import core.stdc.config;
+import core.stdc.stdio;
+
+/// Defines the version of ImageMagick where these headers are based on.
+enum MagickLibVersion = 0x@MagickLibVersion@;
+///ditto
+enum MagickLibVersionText = "@MagickLibVersionText@";
+
+/// The quantum depth used by MagickCore.
+enum MagickQuantumDepth = @QuantumDepth@;
+
+/// Defines if HDRI is enabled.
+enum MagickHDRISupport = @HDRI@;
+
+/*
+ * With ImageMagick 6.6.3 long and unsinged long were changed to
+ * ssize_t and size_t. This is only a problem for 64bits windows.
+ */
+static if (MagickLibVersion < 0x663 && c_ulong.sizeof != size_t.sizeof)
+{
+ static assert(0, "Only ImageMagick version 6.6.3 and up are supported on your platform");
+}
+
+extern(C)
+{
+ char* GetMagickHomeURL();
+
+ const(char)* GetMagickCopyright();
+
+ static if ( MagickLibVersion >= 0x681 )
+ {
+ const(char)* GetMagickDelegates();
+ }
+
+ const(char)* GetMagickFeatures();
+ const(char)* GetMagickPackageName();
+ const(char)* GetMagickQuantumDepth(size_t*);
+ const(char)* GetMagickQuantumRange(size_t*);
+ const(char)* GetMagickReleaseDate();
+ const(char)* GetMagickVersion(size_t*);
+
+ static if ( MagickLibVersion >= 0x681 )
+ {
+ void ListMagickVersion(FILE*);
+ }
+}
diff --git a/dmagick/c/quantum.d b/dmagick/c/quantum.d
index f86d59c..0c2daa6 100644
--- a/dmagick/c/quantum.d
+++ b/dmagick/c/quantum.d
@@ -70,7 +70,7 @@ extern(C)
alias ClampToQuantum RoundToQuantum;
static pure nothrow Quantum ClampToQuantum(const MagickRealType value)
{
- version(MagickCore_HDRI)
+ static if(MagickHDRISupport)
{
return value;
}
@@ -86,7 +86,7 @@ extern(C)
static pure nothrow ubyte ScaleQuantumToChar(const Quantum quantum)
{
- version(MagickCore_HDRI)
+ static if(MagickHDRISupport)
{
if ( quantum <= 0 )
return 0;
diff --git a/dmagick/c/resample.d b/dmagick/c/resample.d
index 80dfbb4..9dc2bbe 100644
--- a/dmagick/c/resample.d
+++ b/dmagick/c/resample.d
@@ -1,27 +1,17 @@
module dmagick.c.resample;
-import dmagick.c.cacheView;
-import dmagick.c.exception;
-import dmagick.c.image;
-import dmagick.c.magickType;
import dmagick.c.magickVersion;
-import dmagick.c.pixel;
-
-//A mixin with static if has problems with circular imports. (dmagick.c.image)
-version(MagickCore_660) {} else
-version(MagickCore_661) {} else
-version(MagickCore_662) {} else
-version(MagickCore_663) {} else
-version(MagickCore_664) {} else
-version(MagickCore_665) {} else
-{
- version = MagickCore_666_and_up;
-}
extern(C)
{
- version ( MagickCore_666_and_up )
+ static if ( MagickLibVersion >= 0x666 )
{
+ import dmagick.c.cacheView;
+ import dmagick.c.exception;
+ import dmagick.c.image;
+ import dmagick.c.magickType;
+ import dmagick.c.pixel;
+
/**
* Used to adjust the filter algorithm used when resizing images.
* Different filters experience varying degrees of success with
@@ -78,6 +68,12 @@ extern(C)
}
else
{
+ import dmagick.c.cacheView;
+ import dmagick.c.exception;
+ import dmagick.c.image;
+ import dmagick.c.magickType;
+ import dmagick.c.pixel;
+
enum FilterTypes
{
UndefinedFilter,
diff --git a/windows.mak b/windows.mak
index 7a587b9..4160adb 100644
--- a/windows.mak
+++ b/windows.mak
@@ -523,6 +523,13 @@ docs\c\xwindow.html: dmagick\c\xwindow.d
################### Library generation #########################
+dmagick\c\magickVersion.d: dmagick\c\magickVersion.d.in
+ @powershell -Command "get-content $** | \
+ %{$$_ -replace '@MagickLibVersion@','700'} | \
+ %{$$_ -replace '@MagickLibVersionText@','7.0.0'} | \
+ %{$$_ -replace '@QuantumDepth@','16'} | \
+ %{$$_ -replace '@HDRI@','false'} | Set-Content $@"
+
$(LIBNAME): $(SOURCE)
$(DMD) -lib -of$(LIBNAME) $(DFLAGS) $(SOURCE)
@@ -541,6 +548,7 @@ stubmain.d:
echo void main(){} > $@
clean:
+ del dmagick\c\magickVersion.d
del $(LIBNAME)
del $(MAGICKCORELIBNAME)
del $(DOCS)