DO NOT REPLY TO THIS MESSAGE.  INSTEAD, POST ANY RESPONSES TO THE LINK BELOW.

[STR New]

Link: http://www.fltk.org/str.php?L2317
Version: 1.3-current


When cross-compiling with CMake the build should use a native fluid and the
backwards-compatibility links should depend on the host system, not the
target.

The attached patch file fixes these issues.


Link: http://www.fltk.org/str.php?L2317
Version: 1.3-current
diff -Naur fltk-1.3.x-r7037.orig/CMakeLists.txt fltk-1.3.x-r7037/CMakeLists.txt
--- fltk-1.3.x-r7037.orig/CMakeLists.txt        2010-02-15 11:01:33.000000000 
-0500
+++ fltk-1.3.x-r7037/CMakeLists.txt     2010-02-15 10:57:53.000000000 -0500
@@ -27,7 +27,7 @@
 #
 
 PROJECT(FLTK)
-CMAKE_MINIMUM_REQUIRED(VERSION 2.0)
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
 
 # The FLTK version
 SET(FLTK_VERSION_MAJOR "1")
@@ -223,7 +223,7 @@
 ELSE(FLTK_USE_SYSTEM_ZLIB)
   MARK_AS_ADVANCED(ZLIB_INCLUDE_DIR)
   MARK_AS_ADVANCED(ZLIB_LIBRARY)
-  SUBDIRS(zlib)
+  ADD_SUBDIRECTORY(zlib)
   SET(HAVE_LIBZ 1)
   SET(FLTK_ZLIB_LIBRARIES fltk_zlib)
   SET(FLTK_LIBRARIES "${FLTK_LIBRARIES};fltk_zlib")
@@ -242,7 +242,7 @@
 ELSE(FLTK_USE_SYSTEM_JPEG)
   MARK_AS_ADVANCED(JPEG_INCLUDE_DIR)
   MARK_AS_ADVANCED(JPEG_LIBRARY)
-  SUBDIRS(jpeg)
+  ADD_SUBDIRECTORY(jpeg)
   SET(HAVE_LIBJPEG 1)
   SET(FLTK_JPEG_LIBRARIES fltk_jpeg)
   SET(FLTK_LIBRARIES "${FLTK_LIBRARIES};fltk_jpeg")
@@ -264,7 +264,7 @@
 ELSE(FLTK_USE_SYSTEM_PNG)
   MARK_AS_ADVANCED(PNG_INCLUDE_DIR)
   MARK_AS_ADVANCED(PNG_LIBRARY)
-  SUBDIRS(png)
+  ADD_SUBDIRECTORY(png)
   SET(HAVE_LIBPNG 1)
   SET(HAVE_PNG_H 1)
   SET(FLTK_PNG_LIBRARIES fltk_png)
@@ -282,93 +282,54 @@
 CONFIGURE_FILE(${FLTK_SOURCE_DIR}/configh.cmake.in
   ${FLTK_BINARY_DIR}/config.h)
 
-# On unix create symlinks for backward compatibility
-SET(FLTK_CREATE_SYMLINKS 1)
-IF(WIN32)
-  IF(NOT UNIX)
-    SET(FLTK_CREATE_SYMLINKS 0)
-  ENDIF(NOT UNIX)
-ENDIF(WIN32)
-
-MACRO(SAFE_CREATE_SYMLINK SOURCE DESTINATION)
-  IF(EXISTS "${DESTINATION}")
-  ELSE(EXISTS "${DESTINATION}")
-    MESSAGE(STATUS "Create symlink from: \"${SOURCE}\" to \"${DESTINATION}\"")
-    # The quoting here does seems unnatural, but this is to prevent bug in 
CMake
-    EXEC_PROGRAM(ln ARGS 
-      "-s \"${SOURCE}\" \"${DESTINATION}\"" OUTPUT_VARIABLE ln_output
-      RETURN_VALUE ln_retval)
-    IF("${ln_retval}" GREATER 0)
-      MESSAGE(FATAL_ERROR "Problem creatin symlink from \"${SOURCE}\" to 
\"${DESTINATION}\":\n${ln_output}")
-    ENDIF("${ln_retval}" GREATER 0)
-  ENDIF(EXISTS "${DESTINATION}")
-ENDMACRO(SAFE_CREATE_SYMLINK SOURCE DESTINATION)
-
 # If this is out-of-source build, then copy FL directory
