summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2014-11-14 08:28:53 -0800
committerJohn MacFarlane <jgm@berkeley.edu>2014-11-14 08:28:53 -0800
commitad0d423bd57d2ac261ef921a9784dbfe666a89d2 (patch)
tree068d585980815ff6c2935b78a8080baed0edd9b6
parentdafd433b61f9f1df7a4294a8b0a86ddc66d7d3f4 (diff)
Added mingw target for compiling windows exe and dll.
They can be compiled on linux; all that is needed is the mingw32 package.
-rw-r--r--Makefile12
-rw-r--r--toolchain-mingw32.cmake17
2 files changed, 27 insertions, 2 deletions
diff --git a/Makefile b/Makefile
index dcc317c..350f177 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,8 @@
SRCDIR?=src
DATADIR?=data
BUILDDIR?=build
+MINGW_BUILDDIR?=build-mingw
+MINGW_INSTALLDIR?=windows
SPEC=spec.txt
SITE=_site
SPECVERSION=$(shell perl -ne 'print $$1 if /^version: *([0-9.]+)/' $(SPEC))
@@ -11,7 +13,7 @@ PROG?=$(BUILDDIR)/src/cmark
BENCHINP?=README.md
JSMODULES=$(wildcard js/lib/*.js)
-.PHONY: all spec leakcheck clean fuzztest dingus upload jshint test testjs benchjs update-site upload-site check npm debug tarball
+.PHONY: all spec leakcheck clean fuzztest dingus upload jshint test testjs benchjs update-site upload-site check npm debug mingw tarball
all: $(BUILDDIR)
@make -C $(BUILDDIR)
@@ -33,6 +35,12 @@ debug:
cmake .. -DCMAKE_BUILD_TYPE=Debug; \
make
+mingw:
+ mkdir -p $(MINGW_BUILDDIR); \
+ cd $(MINGW_BUILDDIR); \
+ cmake .. -DCMAKE_TOOLCHAIN_FILE=../toolchain-mingw32.cmake -DCMAKE_INSTALL_PREFIX=$(MINGW_INSTALLDIR) ;\
+ make && make install
+
tarball: spec.html $(SRCDIR)/scanners.c
rm -rf $(PKGDIR); \
mkdir -p $(PKGDIR)/man/man1; \
@@ -49,7 +57,7 @@ tarball: spec.html $(SRCDIR)/scanners.c
rm -rf $(PKGDIR)
clean:
- rm -rf $(BUILDDIR)
+ rm -rf $(BUILDDIR) $(MINGW_BUILDDIR) $(MINGW_INSTALLDIR)
$(PROG): all
diff --git a/toolchain-mingw32.cmake b/toolchain-mingw32.cmake
new file mode 100644
index 0000000..61c62a8
--- /dev/null
+++ b/toolchain-mingw32.cmake
@@ -0,0 +1,17 @@
+# the name of the target operating system
+SET(CMAKE_SYSTEM_NAME Windows)
+
+# which compilers to use for C and C++
+SET(CMAKE_C_COMPILER i586-mingw32msvc-gcc)
+SET(CMAKE_CXX_COMPILER i586-mingw32msvc-g++)
+SET(CMAKE_RC_COMPILER i586-mingw32msvc-windres)
+
+# here is the target environment located
+SET(CMAKE_FIND_ROOT_PATH /usr/i586-mingw32msvc "${CMAKE_SOURCE_DIR}/windows")
+
+# adjust the default behaviour of the FIND_XXX() commands:
+# search headers and libraries in the target environment, search
+# programs in the host environment
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)