summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManolo Gouy <Manolo>2010-12-17 10:43:41 +0000
committerManolo Gouy <Manolo>2010-12-17 10:43:41 +0000
commitf3c7efc8d2feb9a67b6fdff09f4f428125eb5b79 (patch)
tree63543707427edef3bfc49af7bee60ede908527fe
parentff4cafeb303cd8e9d24b62c45661f6da5067d556 (diff)
The 3 objective-c++ files used for the Mac OS X support are no longer included
by other files but added to the list of source files to be compiled for Mac OS X only. Support files for autoconf/configure/make, CMake and Xcode are also modified accordingly. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@8049 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
-rw-r--r--configure.in4
-rw-r--r--fluid/ide_maketools.cxx25
-rw-r--r--fluid/ide_support.cxx7
-rw-r--r--fluid/ide_xcode.cxx6
-rw-r--r--makeinclude.in19
-rw-r--r--src/CMakeLists.txt15
-rw-r--r--src/Fl.cxx17
-rw-r--r--src/Fl_Native_File_Chooser.cxx2
-rw-r--r--src/Fl_Printer.cxx2
-rw-r--r--src/Fl_cocoa.mm10
-rw-r--r--src/Makefile27
11 files changed, 83 insertions, 51 deletions
diff --git a/configure.in b/configure.in
index 843953142..311edeaea 100644
--- a/configure.in
+++ b/configure.in
@@ -36,7 +36,11 @@ AC_INIT(src/Fl.cxx)
dnl So --with-archflags option is used during "checking size of long"
if test `uname` = Darwin; then
CFLAGS="$CFLAGS $with_archflags"
+ USEMMFILES="Yes"
+else
+ USEMMFILES="No"
fi
+AC_SUBST(USEMMFILES)
dnl FLTK library versions...
FL_MAJOR_VERSION=1
diff --git a/fluid/ide_maketools.cxx b/fluid/ide_maketools.cxx
index 91dd49249..f2b6eb503 100644
--- a/fluid/ide_maketools.cxx
+++ b/fluid/ide_maketools.cxx
@@ -490,6 +490,11 @@ public:
fputs("\tfl_utf8.cxx \\\n", f);
fputs("\tps_image.cxx\n", f);
fputs("\n", f);
+
+ fputs("OBJCPPFILES = \\\n", f);
+ fputs("\tFl_cocoa.mm Fl_Quartz_Printer.mm Fl_Native_File_Chooser_MAC.mm\n", f);
+ fputs("\n", f);
+
fputs("FLCPPFILES = \\\n", f);
fputs("\tforms_compatability.cxx \\\n", f);
fputs("\tforms_bitmap.cxx \\\n", f);
@@ -538,7 +543,12 @@ public:
fputs("\n", f);
fputs("include ../makeinclude\n", f);
fputs("\n", f);
- fputs("OBJECTS = $(CPPFILES:.cxx=.o) $(CFILES:.c=.o) $(UTF8CFILES:.c=.o)\n", f);
+
+ fputs("MMFILES = $(shell \\\n"
+ "\tif [ $(USEMMFILES) = Yes ]; then echo $(OBJCPPFILES);\\\n"
+ "\tfi)\n\n", f);
+
+ fputs("OBJECTS = $(MMFILES:.mm=.o) $(CPPFILES:.cxx=.o) $(CFILES:.c=.o) $(UTF8CFILES:.c=.o)\n", f);
fputs("GLOBJECTS = $(GLCPPFILES:.cxx=.o)\n", f);
fputs("FLOBJECTS = $(FLCPPFILES:.cxx=.o)\n", f);
fputs("IMGOBJECTS = $(IMGCPPFILES:.cxx=.o)\n", f);
@@ -795,8 +805,8 @@ public:
fputs("\t\tlibfltk_gl.dylib libfltk_images.dylib \\\n", f);
fputs("\t\tcmap core\n", f);
fputs("\n", f);
- fputs("depend:\t$(CPPFILES) $(FLCPPFILES) $(GLCPPFILES) $(IMGCPPFILES) $(CFILES) $(UTF8CFILES)\n", f);
- fputs("\tmakedepend -Y -I.. -f makedepend $(CPPFILES) $(FLCPPFILES) \\\n", f);
+ fputs("depend:\t$(CPPFILES) $(MMFILES) $(FLCPPFILES) $(GLCPPFILES) $(IMGCPPFILES) $(CFILES) $(UTF8CFILES)\n", f);
+ fputs("\tmakedepend -Y -I.. -f makedepend $(CPPFILES) $(MMFILES) $(FLCPPFILES) \\\n", f);
fputs("\t\t$(GLCPPFILES) $(IMGCPPFILES) $(CFILES) $(UTF8CFILES)\n", f);
fputs("\n", f);
fputs("# Automatically generated dependencies... generated on a Linux/Unix host !\n", f);
@@ -807,8 +817,11 @@ public:
fputs("# Please add only non-Linux/Unix files or such that are optional\n", f);
fputs("# (like \"*xft*\") here:\n", f);
fputs("Fl_get_key.o:\tFl_get_key_mac.cxx Fl_get_key_win32.cxx\n", f);
- fputs("Fl_Native_File_Chooser.o : Fl_Native_File_Chooser_MAC.mm Fl_Native_File_Chooser_WIN32.cxx\n", f);
- fputs("Fl.o:\t\tFl_mac.cxx Fl_win32.cxx Fl_cocoa.mm\n", f);
+ fputs("Fl_Native_File_Chooser.o : Fl_Native_File_Chooser_WIN32.cxx\n", f);
+ fputs("Fl_Native_File_Chooser_MAC.o : Fl_Native_File_Chooser_MAC.mm\n", f);
+ fputs("Fl_Quartz_Printer.o : Fl_Quartz_Printer.mm\n", f);
+ fputs("Fl.o:\t\tFl_win32.cxx\n", f);
+ fputs("Fl_cocoa.o:\t\tFl_cocoa.mm\n", f);
fputs("fl_color.o:\tfl_color_mac.cxx fl_color_win32.cxx\n", f);
fputs("fl_dnd.o:\tfl_dnd_mac.cxx fl_dnd_win32.cxx fl_dnd_x.cxx\n", f);
fputs("fl_draw_image.o: fl_draw_image_mac.cxx fl_draw_image_win32.cxx\n", f);
@@ -816,7 +829,7 @@ public:
fputs("fl_read_image.o: fl_read_image_mac.cxx fl_read_image_win32.cxx\n", f);
fputs("fl_set_fonts.o:\tfl_set_fonts_mac.cxx fl_set_fonts_x.cxx \\\n", f);
fputs("\t\tfl_set_fonts_xft.cxx fl_set_fonts_win32.cxx\n", f);
- fputs("Fl_Printer.o:\tFl_Quartz_Printer.mm Fl_GDI_Printer.cxx Fl_PS_Printer.cxx\n", f);
+ fputs("Fl_Printer.o:\tFl_GDI_Printer.cxx Fl_PostScript.cxx\n", f);
fputs("\n", f);
fputs("fl_arci.o:\t../FL/mac.H ../FL/win32.H\n", f);
fputs("Fl_arg.o:\t../FL/mac.H ../FL/win32.H\n", f);
diff --git a/fluid/ide_support.cxx b/fluid/ide_support.cxx
index b88d32002..bcd88528a 100644
--- a/fluid/ide_support.cxx
+++ b/fluid/ide_support.cxx
@@ -510,7 +510,10 @@ int create_new_database(const char *filename)
fltk_lib.add_source(files_db, "src/xutf8/case.c");
fltk_lib.add_source(files_db, "src/xutf8/is_right2left.c");
fltk_lib.add_source(files_db, "src/xutf8/is_spacing.c");
-
+
+ xcode_only(fltk_lib.add_source(files_db, "src/Fl_cocoa.mm"));
+ xcode_only(fltk_lib.add_source(files_db, "src/Fl_Quartz_Printer.mm"));
+ xcode_only(fltk_lib.add_source(files_db, "src/Fl_Native_File_Chooser_MAC.mm"));
fltk_lib.add_header(files_db, "FL/Enumerations.H");
fltk_lib.add_header(files_db, "FL/Fl.H");
@@ -638,7 +641,7 @@ int create_new_database(const char *filename)
fltk_lib.add_header(files_db, "FL/math.h");
fltk_lib.add_header(files_db, "FL/names.h");
fltk_lib.add_header(files_db, "FL/win32.H");
- fltk_lib.add_header(files_db, "FL/x.H");
+ fltk_lib.add_header(files_db, "FL/x.H");
xcode_only(fltk_lib.add_external_lib(files_db, "/System/Library/Frameworks/AudioToolbox.framework"));
}
diff --git a/fluid/ide_xcode.cxx b/fluid/ide_xcode.cxx
index 8c459f212..1063d3b11 100644
--- a/fluid/ide_xcode.cxx
+++ b/fluid/ide_xcode.cxx
@@ -29,7 +29,7 @@
XCODE 3.0 IDE FILES
- The Xcode 3.0 IDE file format is using a quite comlex tree of multiply linked
+ The Xcode 3.0 IDE file format is using a quite complex tree of multiply linked
entries to leave as much possibilities to developers as somehow possible. To
write this format, we will need to generate a bunch of new unique IDs that will
be stored in the DB.
@@ -447,10 +447,6 @@ public:
const char *filetype = "test";
const char *ext = fileDB.fileExt();
if (!ext) {
- } else if (strcmp(pathAndName, "src/Fl.cxx")==0
- ||strcmp(pathAndName, "src/Fl_Native_File_Chooser.cxx")==0
- ||strcmp(pathAndName, "src/Fl_Printer.cxx")==0) { // FIXME: bad hack!
- filetype = "sourcecode.cpp.objcpp";
} else if (strcmp(ext, ".cxx")==0) {
filetype = "sourcecode.cpp.cpp";
} else if (strcmp(ext, ".H")==0) {
diff --git a/makeinclude.in b/makeinclude.in
index fb0d287fa..b023e1481 100644
--- a/makeinclude.in
+++ b/makeinclude.in
@@ -36,7 +36,7 @@ mandir = @mandir@
srcdir = @srcdir@
docdir = $(datadir)/doc/fltk
VPATH = @srcdir@
-
+USEMMFILES = @USEMMFILES@
# programs we use...
HTMLDOC = @HTMLDOC@
DOXYDOC = @DOXYDOC@
@@ -143,7 +143,7 @@ UNINSTALL_DESKTOP = @UNINSTALL_DESKTOP@
.SILENT:
# Build commands and filename extensions...
-.SUFFIXES: .0 .1 .3 .6 .c .cxx .h .fl .man .o .z $(EXEEXT)
+.SUFFIXES: .0 .1 .3 .6 .c .cxx .mm .h .fl .man .o .z $(EXEEXT)
.o$(EXEEXT):
echo Linking $@...
@@ -155,15 +155,12 @@ UNINSTALL_DESKTOP = @UNINSTALL_DESKTOP@
.cxx.o:
echo Compiling $<...
- @if test `uname` = Darwin -a $< = Fl.cxx ; then \
- $(CXX) -I.. $(ARCHFLAGS) @PNGINC@ @JPEGINC@ @ZLIBINC@ $(CXXFLAGS) -x objective-c++ -c $< -o $@; \
- elif test `uname` = Darwin -a $< = Fl_Native_File_Chooser.cxx ; then \
- $(CXX) -I.. $(ARCHFLAGS) @PNGINC@ @JPEGINC@ @ZLIBINC@ $(CXXFLAGS) -x objective-c++ -c $< -o $@; \
- elif test `uname` = Darwin -a $< = Fl_Printer.cxx ; then \
- $(CXX) -I.. $(ARCHFLAGS) @PNGINC@ @JPEGINC@ @ZLIBINC@ $(CXXFLAGS) -x objective-c++ -c $< -o $@; \
- else \
- $(CXX) -I.. $(ARCHFLAGS) @PNGINC@ @JPEGINC@ @ZLIBINC@ $(CXXFLAGS) -c $< -o $@; \
- fi
+ $(CXX) -I.. $(ARCHFLAGS) @PNGINC@ @JPEGINC@ @ZLIBINC@ $(CXXFLAGS) -c $< -o $@
+
+.mm.o:
+ echo Compiling $<...
+ $(CXX) -I.. $(ARCHFLAGS) $(CXXFLAGS) -x objective-c++ -c $< -o $@
+
.man.0 .man.1 .man.3 .man.6:
echo Formatting $<...
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 3d4d569d1..8b35ac57a 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -194,13 +194,18 @@ set(CFILES
)
if(APPLE)
- set_source_files_properties(
- Fl.cxx Fl_Native_File_Chooser.cxx Fl_Printer.cxx
- PROPERTIES COMPILE_FLAGS "-x objective-c++")
+ set(MMFILES
+ Fl_cocoa.mm
+ Fl_Quartz_Printer.mm
+ Fl_Native_File_Chooser_MAC.mm
+ )
+else()
+ set(MMFILES
+ )
endif(APPLE)
#######################################################################
-add_library(fltk STATIC ${CPPFILES} ${CFILES} fl_call_main.c)
+add_library(fltk STATIC ${CPPFILES} ${MMFILES} ${CFILES} fl_call_main.c)
set_target_properties(fltk PROPERTIES CLEAN_DIRECT_OUTPUT 1)
if(MSVC)
if(OPTION_LARGE_FILE)
@@ -307,7 +312,7 @@ endif(OPENGL_FOUND)
if(OPTION_BUILD_SHARED_LIBS)
#######################################################################
-add_library(fltk_SHARED SHARED ${CPPFILES} ${CFILES})
+add_library(fltk_SHARED SHARED ${CPPFILES} ${MMFILES} ${CFILES})
set_target_properties(fltk_SHARED
PROPERTIES CLEAN_DIRECT_OUTPUT 1
VERSION ${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}
diff --git a/src/Fl.cxx b/src/Fl.cxx
index 42d3fff03..845e7b7de 100644
--- a/src/Fl.cxx
+++ b/src/Fl.cxx
@@ -48,10 +48,6 @@
#include <stdlib.h>
#include "flstring.h"
-#if defined(__APPLE__)
-#import <Cocoa/Cocoa.h>
-#endif
-
#if defined(DEBUG) || defined(DEBUG_WATCH)
# include <stdio.h>
#endif // DEBUG || DEBUG_WATCH
@@ -63,6 +59,8 @@ HBRUSH fl_brush_action(int action);
void fl_cleanup_pens(void);
void fl_release_dc(HWND,HDC);
void fl_cleanup_dc_list(void);
+#elif defined(__APPLE__)
+extern double fl_MAC_flush_and_wait(double time_to_wait, char in_idle);
#endif // WIN32
//
@@ -420,13 +418,7 @@ double Fl::wait(double time_to_wait) {
// the idle function may turn off idle, we can then wait:
if (idle) time_to_wait = 0.0;
}
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- flush();
- if (idle && !in_idle) // 'idle' may have been set within flush()
- time_to_wait = 0.0;
- double retval = fl_wait(time_to_wait);
- [pool release];
- return retval;
+ return fl_MAC_flush_and_wait(time_to_wait, in_idle);
#else
@@ -1556,8 +1548,7 @@ void Fl_Window::flush() {
#ifdef WIN32
# include "Fl_win32.cxx"
-#elif defined(__APPLE__)
-# include "Fl_cocoa.mm"
+//#elif defined(__APPLE__)
#endif
//
diff --git a/src/Fl_Native_File_Chooser.cxx b/src/Fl_Native_File_Chooser.cxx
index 2941c9b62..02f3ab9c1 100644
--- a/src/Fl_Native_File_Chooser.cxx
+++ b/src/Fl_Native_File_Chooser.cxx
@@ -32,7 +32,7 @@
// Use Apple's chooser
#ifdef __APPLE__
-#include "Fl_Native_File_Chooser_MAC.mm"
+//#include "Fl_Native_File_Chooser_MAC.mm"
#endif
// All else falls back to FLTK's own chooser
diff --git a/src/Fl_Printer.cxx b/src/Fl_Printer.cxx
index 7ac7bf203..94d53e280 100644
--- a/src/Fl_Printer.cxx
+++ b/src/Fl_Printer.cxx
@@ -29,7 +29,7 @@
#include <FL/Fl_Printer.H>
#ifdef __APPLE__
-#include "Fl_Quartz_Printer.mm"
+//#include "Fl_Quartz_Printer.mm"
#elif defined(WIN32)
#include "Fl_GDI_Printer.cxx"
#endif
diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm
index 49deb785f..2c8702313 100644
--- a/src/Fl_cocoa.mm
+++ b/src/Fl_cocoa.mm
@@ -703,6 +703,16 @@ int fl_wait( double time )
return (got_events);
}
+double fl_MAC_flush_and_wait(double time_to_wait, char in_idle) {
+ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+ Fl::flush();
+ if (Fl::idle && !in_idle) // 'idle' may have been set within flush()
+ time_to_wait = 0.0;
+ double retval = fl_wait(time_to_wait);
+ [pool release];
+ return retval;
+}
+
// updates Fl::e_x, Fl::e_y, Fl::e_x_root, and Fl::e_y_root
static void update_e_xy_and_e_xy_root(NSWindow *nsw)
{
diff --git a/src/Makefile b/src/Makefile
index 286921eba..924d8f8cf 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -166,7 +166,12 @@ CPPFILES = \
screen_xywh.cxx \
fl_utf8.cxx \
ps_image.cxx
-
+
+OBJCPPFILES = \
+ Fl_cocoa.mm \
+ Fl_Quartz_Printer.mm \
+ Fl_Native_File_Chooser_MAC.mm
+
FLCPPFILES = \
forms_compatability.cxx \
forms_bitmap.cxx \
@@ -215,7 +220,12 @@ UTF8CFILES = \
include ../makeinclude
-OBJECTS = $(CPPFILES:.cxx=.o) $(CFILES:.c=.o) $(UTF8CFILES:.c=.o)
+MMFILES = $(shell \
+ if [ $(USEMMFILES) = Yes ]; then echo $(OBJCPPFILES);\
+ fi)
+
+
+OBJECTS = $(MMFILES:.mm=.o) $(CPPFILES:.cxx=.o) $(CFILES:.c=.o) $(UTF8CFILES:.c=.o)
GLOBJECTS = $(GLCPPFILES:.cxx=.o)
FLOBJECTS = $(FLCPPFILES:.cxx=.o)
IMGOBJECTS = $(IMGCPPFILES:.cxx=.o)
@@ -472,8 +482,8 @@ clean:
libfltk_gl.dylib libfltk_images.dylib \
cmap core
-depend: $(CPPFILES) $(FLCPPFILES) $(GLCPPFILES) $(IMGCPPFILES) $(CFILES) $(UTF8CFILES)
- makedepend -Y -I.. -f makedepend $(CPPFILES) $(FLCPPFILES) \
+depend: $(CPPFILES) $(MMFILES) $(FLCPPFILES) $(GLCPPFILES) $(IMGCPPFILES) $(CFILES) $(UTF8CFILES)
+ makedepend -Y -I.. -f makedepend $(CPPFILES) $(MMFILES) $(FLCPPFILES) \
$(GLCPPFILES) $(IMGCPPFILES) $(CFILES) $(UTF8CFILES)
# Automatically generated dependencies... generated on a Linux/Unix host !
@@ -484,8 +494,10 @@ include makedepend
# Please add only non-Linux/Unix files or such that are optional
# (like "*xft*") here:
Fl_get_key.o: Fl_get_key_mac.cxx Fl_get_key_win32.cxx
-Fl_Native_File_Chooser.o : Fl_Native_File_Chooser_MAC.mm Fl_Native_File_Chooser_WIN32.cxx
-Fl.o: Fl_mac.cxx Fl_win32.cxx Fl_cocoa.mm
+Fl_Native_File_Chooser.o : Fl_Native_File_Chooser_WIN32.cxx
+Fl_Native_File_Chooser_MAC.o: Fl_Native_File_Chooser_MAC.mm
+Fl.o: Fl_win32.cxx
+Fl_cocoa.o: Fl_cocoa.mm
fl_color.o: fl_color_mac.cxx fl_color_win32.cxx
fl_dnd.o: fl_dnd_mac.cxx fl_dnd_win32.cxx fl_dnd_x.cxx
fl_draw_image.o: fl_draw_image_mac.cxx fl_draw_image_win32.cxx
@@ -493,7 +505,8 @@ fl_font.o: fl_font_mac.cxx fl_font_x.cxx fl_font_xft.cxx fl_font_win32.cxx
fl_read_image.o: fl_read_image_mac.cxx fl_read_image_win32.cxx
fl_set_fonts.o: fl_set_fonts_mac.cxx fl_set_fonts_x.cxx \
fl_set_fonts_xft.cxx fl_set_fonts_win32.cxx
-Fl_Printer.o: Fl_Quartz_Printer.mm Fl_GDI_Printer.cxx Fl_PostScript.cxx
+Fl_Printer.o: Fl_GDI_Printer.cxx Fl_PostScript.cxx
+Fl_Quartz_Printer.o: Fl_Quartz_Printer.mm
fl_arci.o: ../FL/mac.H ../FL/win32.H
Fl_arg.o: ../FL/mac.H ../FL/win32.H
fl_ask.o: ../FL/mac.H ../FL/win32.H