fltkhs 0.1.0.1 → 0.1.0.2
raw patch · 36 files changed
+374/−640 lines, 36 filessetup-changedPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- .git/HEAD +0/−1
- .git/config +0/−11
- .git/description +0/−1
- .git/hooks/applypatch-msg.sample +0/−15
- .git/hooks/commit-msg.sample +0/−24
- .git/hooks/post-update.sample +0/−8
- .git/hooks/pre-applypatch.sample +0/−14
- .git/hooks/pre-commit.sample +0/−50
- .git/hooks/pre-push.sample +0/−53
- .git/hooks/pre-rebase.sample +0/−169
- .git/hooks/prepare-commit-msg.sample +0/−36
- .git/hooks/update.sample +0/−128
- .git/index binary
- .git/info/exclude +0/−6
- .git/logs/HEAD +0/−1
- .git/logs/refs/heads/master +0/−1
- .git/logs/refs/remotes/origin/HEAD +0/−1
- .git/objects/pack/pack-df1277a71712eb9f9144a96c7fa9d332a97d5426.idx binary
- .git/objects/pack/pack-df1277a71712eb9f9144a96c7fa9d332a97d5426.pack too large to diff
- .git/packed-refs +0/−3
- .git/refs/heads/master +0/−1
- .git/refs/remotes/origin/HEAD +0/−1
- .gitignore +11/−0
- CMakeLists.txt +14/−0
- Setup.hs +63/−29
- c-examples/CMakeLists.txt +5/−0
- c-src/CMakeCopyObjectFiles.txt +5/−0
- c-src/CMakeLists.txt +114/−0
- c-src/Fl_ExportMacros.h +0/−2
- c-src/Fl_Types.h +1/−2
- c-src/Makefile.in +4/−4
- c-src/xC.h +4/−1
- configure.ac +0/−1
- fltkhs.buildinfo.in +1/−0
- fltkhs.cabal +37/−73
- src/Graphics/UI/FLTK/LowLevel/FLTKHS.hs +115/−4
− .git/HEAD
@@ -1,1 +0,0 @@-ref: refs/heads/master
− .git/config
@@ -1,11 +0,0 @@-[core]- repositoryformatversion = 0- filemode = true- bare = false- logallrefupdates = true-[remote "origin"]- url = http://github.com/deech/fltkhs- fetch = +refs/heads/*:refs/remotes/origin/*-[branch "master"]- remote = origin- merge = refs/heads/master
− .git/description
@@ -1,1 +0,0 @@-Unnamed repository; edit this file 'description' to name the repository.
− .git/hooks/applypatch-msg.sample
@@ -1,15 +0,0 @@-#!/bin/sh-#-# An example hook script to check the commit log message taken by-# applypatch from an e-mail message.-#-# The hook should exit with non-zero status after issuing an-# appropriate message if it wants to stop the commit. The hook is-# allowed to edit the commit message file.-#-# To enable this hook, rename this file to "applypatch-msg".--. git-sh-setup-test -x "$GIT_DIR/hooks/commit-msg" &&- exec "$GIT_DIR/hooks/commit-msg" ${1+"$@"}-:
− .git/hooks/commit-msg.sample
@@ -1,24 +0,0 @@-#!/bin/sh-#-# An example hook script to check the commit log message.-# Called by "git commit" with one argument, the name of the file-# that has the commit message. The hook should exit with non-zero-# status after issuing an appropriate message if it wants to stop the-# commit. The hook is allowed to edit the commit message file.-#-# To enable this hook, rename this file to "commit-msg".--# Uncomment the below to add a Signed-off-by line to the message.-# Doing this in a hook is a bad idea in general, but the prepare-commit-msg-# hook is more suited to it.-#-# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')-# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"--# This example catches duplicate Signed-off-by lines.--test "" = "$(grep '^Signed-off-by: ' "$1" |- sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {- echo >&2 Duplicate Signed-off-by lines.- exit 1-}
− .git/hooks/post-update.sample
@@ -1,8 +0,0 @@-#!/bin/sh-#-# An example hook script to prepare a packed repository for use over-# dumb transports.-#-# To enable this hook, rename this file to "post-update".--exec git update-server-info
− .git/hooks/pre-applypatch.sample
@@ -1,14 +0,0 @@-#!/bin/sh-#-# An example hook script to verify what is about to be committed-# by applypatch from an e-mail message.-#-# The hook should exit with non-zero status after issuing an-# appropriate message if it wants to stop the commit.-#-# To enable this hook, rename this file to "pre-applypatch".--. git-sh-setup-test -x "$GIT_DIR/hooks/pre-commit" &&- exec "$GIT_DIR/hooks/pre-commit" ${1+"$@"}-:
− .git/hooks/pre-commit.sample
@@ -1,50 +0,0 @@-#!/bin/sh-#-# An example hook script to verify what is about to be committed.-# Called by "git commit" with no arguments. The hook should-# exit with non-zero status after issuing an appropriate message if-# it wants to stop the commit.-#-# To enable this hook, rename this file to "pre-commit".--if git rev-parse --verify HEAD >/dev/null 2>&1-then- against=HEAD-else- # Initial commit: diff against an empty tree object- against=4b825dc642cb6eb9a060e54bf8d69288fbee4904-fi--# If you want to allow non-ascii filenames set this variable to true.-allownonascii=$(git config hooks.allownonascii)--# Redirect output to stderr.-exec 1>&2--# Cross platform projects tend to avoid non-ascii filenames; prevent-# them from being added to the repository. We exploit the fact that the-# printable range starts at the space character and ends with tilde.-if [ "$allownonascii" != "true" ] &&- # Note that the use of brackets around a tr range is ok here, (it's- # even required, for portability to Solaris 10's /usr/bin/tr), since- # the square bracket bytes happen to fall in the designated range.- test $(git diff --cached --name-only --diff-filter=A -z $against |- LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0-then- echo "Error: Attempt to add a non-ascii file name."- echo- echo "This can cause problems if you want to work"- echo "with people on other platforms."- echo- echo "To be portable it is advisable to rename the file ..."- echo- echo "If you know what you are doing you can disable this"- echo "check using:"- echo- echo " git config hooks.allownonascii true"- echo- exit 1-fi--# If there are whitespace errors, print the offending file names and fail.-exec git diff-index --check --cached $against --
− .git/hooks/pre-push.sample
@@ -1,53 +0,0 @@-#!/bin/sh--# An example hook script to verify what is about to be pushed. Called by "git-# push" after it has checked the remote status, but before anything has been-# pushed. If this script exits with a non-zero status nothing will be pushed.-#-# This hook is called with the following parameters:-#-# $1 -- Name of the remote to which the push is being done-# $2 -- URL to which the push is being done-#-# If pushing without using a named remote those arguments will be equal.-#-# Information about the commits which are being pushed is supplied as lines to-# the standard input in the form:-#-# <local ref> <local sha1> <remote ref> <remote sha1>-#-# This sample shows how to prevent push of commits where the log message starts-# with "WIP" (work in progress).--remote="$1"-url="$2"--z40=0000000000000000000000000000000000000000--IFS=' '-while read local_ref local_sha remote_ref remote_sha-do- if [ "$local_sha" = $z40 ]- then- # Handle delete- else- if [ "$remote_sha" = $z40 ]- then- # New branch, examine all commits- range="$local_sha"- else- # Update to existing branch, examine new commits- range="$remote_sha..$local_sha"- fi-- # Check for WIP commit- commit=`git rev-list -n 1 --grep '^WIP' "$range"`- if [ -n "$commit" ]- then- echo "Found WIP commit in $local_ref, not pushing"- exit 1- fi- fi-done--exit 0
− .git/hooks/pre-rebase.sample
@@ -1,169 +0,0 @@-#!/bin/sh-#-# Copyright (c) 2006, 2008 Junio C Hamano-#-# The "pre-rebase" hook is run just before "git rebase" starts doing-# its job, and can prevent the command from running by exiting with-# non-zero status.-#-# The hook is called with the following parameters:-#-# $1 -- the upstream the series was forked from.-# $2 -- the branch being rebased (or empty when rebasing the current branch).-#-# This sample shows how to prevent topic branches that are already-# merged to 'next' branch from getting rebased, because allowing it-# would result in rebasing already published history.--publish=next-basebranch="$1"-if test "$#" = 2-then- topic="refs/heads/$2"-else- topic=`git symbolic-ref HEAD` ||- exit 0 ;# we do not interrupt rebasing detached HEAD-fi--case "$topic" in-refs/heads/??/*)- ;;-*)- exit 0 ;# we do not interrupt others.- ;;-esac--# Now we are dealing with a topic branch being rebased-# on top of master. Is it OK to rebase it?--# Does the topic really exist?-git show-ref -q "$topic" || {- echo >&2 "No such branch $topic"- exit 1-}--# Is topic fully merged to master?-not_in_master=`git rev-list --pretty=oneline ^master "$topic"`-if test -z "$not_in_master"-then- echo >&2 "$topic is fully merged to master; better remove it."- exit 1 ;# we could allow it, but there is no point.-fi--# Is topic ever merged to next? If so you should not be rebasing it.-only_next_1=`git rev-list ^master "^$topic" ${publish} | sort`-only_next_2=`git rev-list ^master ${publish} | sort`-if test "$only_next_1" = "$only_next_2"-then- not_in_topic=`git rev-list "^$topic" master`- if test -z "$not_in_topic"- then- echo >&2 "$topic is already up-to-date with master"- exit 1 ;# we could allow it, but there is no point.- else- exit 0- fi-else- not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`- /usr/bin/perl -e '- my $topic = $ARGV[0];- my $msg = "* $topic has commits already merged to public branch:\n";- my (%not_in_next) = map {- /^([0-9a-f]+) /;- ($1 => 1);- } split(/\n/, $ARGV[1]);- for my $elem (map {- /^([0-9a-f]+) (.*)$/;- [$1 => $2];- } split(/\n/, $ARGV[2])) {- if (!exists $not_in_next{$elem->[0]}) {- if ($msg) {- print STDERR $msg;- undef $msg;- }- print STDERR " $elem->[1]\n";- }- }- ' "$topic" "$not_in_next" "$not_in_master"- exit 1-fi--<<\DOC_END--This sample hook safeguards topic branches that have been-published from being rewound.--The workflow assumed here is:-- * Once a topic branch forks from "master", "master" is never- merged into it again (either directly or indirectly).-- * Once a topic branch is fully cooked and merged into "master",- it is deleted. If you need to build on top of it to correct- earlier mistakes, a new topic branch is created by forking at- the tip of the "master". This is not strictly necessary, but- it makes it easier to keep your history simple.-- * Whenever you need to test or publish your changes to topic- branches, merge them into "next" branch.--The script, being an example, hardcodes the publish branch name-to be "next", but it is trivial to make it configurable via-$GIT_DIR/config mechanism.--With this workflow, you would want to know:--(1) ... if a topic branch has ever been merged to "next". Young- topic branches can have stupid mistakes you would rather- clean up before publishing, and things that have not been- merged into other branches can be easily rebased without- affecting other people. But once it is published, you would- not want to rewind it.--(2) ... if a topic branch has been fully merged to "master".- Then you can delete it. More importantly, you should not- build on top of it -- other people may already want to- change things related to the topic as patches against your- "master", so if you need further changes, it is better to- fork the topic (perhaps with the same name) afresh from the- tip of "master".--Let's look at this example:-- o---o---o---o---o---o---o---o---o---o "next"- / / / /- / a---a---b A / /- / / / /- / / c---c---c---c B /- / / / \ /- / / / b---b C \ /- / / / / \ /- ---o---o---o---o---o---o---o---o---o---o---o "master"---A, B and C are topic branches.-- * A has one fix since it was merged up to "next".-- * B has finished. It has been fully merged up to "master" and "next",- and is ready to be deleted.-- * C has not merged to "next" at all.--We would want to allow C to be rebased, refuse A, and encourage-B to be deleted.--To compute (1):-- git rev-list ^master ^topic next- git rev-list ^master next-- if these match, topic has not merged in next at all.--To compute (2):-- git rev-list master..topic-- if this is empty, it is fully merged to "master".--DOC_END
− .git/hooks/prepare-commit-msg.sample
@@ -1,36 +0,0 @@-#!/bin/sh-#-# An example hook script to prepare the commit log message.-# Called by "git commit" with the name of the file that has the-# commit message, followed by the description of the commit-# message's source. The hook's purpose is to edit the commit-# message file. If the hook fails with a non-zero status,-# the commit is aborted.-#-# To enable this hook, rename this file to "prepare-commit-msg".--# This hook includes three examples. The first comments out the-# "Conflicts:" part of a merge commit.-#-# The second includes the output of "git diff --name-status -r"-# into the message, just before the "git status" output. It is-# commented because it doesn't cope with --amend or with squashed-# commits.-#-# The third example adds a Signed-off-by line to the message, that can-# still be edited. This is rarely a good idea.--case "$2,$3" in- merge,)- /usr/bin/perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1" ;;--# ,|template,)-# /usr/bin/perl -i.bak -pe '-# print "\n" . `git diff --cached --name-status -r`-# if /^#/ && $first++ == 0' "$1" ;;-- *) ;;-esac--# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')-# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
− .git/hooks/update.sample
@@ -1,128 +0,0 @@-#!/bin/sh-#-# An example hook script to blocks unannotated tags from entering.-# Called by "git receive-pack" with arguments: refname sha1-old sha1-new-#-# To enable this hook, rename this file to "update".-#-# Config-# -------# hooks.allowunannotated-# This boolean sets whether unannotated tags will be allowed into the-# repository. By default they won't be.-# hooks.allowdeletetag-# This boolean sets whether deleting tags will be allowed in the-# repository. By default they won't be.-# hooks.allowmodifytag-# This boolean sets whether a tag may be modified after creation. By default-# it won't be.-# hooks.allowdeletebranch-# This boolean sets whether deleting branches will be allowed in the-# repository. By default they won't be.-# hooks.denycreatebranch-# This boolean sets whether remotely creating branches will be denied-# in the repository. By default this is allowed.-#--# --- Command line-refname="$1"-oldrev="$2"-newrev="$3"--# --- Safety check-if [ -z "$GIT_DIR" ]; then- echo "Don't run this script from the command line." >&2- echo " (if you want, you could supply GIT_DIR then run" >&2- echo " $0 <ref> <oldrev> <newrev>)" >&2- exit 1-fi--if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then- echo "usage: $0 <ref> <oldrev> <newrev>" >&2- exit 1-fi--# --- Config-allowunannotated=$(git config --bool hooks.allowunannotated)-allowdeletebranch=$(git config --bool hooks.allowdeletebranch)-denycreatebranch=$(git config --bool hooks.denycreatebranch)-allowdeletetag=$(git config --bool hooks.allowdeletetag)-allowmodifytag=$(git config --bool hooks.allowmodifytag)--# check for no description-projectdesc=$(sed -e '1q' "$GIT_DIR/description")-case "$projectdesc" in-"Unnamed repository"* | "")- echo "*** Project description file hasn't been set" >&2- exit 1- ;;-esac--# --- Check types-# if $newrev is 0000...0000, it's a commit to delete a ref.-zero="0000000000000000000000000000000000000000"-if [ "$newrev" = "$zero" ]; then- newrev_type=delete-else- newrev_type=$(git cat-file -t $newrev)-fi--case "$refname","$newrev_type" in- refs/tags/*,commit)- # un-annotated tag- short_refname=${refname##refs/tags/}- if [ "$allowunannotated" != "true" ]; then- echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2- echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2- exit 1- fi- ;;- refs/tags/*,delete)- # delete tag- if [ "$allowdeletetag" != "true" ]; then- echo "*** Deleting a tag is not allowed in this repository" >&2- exit 1- fi- ;;- refs/tags/*,tag)- # annotated tag- if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1- then- echo "*** Tag '$refname' already exists." >&2- echo "*** Modifying a tag is not allowed in this repository." >&2- exit 1- fi- ;;- refs/heads/*,commit)- # branch- if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then- echo "*** Creating a branch is not allowed in this repository" >&2- exit 1- fi- ;;- refs/heads/*,delete)- # delete branch- if [ "$allowdeletebranch" != "true" ]; then- echo "*** Deleting a branch is not allowed in this repository" >&2- exit 1- fi- ;;- refs/remotes/*,commit)- # tracking branch- ;;- refs/remotes/*,delete)- # delete tracking branch- if [ "$allowdeletebranch" != "true" ]; then- echo "*** Deleting a tracking branch is not allowed in this repository" >&2- exit 1- fi- ;;- *)- # Anything else (is there anything else?)- echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2- exit 1- ;;-esac--# --- Finished-exit 0
− .git/index
binary file changed (36128 → absent bytes)
− .git/info/exclude
@@ -1,6 +0,0 @@-# git ls-files --others --exclude-from=.git/info/exclude-# Lines that start with '#' are comments.-# For a project mostly in C, the following would be a good set of-# exclude patterns (uncomment them if you want to use them):-# *.[oa]-# *~
− .git/logs/HEAD
@@ -1,1 +0,0 @@-0000000000000000000000000000000000000000 8fae34c12b758b8247b79cc29df29238ddd17e21 deech <aditya.siram@gmail.com> 1424905185 -0600 clone: from http://github.com/deech/fltkhs
− .git/logs/refs/heads/master
@@ -1,1 +0,0 @@-0000000000000000000000000000000000000000 8fae34c12b758b8247b79cc29df29238ddd17e21 deech <aditya.siram@gmail.com> 1424905185 -0600 clone: from http://github.com/deech/fltkhs
− .git/logs/refs/remotes/origin/HEAD
@@ -1,1 +0,0 @@-0000000000000000000000000000000000000000 8fae34c12b758b8247b79cc29df29238ddd17e21 deech <aditya.siram@gmail.com> 1424905185 -0600 clone: from http://github.com/deech/fltkhs
− .git/objects/pack/pack-df1277a71712eb9f9144a96c7fa9d332a97d5426.idx
binary file changed (109180 → absent bytes)
− .git/objects/pack/pack-df1277a71712eb9f9144a96c7fa9d332a97d5426.pack
file too large to diff
− .git/packed-refs
@@ -1,3 +0,0 @@-# pack-refs with: peeled fully-peeled -8943336c272ff8dab557abb3ee781cb1d209bd32 refs/remotes/origin/ABI-8fae34c12b758b8247b79cc29df29238ddd17e21 refs/remotes/origin/master
− .git/refs/heads/master
@@ -1,1 +0,0 @@-8fae34c12b758b8247b79cc29df29238ddd17e21
− .git/refs/remotes/origin/HEAD
@@ -1,1 +0,0 @@-ref: refs/remotes/origin/master
.gitignore view
@@ -21,3 +21,14 @@ c-examples/Makefile c-src/Makefile dist/*+/CMakeCache.txt+/CMakeFiles/+/c-lib/+/c-src/CMakeFiles/+/c-src/cmake_install.cmake+/CMakeFiles/+/CMakeCache.txt+/c-src/CMakeFiles/+/c-src/cmake_install.cmake+/c-src/libfltkdyn.so+/cmake_install.cmake
+ CMakeLists.txt view
@@ -0,0 +1,14 @@+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)++PROJECT(fltkc)++SET(FLTKCONFIGCOMMAND "${FLTK_HOME}/lib/libfltk.a ${FLTK_HOME}/lib/libfltk_gl.a ${FLTK_HOME}/lib/libfltk_images.a ${FLTK_HOME}/lib/libfltk_jpeg.a ${FLTK_HOME}/lib/libfltk_png.a ${FLTK_HOME}/lib/libfltk_z.a ${FLTK_HOME}/lib/libfltk_forms.a")+SET(FLTKCONFIGCOMMAND "${FLTKCONFIGCOMMAND} -mwindows -lglu32 -lopengl32 -lole32 -luuid -lcomctl32")+CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/fltkhs.buildinfo.in+ ${CMAKE_CURRENT_SOURCE_DIR}/fltkhs.buildinfo)+FIND_PACKAGE(OpenGL REQUIRED)+set_directory_properties(PROPERTIES+ ADDITIONAL_MAKE_CLEAN_FILES "${CMAKE_CURRENT_SOURCE_DIR}/cmake_install.cmake;+ ${CMAKE_CURRENT_SOURCE_DIR}/CMakeCache.txt;+ ${CMAKE_CURRENT_SOURCE_DIR}/CMakeFiles")+ADD_SUBDIRECTORY(c-src)
Setup.hs view
@@ -1,8 +1,6 @@ import Data.Maybe(fromJust) import Data.List(partition, isPrefixOf) import Distribution.Simple.Compiler-import Distribution.Simple.Build-import Distribution.Simple.Configure import Distribution.Simple.LocalBuildInfo import Distribution.PackageDescription import Distribution.Simple@@ -10,41 +8,71 @@ import Distribution.Simple.Setup import Distribution.Simple.Utils import Distribution.Verbosity-import Distribution.Simple.Program(requireProgram, arProgram)+import Control.Monad+import Data.List+import Distribution.Simple.Program+ ( Program(..), ConfiguredProgram(..), programPath+ , requireProgram, requireProgramVersion+ , rawSystemProgramConf, rawSystemProgram+ , greencardProgram, cpphsProgram, hsc2hsProgram, c2hsProgram+ , happyProgram, alexProgram, ghcProgram, gccProgram, requireProgram, arProgram)+import Distribution.Simple.Program.Db import Distribution.Simple.PreProcess import System.IO.Unsafe (unsafePerformIO) import qualified Distribution.Simple.Program.Ar as Ar import qualified Distribution.ModuleName as ModuleName import Distribution.Simple.BuildPaths-import System.Directory(getCurrentDirectory, getDirectoryContents, copyFile, doesDirectoryExist)-import System.FilePath ( (</>), (<.>), takeExtension,- takeDirectory, replaceExtension, splitExtension, combine, takeBaseName)-import System.IO-import Debug.Trace-import Data.Graph+import System.Directory(getCurrentDirectory, getDirectoryContents, doesDirectoryExist)+import System.FilePath ( (</>), (<.>), takeExtension, combine, takeBaseName) import qualified Distribution.Simple.GHC as GHC import qualified Distribution.Simple.JHC as JHC import qualified Distribution.Simple.LHC as LHC import qualified Distribution.Simple.UHC as UHC+import qualified Distribution.Simple.PackageIndex as PackageIndex+import Distribution.PackageDescription as PD+import qualified Distribution.InstalledPackageInfo as Installed+import System.Environment (getEnv) -main = defaultMainWithHooks autoconfUserHooks {- preConf = myPreConf,- buildHook = myBuildHook,- cleanHook = myCleanHook,- copyHook = copyCBindings- }+main :: IO ()+main = defaultMainWithHooks defaultUserHooks {+ preConf = case buildOS of+ Windows -> myCMakePreConf+ _ -> myPreConf,+ buildHook = myBuildHook,+ cleanHook = myCleanHook,+ copyHook = copyCBindings+ } +myPreConf :: Args -> ConfigFlags -> IO HookedBuildInfo myPreConf args flags = do- putStrLn "Running autoheader ..."- rawSystemExit normal "autoheader" [] putStrLn "Running autoconf ..." rawSystemExit normal "autoconf" []- preConf autoconfUserHooks args flags+ preConf defaultUserHooks args flags +myCMakePreConf :: Args -> ConfigFlags -> IO HookedBuildInfo+myCMakePreConf args flags =+ do+ let runCMake = do+ fltkHome <- getEnv "FLTK_HOME"+ putStrLn "Running cmake ..."+ rawSystemExit verbose "cmake" [".", "-G", "MSYS Makefiles", "-DFLTK_HOME=" ++ fltkHome]+ clibExists <- doesDirectoryExist fltkcdir+ if (not clibExists)+ then runCMake+ else do+ libs <- getDirectoryContents fltkcdir+ if (null $ filter ((==) "libfltkc.a") libs)+ then runCMake+ else return ()+ return ()+ preConf defaultUserHooks args flags+ fltkcdir = unsafePerformIO getCurrentDirectory ++ "/c-lib" fltkclib = "fltkc" headerdir = unsafePerformIO getCurrentDirectory ++ "/c-src"+currentdir :: FilePath currentdir = unsafePerformIO getCurrentDirectory+getHeaders :: [FilePath] getHeaders = unsafePerformIO $ do contents <- getDirectoryContents headerdir let headerFiles = filter (\f -> takeExtension f == ".h" -- keep the headers@@ -120,12 +148,16 @@ _ -> die "Building is not supported with this compiler." myBuildHook pkg_descr local_bld_info user_hooks bld_flags =- do fltkcBuilt <- doesDirectoryExist fltkcdir- if not fltkcBuilt then- do putStrLn "==Compiling C bindings=="- rawSystemExit normal "make" ["src"]- else return ()- -- (buildHook autoconfUserHooks) pkg_descr local_bld_info user_hooks bld_flags+ do let compileC = do+ putStrLn "==Compiling C bindings=="+ rawSystemExit normal "make" []+ cdirexists <- doesDirectoryExist fltkcdir+ if cdirexists+ then+ do+ clibraries <- getDirectoryContents fltkcdir+ when (null $ filter (Data.List.isInfixOf "fltkc") clibraries) compileC+ else compileC let new_pkg_descr = removeExecutables . addHeaders . addIncludeDirs . withFltkc (++) $ pkg_descr new_local_bld_info = local_bld_info{localPkgDescr = new_pkg_descr}@@ -137,7 +169,7 @@ _ -> False) (componentsConfigs new_local_bld_info) lib_lbi = new_local_bld_info{componentsConfigs = libs}- buildHook autoconfUserHooks new_pkg_descr lib_lbi user_hooks bld_flags+ buildHook defaultUserHooks new_pkg_descr lib_lbi user_hooks bld_flags let distPref = fromFlag (buildDistPref bld_flags) dbFile = distPref </> "package.conf.inplace" verbosity = fromFlag (buildVerbosity bld_flags)@@ -151,7 +183,9 @@ (CLib lib) -> do cobjs <- getObjectFileDirContents >>= return . map (combine objectFileDir) .- filter (\ f -> takeExtension f == ".o")+ filter (\ f -> case buildOS of+ Windows -> takeExtension f == ".obj"+ _ -> takeExtension f == ".o") hobjs <- getHaskellObjects lib with_in_place pref objExtension True let staticObjectFiles = hobjs ++ cobjs (arProg, _ ) <- requireProgram verbosity arProgram@@ -173,7 +207,7 @@ copyCBindings :: PackageDescription -> LocalBuildInfo -> UserHooks -> CopyFlags -> IO () copyCBindings pkg_descr lbi uhs flags = do- (copyHook autoconfUserHooks) pkg_descr lbi uhs flags+ (copyHook defaultUserHooks) pkg_descr lbi uhs flags let libPref = libdir . absoluteInstallDirs pkg_descr lbi . fromFlag . copyDest $ flags@@ -181,9 +215,9 @@ ["c-lib/libfltkc.a", libPref] case buildOS of Linux -> rawSystemExit (fromFlag $ copyVerbosity flags) "cp"- ["c-lib/libfltkc.so", libPref]+ ["c-lib/libfltkcdyn.so", libPref] _ -> return () myCleanHook pd x uh cf = do rawSystemExit normal "make" ["clean"]- cleanHook autoconfUserHooks pd x uh cf+ cleanHook defaultUserHooks pd x uh cf
+ c-examples/CMakeLists.txt view
@@ -0,0 +1,5 @@+ADD_EXECUTABLE(foo foo.cxx)+ADD_DEPENDENCIES(foo fltkc)+TARGET_LINK_LIBRARIES(foo Ui)+TARGET_LINK_LIBRARIES(foo ${FLTK_LIBRARIES})+TARGET_LINK_LIBRARIES(foo ${OPENGL_LIBRARIES})
+ c-src/CMakeCopyObjectFiles.txt view
@@ -0,0 +1,5 @@+function(copyObjectFiles)+ file(GLOB_RECURSE ObjectFiles ${CMAKE_CURRENT_SOURCE_DIR} *.obj)+ file(COPY ${ObjectFiles} DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/../static_object_files)+endfunction(copyObjectFiles)+copyObjectFiles()
+ c-src/CMakeLists.txt view
@@ -0,0 +1,114 @@+SET(SourceFiles+ Fl_Menu_ButtonC.cpp+ Fl_PositionerC.cpp+ Fl_TimerC.cpp+ Fl_Value_OutputC.cpp+ Fl_Value_SliderC.cpp+ Fl_ScrollbarC.cpp+ Fl_RollerC.cpp+ Fl_DialC.cpp+ Fl_CounterC.cpp+ Utils.cpp+ xC.cpp+ fl_utf8C.cpp+ glC.cpp+ glutC.cpp+ DerivedText_Editor.cpp+ DerivedShared_Image.cpp+ filenameC.cpp+ Fl_AskC.cpp+ Fl_BitmapC.cpp+ Fl_BoxC.cpp+ Fl_BrowserC.cpp+ Fl_ButtonC.cpp+ Fl_CallbackC.cpp+ Fl_C.cpp+ Fl_Check_ButtonC.cpp+ Fl_ChoiceC.cpp+ Fl_ClockC.cpp+ Fl_Color_ChooserC.cpp+ Fl_Copy_SurfaceC.cpp+ Fl_Double_WindowC.cpp+ Fl_DrawC.cpp+ Fl_DeviceC.cpp+ Fl_EnumerationsC.cpp+ Fl_File_BrowserC.cpp+ Fl_File_IconC.cpp+ Fl_File_InputC.cpp+ Fl_File_ChooserC.cpp+ Fl_Float_InputC.cpp+ Fl_Gl_WindowC.cpp+ Fl_GroupC.cpp+ Fl_Hold_BrowserC.cpp+ Fl_Image_SurfaceC.cpp+ Fl_ImageC.cpp+ Fl_Input_C.cpp+ Fl_InputC.cpp+ Fl_Int_InputC.cpp+ Fl_Light_ButtonC.cpp+ Fl_Menu_C.cpp+ Fl_Menu_ItemC.cpp+ Fl_Multi_BrowserC.cpp+ Fl_Multiline_InputC.cpp+ Fl_Multiline_OutputC.cpp+ Fl_Native_File_ChooserC.cpp+ Fl_OutputC.cpp+ Fl_Overlay_WindowC.cpp+ Fl_Paged_DeviceC.cpp+ Fl_PixmapC.cpp+ Fl_PNM_ImageC.cpp+ Fl_PreferencesC.cpp+ Fl_PrinterC.cpp+ Fl_ProgressC.cpp+ Fl_Radio_ButtonC.cpp+ Fl_Radio_Light_ButtonC.cpp+ Fl_Repeat_ButtonC.cpp+ Fl_Return_ButtonC.cpp+ Fl_RGB_ImageC.cpp+ Fl_Round_ButtonC.cpp+ Fl_Round_ClockC.cpp+ Fl_Secret_InputC.cpp+ Fl_Select_BrowserC.cpp+ Fl_Shared_ImageC.cpp+ fl_show_colormapC.cpp+ Fl_Single_WindowC.cpp+ Fl_SliderC.cpp+ Fl_Sys_Menu_BarC.cpp+ Fl_TableC.cpp+ Fl_Table_RowC.cpp+ Fl_TabsC.cpp+ Fl_Text_BufferC.cpp+ Fl_Text_DisplayC.cpp+ Fl_Text_EditorC.cpp+ Fl_Text_SelectionC.cpp+ Fl_TileC.cpp+ Fl_Toggle_ButtonC.cpp+ Fl_TooltipC.cpp+ Fl_TreeC.cpp+ Fl_Tree_ItemC.cpp+ Fl_Tree_PrefsC.cpp+ Fl_ValuatorC.cpp+ Fl_AdjusterC.cpp+ Fl_Value_InputC.cpp+ Fl_Value_SliderC.cpp+ Fl_WidgetC.cpp+ Fl_WindowC.cpp+ Fl_WizardC.cpp+ )++ADD_DEFINITIONS("${CXX_FLAGS} -mwindows -DWIN32 -DUSE_OPENGL32 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -c -Wall -DINTERNAL_LINKAGE -g -Icpp -I\"${FLTK_HOME}\"")++MESSAGE(STATUS ${CXX_FLAGS})+ADD_LIBRARY(fltkc ${SourceFiles})++set_target_properties(fltkc PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../c-lib)++add_custom_command(TARGET fltkc PRE_LINK+ COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/CMakeCopyObjectFiles.txt+ )+set_directory_properties(PROPERTIES+ ADDITIONAL_MAKE_CLEAN_FILES "${CMAKE_CURRENT_SOURCE_DIR}/../c-lib;+ ${CMAKE_CURRENT_SOURCE_DIR}/../static_object_files;+ ${CMAKE_CURRENT_SOURCE_DIR}/cmake_install.cmake;+ ${CMAKE_CURRENT_SOURCE_DIR}/CMakeCache.txt;+ ${CMAKE_CURRENT_SOURCE_DIR}/CMakeFiles;")
c-src/Fl_ExportMacros.h view
@@ -12,8 +12,6 @@ #else #ifdef _WIN32 #define FL_EXPORT_C(TYPE,FUNC_NAME) extern __declspec(dllexport) TYPE __cdecl FUNC_NAME- #undef EXPORT- #define EXPORT extern "C" __declspec(dllexport) #else #define FL_EXPORT_C(TYPE,FUNC_NAME) extern TYPE FUNC_NAME #endif
c-src/Fl_Types.h view
@@ -43,7 +43,7 @@ #define FL_NORMAL_TIMER 0 #define FL_VALUE_TIMER 1-#define FL_HIDDEN_TIMER 2 +#define FL_HIDDEN_TIMER 2 #define FL_SORT_ASCENDING 0 /**< sort browser items in ascending alphabetic order. */ #define FL_SORT_DESCENDING 1 /**< sort in descending order */@@ -179,7 +179,6 @@ int height; const char *name; } page_format;-#include <config.h> # ifdef __APPLE__ # include <OpenGL/gl.h> # else
c-src/Makefile.in view
@@ -112,25 +112,25 @@ SONAME_FLAGS= -shared -Wl,-soname endif .SILENT:-all: libfltkc.a libfltkc.$(SHARED_EXT)+all: libfltkc.a libfltkcdyn.$(SHARED_EXT) .SUFFIXES: .cpp .o .cpp.o: test -d $(STATIC_OBJECT_FILES) || mkdir $(STATIC_OBJECT_FILES) test -d $(SHARED_OBJECT_FILES) || mkdir $(SHARED_OBJECT_FILES) @echo "*** Compiling $<..."- $(CXXSTATIC) -c $^ -o $(STATIC_OBJECT_FILES)/$@+ $(CXXSTATIC) -c -fPIC $^ -o $(STATIC_OBJECT_FILES)/$@ $(CXXSHARED) -c -fPIC $^ -o $(SHARED_OBJECT_FILES)/$@ libfltkc.a : $(OBJECTS) test -d $(LIBDIR) || mkdir $(LIBDIR) @echo "*** Linking $@..." (cd $(STATIC_OBJECT_FILES); \ ar rcs $(LIBDIR)/$@ $^;)-libfltkc.so : $(OBJECTS)+libfltkcdyn.so : $(OBJECTS) test -d $(LIBDIR) || mkdir $(LIBDIR) @echo "*** Linking $@..." (cd $(SHARED_OBJECT_FILES); \ $(CXX) $(SONAME_FLAGS),$(LIBDIR)/$@ -o $(LIBDIR)/$@ $^);-libfltkc.dylib: $(OBJECTS)+libfltkcdyn.dylib: $(OBJECTS) @echo "*** Not linking $@ because of bugs in ./c-src/Makefile.in, help appreciated." clean: test -d $(LIBDIR) && rm -rf $(LIBDIR)
c-src/xC.h view
@@ -4,9 +4,12 @@ // always include the FL/*.H headers before local headers // X is included transitively and needed for // the callback mechanism included below to work.+#ifdef _WIN32+ #define FL_LIBRARY 1+#endif #include "FL/Fl.H"-#include "FL/x.H" #include "Fl_CallbackC.h"+#include "FL/x.H" EXPORT { #endif #if !defined(WIN32) && !defined(__APPLE__)
configure.ac view
@@ -1,7 +1,6 @@ AC_PREREQ([2.60]) AC_INIT([fltkc], [0.1], [aditya dawt siram ayt gmail dawt com]) AC_CONFIG_SRCDIR([c-src/Fl_C.h])-AC_CONFIG_HEADERS([config.h]) # Checks for programs. AC_PROG_CXX
fltkhs.buildinfo.in view
@@ -1,1 +1,2 @@ ld-options: @FLTKCONFIGCOMMAND@ -lstdc+++include-dirs: @FLTK_HOME@
fltkhs.cabal view
@@ -1,5 +1,5 @@ name: fltkhs-version: 0.1.0.1+version: 0.1.0.2 synopsis: FLTK bindings description: Low level bindings for the FLTK GUI toolkit.@@ -111,10 +111,8 @@ fltkhs default-language: Haskell2010 ghc-Options: -Wall -threaded -fcontext-stack=220- if os(linux)- ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"- else- ghc-Options:+ if !os(darwin)+ ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive" Executable fltkhs-table-as-container Main-Is: table-as-container.hs@@ -124,10 +122,8 @@ fltkhs default-language: Haskell2010 ghc-Options: -Wall -threaded -fcontext-stack=220- if os(linux)- ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"- else- ghc-Options:+ if !os(darwin)+ ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive" Executable fltkhs-texteditor-simple Main-Is: texteditor-simple.hs@@ -137,10 +133,8 @@ fltkhs default-language: Haskell2010 ghc-Options: -Wall -threaded -fcontext-stack=220- if os(linux)- ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"- else- ghc-Options:+ if !os(darwin)+ ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive" Executable fltkhs-textdisplay-with-colors Main-Is: textdisplay-with-colors.hs@@ -150,10 +144,8 @@ fltkhs default-language: Haskell2010 ghc-Options: -Wall -threaded -fcontext-stack=220- if os(linux)- ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"- else- ghc-Options:+ if !os(darwin)+ ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive" Executable fltkhs-hello-world Main-Is: hello-world.hs@@ -163,10 +155,8 @@ fltkhs default-language: Haskell2010 ghc-Options: -Wall -threaded -fcontext-stack=220- if os(linux)- ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"- else- ghc-Options:+ if !os(darwin)+ ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive" Executable fltkhs-doublebuffer Main-Is: doublebuffer.hs@@ -176,10 +166,8 @@ fltkhs default-language: Haskell2010 ghc-Options: -Wall -threaded -fcontext-stack=220- if os(linux)- ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"- else- ghc-Options:+ if !os(darwin)+ ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive" Executable fltkhs-make-tree Main-Is: make-tree.hs@@ -189,10 +177,8 @@ fltkhs default-language: Haskell2010 ghc-Options: -Wall -threaded -fcontext-stack=220- if os(linux)- ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"- else- ghc-Options:+ if !os(darwin)+ ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive" Executable fltkhs-tree-simple Main-Is: tree-simple.hs@@ -202,10 +188,8 @@ fltkhs default-language: Haskell2010 ghc-Options: -Wall -threaded -fcontext-stack=220- if os(linux)- ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"- else- ghc-Options:+ if !os(darwin)+ ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive" Executable fltkhs-table-spreadsheet-with-keyboard-nav Main-Is: table-spreadsheet-with-keyboard-nav.hs@@ -215,10 +199,8 @@ fltkhs default-language: Haskell2010 ghc-Options: -Wall -threaded -fcontext-stack=220- if os(linux)- ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"- else- ghc-Options:+ if !os(darwin)+ ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive" Executable fltkhs-test_call Main-Is: TestCall.hs@@ -228,10 +210,8 @@ fltkhs default-language: Haskell2010 ghc-Options: -Wall -threaded -fcontext-stack=220- if os(linux)- ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"- else- ghc-Options:+ if !os(darwin)+ ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive" Executable fltkhs-buttons Main-Is: Buttons.hs@@ -241,10 +221,8 @@ fltkhs default-language: Haskell2010 ghc-Options: -Wall -threaded -fcontext-stack=220- if os(linux)- ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"- else- ghc-Options:+ if !os(darwin)+ ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive" Executable fltkhs-table-simple Main-Is: table-simple.hs@@ -254,10 +232,8 @@ fltkhs default-language: Haskell2010 ghc-Options: -Wall -threaded -fcontext-stack=220- if os(linux)- ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"- else- ghc-Options:+ if !os(darwin)+ ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive" Executable fltkhs-table-sort Main-Is: table-sort.hs@@ -268,10 +244,8 @@ process default-language: Haskell2010 ghc-Options: -Wall -threaded -fcontext-stack=220- if os(linux)- ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"- else- ghc-Options:+ if !os(darwin)+ ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive" Executable fltkhs-arc Main-Is: arc.hs@@ -281,10 +255,8 @@ fltkhs default-language: Haskell2010 ghc-Options: -Wall -threaded -fcontext-stack=220- if os(linux)- ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"- else- ghc-Options:+ if !os(darwin)+ ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive" Executable fltkhs-bitmap Main-Is: bitmap.hs@@ -294,10 +266,8 @@ fltkhs,bytestring default-language: Haskell2010 ghc-Options: -Wall -threaded -fcontext-stack=220- if os(linux)- ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"- else- ghc-Options:+ if !os(darwin)+ ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive" Executable fltkhs-boxtype Main-Is: boxtype.hs@@ -307,10 +277,8 @@ fltkhs,bytestring default-language: Haskell2010 ghc-Options: -Wall -threaded -fcontext-stack=220- if os(linux)- ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"- else- ghc-Options:+ if !os(darwin)+ ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive" Executable fltkhs-browser Main-Is: browser.hs@@ -321,10 +289,8 @@ bytestring default-language: Haskell2010 ghc-Options: -Wall -threaded -fcontext-stack=220- if os(linux)- ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"- else- ghc-Options:+ if !os(darwin)+ ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive" Executable fltkhs-clock Main-Is: clock.hs@@ -335,7 +301,5 @@ bytestring default-language: Haskell2010 ghc-Options: -Wall -threaded -fcontext-stack=220- if os(linux)- ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"- else- ghc-Options:+ if !os(darwin)+ ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"
src/Graphics/UI/FLTK/LowLevel/FLTKHS.hs view
@@ -8,10 +8,14 @@ -- -- $Goals - -- * Installation+ -- * Installation (Linux & Mac) --- -- $Installation+ -- $InstallationLinux + -- * Installation (Windows 64-bit)+ --+ -- $InstallationWindows+ -- * Demos -- -- $Demos@@ -213,8 +217,7 @@ -- (7) includes a lot of complete working demos so that the user can get up and running faster -- --- $Installation--- Unfortunately this package does not currently install in Windows. The instructions below are only for OSX and Linux.+-- $InstallationLinux -- -- - Make sure you have OpenGL installed -- - Download and install <http://www.fltk.org/software.php?VERSION=1.3.3&FILE=fltk/1.3.3/fltk-1.3.3-source.tar.gz FLTK 1.3.3>.@@ -249,6 +252,114 @@ -- -- > > fltkhs-hello-world --++-- $InstallationWindows+--+-- Note: Currently this package only works on 64-bit Windows.+--+-- This install guide has been tested on Windows 7 64-bit with 8GB of RAM.+--+--+-- The general steps involved are:+--+-- - Install <https://github.com/fpco/minghc MinGHC> and upgrade cabal-install+-- - Install <http://www.cmake.org/files/v3.2/cmake-3.2.1-win32-x86.exe CMake>+-- - Download & compile <http://www.fltk.org/software.php?VERSION=1.3.3&FILE=fltk/1.3.3/fltk-1.3.3-source.tar.gz FLTK 1.3.3>+-- - Install this package+--+-- == Install MinGHC+-- MinGHC installers are available <https://github.com/fpco/minghc here>. This package has been tested with GHC 7.8.4 64-bit and may work with newer versions.+--+-- Once MinGHC is downloaded and installed per the instructions in the link above, install the newest version of cabal-install. This is an important step because the `Setup.hs` that ships with this package uses some of the newer features of the Cabal 1.2.x API.+--+-- @+-- > cabal update+-- > cabal install cabal-install+-- @+--+-- == Install CMake+-- Simply click through the <http://www.cmake.org/files/v3.2/cmake-3.2.1-win32-x86.exe CMake> with the default options. Once this process is complete the `cmake` executable should be available at the CMD prompt:+--+-- @+-- > cmake --version+-- cmake version 2.8.11.2+-- @+--+-- Your version will likely be `cmake version 3.2.x` but so long as it is above `cmake version 2.6.x` the install should proceed smoothly.+--+-- == Download & compile FLTK-1.3.3+-- Please make sure to only download version <http://www.fltk.org/software.php?VERSION=1.3.3&FILE=fltk/1.3.3/fltk-1.3.3-source.tar.gz FLTK 1.3.3>.+--+-- Once this is downloaded, since the `tar` and `gunzip` utilities ship with MinGHC, you should be able to unpack it at the command prompt:+--+-- @+-- > tar -zxvf fltk-1.3.3-source.tar.gz+-- @+--+-- Then descend into the source directory:+--+-- @+-- > cd fltkh-1.3.3-source+-- @+--+-- Make a build directory to hold the generated CMake files:+--+-- @+-- > mkdir build+-- @+--+-- Descend into the `build` directory:+--+-- @+-- > cd build+-- @+--+-- And run `cmake` telling it to work with the `make` utility that ships with MSYS:+--+-- @+-- > cmake .. -G "MSYS Makefiles"+-- @+--+-- Please note the `..` after `cmake` in the command. This is important because it tells CMake to build using the CMake specification found in the parent directory.+--+-- Once these steps have been completed you should be able to compile the source:+--+-- @+-- > make+-- @+--+--+-- Each compile step may spit out a scary looking warning about a pointer to int cast, but this can be safely ignored. It seems to be an issue with the MinGW g++/gcc compiler.+--+-- Also, the final demo `windowFocus` may fail to compile and complain about a symbol being redefined. This is again an issue with MinGW and can be safely ignored.+--+-- Now it is necessary to define the `FLTK_HOME` environment variable so this package knows where to look for header and library files:+--+-- @+-- > set FLTK_HOME=\<path-to-the-FLTK-root-directory\>+-- @+--+-- == Install this package+--+-- At this point it is highly likely that running `cabal --version` at the command line still invokes the old version even though `cabal` was updated. This is because the location of the newly installed `cabal` has not been added to the PATH variable. You can do so with this command:+--+-- @+-- > set PATH=C:\\Users\\\<your-username\>\\AppData\\Roaming\\cabal\\bin;%PATH%+-- @+--+-- Now you can finally install this package:+--+-- @+-- > > cabal install fltkhs+-- @+--+-- Please note that compared to the Linux and Mac installs the compilation process takes a very long time. The reason for this is the MinGW gcc/g++ compilers are much slower.+--+-- Once this has completed, you can test it by:+--+-- @+-- > fltkhs-hello-world+-- @ -- $Demos --