-FILE(GLOB FLTK_HEADER_FILES "${FLTK_SOURCE_DIR}/FL/*.[hHr]")
+FILE(GLOB FLTK_HEADER_FILES ${FLTK_SOURCE_DIR}/FL/*.[hHr])
 FOREACH(file ${FLTK_HEADER_FILES})
-  GET_FILENAME_COMPONENT(ext "${file}" EXT)
-  GET_FILENAME_COMPONENT(namewe "${file}" NAME_WE)
-  GET_FILENAME_COMPONENT(name "${file}" NAME)
-  STRING(COMPARE EQUAL "${ext}" ".h" lower_case_h)
-  STRING(COMPARE EQUAL "${ext}" ".H" upper_case_h)
-  IF(lower_case_h OR upper_case_h)
-    SET(outfile_h "${FLTK_BINARY_DIR}/FL/${namewe}.h")
-    SET(outfile_H "${FLTK_BINARY_DIR}/FL/${namewe}.H")
-    CONFIGURE_FILE("${file}" "${outfile_H}" COPYONLY IMMEDIATE)
-    CONFIGURE_FILE("${file}" "${outfile_h}" COPYONLY IMMEDIATE)
-#    IF(FLTK_CREATE_SYMLINKS)
-#      SAFE_CREATE_SYMLINK("${outfile_H}" "${outfile_h}")
-#    ENDIF(FLTK_CREATE_SYMLINKS)
-  ELSE(lower_case_h OR upper_case_h)
-    STRING(COMPARE EQUAL "${ext}" ".r" mac_resource_file)
-    IF(mac_resource_file)
-      SET(outfile "${FLTK_BINARY_DIR}/FL/${name}")
-      CONFIGURE_FILE("${file}" "${outfile}" COPYONLY IMMEDIATE)
-    ENDIF(mac_resource_file)
-  ENDIF(lower_case_h OR upper_case_h)
+   GET_FILENAME_COMPONENT(name ${file} NAME)
+   CONFIGURE_FILE(${file} ${FLTK_BINARY_DIR}/FL/${name} COPYONLY IMMEDIATE)
 ENDFOREACH(file)
 
-IF(FLTK_CREATE_SYMLINKS)
-  SAFE_CREATE_SYMLINK(
-    "${FLTK_BINARY_DIR}/FL"
-    "${FLTK_BINARY_DIR}/Fl")
-
-  SAFE_CREATE_SYMLINK(
-    "${FLTK_BINARY_DIR}/FL/gl.H"
-    "${FLTK_BINARY_DIR}/FL/gl.h")
-
-  # Create the symlinks
-  FILE(READ ${FLTK_SOURCE_DIR}/fltk.list.in SYMLINKSFILE)
-  STRING(REGEX MATCHALL "(l 0000 root sys .includedir/)([^(\n)])+"
-  SYMLINKS ${SYMLINKSFILE})
-  FOREACH(var ${SYMLINKS} )
-    IF("${var}" MATCHES ".H")
-      STRING(REGEX MATCH "(/F)([^(\n)])+" tmp ${var})
-      STRING(REGEX MATCH "(/F)([^( )])+" in ${tmp})
-      STRING(REGEX MATCH "( )([^(\n)])+" out ${tmp}) 
-      STRING(REGEX REPLACE "( )" "" out ${out})
-      SAFE_CREATE_SYMLINK("${FLTK_BINARY_DIR}/FL/${out}" 
"${FLTK_BINARY_DIR}/${in}")
-    ENDIF("${var}" MATCHES ".H")
-  ENDFOREACH(var)
-ENDIF(FLTK_CREATE_SYMLINKS)
-
-# Set the fluid executable path
-UTILITY_SOURCE(FLUID_COMMAND fluid fluid fluid.cxx)
-SET(FLUID_COMMAND "${FLUID_COMMAND}" CACHE INTERNAL "" FORCE)
+# On unix create symlinks for backward compatibility
+IF(CMAKE_HOST_UNIX)
+   IF(NOT EXISTS ${FLTK_BINARY_DIR}/Fl)
+      EXECUTE_PROCESS(COMMAND ln -s FL Fl
+         WORKING_DIRECTORY ${FLTK_BINARY_DIR})
+   ENDIF(NOT EXISTS ${FLTK_BINARY_DIR}/Fl)
+
+   FILE(GLOB FLTK_HEADER_FILES ${FLTK_BINARY_DIR}/FL/*.H)
+   FOREACH(file ${FLTK_HEADER_FILES})
+      GET_FILENAME_COMPONENT(nameWE ${file} NAME_WE)
+      IF(NOT EXISTS ${FLTK_BINARY_DIR}/FL/${nameWE}.h)
+         EXECUTE_PROCESS(COMMAND ln -s ${nameWE}.H ${nameWE}.h
+            WORKING_DIRECTORY ${FLTK_BINARY_DIR}/FL)
+      ENDIF()
+   ENDFOREACH(file)
+ENDIF(CMAKE_HOST_UNIX)
 
 # Include header files in fltk binary tree
 INCLUDE_DIRECTORIES(${FLTK_BINARY_DIR})
 
-# Do the build of fltk libraries and fluid
-SUBDIRS(src)
-SUBDIRS(fluid)
+FIND_FILE(FLUID_PATH
+   NAMES fluid fluid.exe
+   PATHS ENV PATH
+   NO_CMAKE_FIND_ROOT_PATH
+   )
 
+# Set the fluid executable path
+IF(CMAKE_CROSSCOMPILING)
+   ADD_EXECUTABLE(fluid IMPORTED)
+   SET_TARGET_PROPERTIES(fluid
+      PROPERTIES IMPORTED_LOCATION ${FLUID_PATH} )
+ENDIF(CMAKE_CROSSCOMPILING)
+
+# Do the build of fltk libraries and fluid
+ADD_SUBDIRECTORY(src)
+ADD_SUBDIRECTORY(fluid)
 
 # Set an option to build the examples and testing
 OPTION(BUILD_EXAMPLES "Build the tests" ON)
 IF(BUILD_EXAMPLES)
-  SUBDIRS(test)
+  ADD_SUBDIRECTORY(test)
 ENDIF(BUILD_EXAMPLES)
 
 OPTION(BUILD_TESTING "Build testing of FLTK" ON)
@@ -392,7 +353,7 @@
 SET(CXX "${CMAKE_CXX_COMPILER}")
 
 # For build tree usage
-SET(FLTK_FLUID_COMMAND "${FLUID_COMMAND}")
+SET(FLTK_FLUID_COMMAND fluid)
 SET(FLTK_LIBRARY_DEPENDS_FILE ${FLTK_BINARY_DIR}/FLTKLibraryDepends.cmake)
 SET(FLTK_EXECUTABLE_DIRS ${EXECUTABLE_OUTPUT_PATH})
 SET(FLTK_LIBRARY_DIRS ${LIBRARY_OUTPUT_PATH})
@@ -433,11 +394,23 @@
 CONFIGURE_FILE("${FLTK_SOURCE_DIR}/fltk-config.in"
   "${FLTK_BINARY_DIR}/CMake/fltk-config" @ONLY IMMEDIATE)
 
-INSTALL_FILES(/include/FL FILES ${FLTK_HEADER_FILES})
-INSTALL_FILES(/lib/FLTK-${FLTK_VERSION} FILES 
"${FLTK_SOURCE_DIR}/CMake/FLTKUse.cmake")
-INSTALL_FILES(/lib/FLTK-${FLTK_VERSION} FILES 
"${FLTK_BINARY_DIR}/FLTKBuildSettings.cmake")
-INSTALL_FILES(/lib/FLTK-${FLTK_VERSION} FILES 
"${FLTK_BINARY_DIR}/FLTKLibraryDepends.cmake")
-INSTALL_FILES(/lib/FLTK-${FLTK_VERSION} FILES 
"${FLTK_BINARY_DIR}/CMake/FLTKConfig.cmake")
+INSTALL(DIRECTORY ${FLTK_BINARY_DIR}/FL
+   DESTINATION include USE_SOURCE_PERMISSIONS)
+INSTALL(DIRECTORY ${FLTK_BINARY_DIR}/Fl OPTIONAL
+   DESTINATION include USE_SOURCE_PERMISSIONS)
+
+IF(NOT CMAKE_CROSSCOMPILING)
+   INSTALL(PROGRAMS ${EXECUTABLE_OUTPUT_PATH}/fluid DESTINATION bin)
+ENDIF(NOT CMAKE_CROSSCOMPILING)
+
+INSTALL(PROGRAMS ${FLTK_BINARY_DIR}/CMake/fltk-config DESTINATION bin)
+INSTALL(PROGRAMS
+   ${FLTK_SOURCE_DIR}/CMake/FLTKUse.cmake
+   ${FLTK_BINARY_DIR}/FLTKBuildSettings.cmake
+   ${FLTK_BINARY_DIR}/FLTKLibraryDepends.cmake
+   ${FLTK_BINARY_DIR}/CMake/FLTKConfig.cmake
+   DESTINATION lib/FLTK-${FLTK_VERSION}
+   )
 
 #
 # End of "$Id: CMakeLists.txt 7012 2010-01-16 14:18:18Z AlbrechtS $".
diff -Naur fltk-1.3.x-r7037.orig/fluid/CMakeLists.txt 
fltk-1.3.x-r7037/fluid/CMakeLists.txt
--- fltk-1.3.x-r7037.orig/fluid/CMakeLists.txt  2005-08-06 01:02:56.000000000 
-0400
+++ fltk-1.3.x-r7037/fluid/CMakeLists.txt       2010-02-15 10:22:55.000000000 
-0500
@@ -1,3 +1,5 @@
+IF(NOT CMAKE_CROSSCOMPILING)
+
 SET(CPPFILES
        CodeEditor.cxx
        Fl_Function_Type.cxx
@@ -28,3 +30,4 @@
        TARGET_LINK_LIBRARIES(fluid fltk_gl)
 ENDIF(OPENGL_FOUND)
 
+ENDIF(NOT CMAKE_CROSSCOMPILING)
diff -Naur fltk-1.3.x-r7037.orig/test/CMakeLists.txt 
fltk-1.3.x-r7037/test/CMakeLists.txt
--- fltk-1.3.x-r7037.orig/test/CMakeLists.txt   2010-01-15 11:07:19.000000000 
-0500
+++ fltk-1.3.x-r7037/test/CMakeLists.txt        2010-02-15 10:22:55.000000000 
-0500
@@ -5,19 +5,13 @@
                        GET_FILENAME_COMPONENT(fname ${src} NAME_WE)
                        SET(fluid_name 
"${CMAKE_CURRENT_SOURCE_DIR}/${fname}.fl")
                        SET(cxx_name "${CMAKE_CURRENT_BINARY_DIR}/${fname}.cxx")
-                       SET(h_name "${CMAKE_CURRENT_BINARY_DIR}/${fname}.cxx")
                        SET(srcs ${srcs} "${cxx_name}")
                        ADD_CUSTOM_COMMAND(
                                OUTPUT ${cxx_name}
-                               DEPENDS "${fluid_name}" "${FLUID_COMMAND}"
-                               COMMAND ${FLUID_COMMAND}
+                               DEPENDS ${fluid_name} fluid
+                               COMMAND fluid
                                ARGS -c ${fluid_name})
-                       ADD_CUSTOM_COMMAND(
-                               OUTPUT ${h_name}
-                               DEPENDS "${fluid_name}" "${FLUID_COMMAND}"
-                               COMMAND ${FLUID_COMMAND}
-                               ARGS -c ${fluid_name})
-               ELSE("${src}" MATCHES ".fl$")
+               ELSE()
                        SET(srcs ${srcs} ${src})
                ENDIF("${src}" MATCHES ".fl$")
        ENDFOREACH(src)
_______________________________________________
fltk-bugs mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-bugs

Reply via email to