[Vm-dev] VM Maker: CMakeVMMakerSqueak-tty.83.mcz

commits at source.squeak.org commits at source.squeak.org
Sun Jul 6 18:59:35 UTC 2014


Timothy M uploaded a new version of CMakeVMMakerSqueak to project VM Maker:
http://source.squeak.org/VMMaker/CMakeVMMakerSqueak-tty.83.mcz

==================== Summary ====================

Name: CMakeVMMakerSqueak-tty.83
Author: tty
Time: 6 July 2014, 2:59:29.721 pm
UUID: 99e9752a-1cb0-4322-bb34-42e27fa844f3
Ancestors: CMakeVMMakerSqueak-tty.82

The Linux64x86w32BitConfig outputs a config.h config.in and a config.status.
  this blows up the compile, but first things first.

next up.
   Resolve the old hard-coded config.h with the new one and add configuration tests.
   have the plugins generate their own config.h
   modify the build.cmake portion to use generated variables from config.h.
   on successful config/build, remove the old hard-coded config.h and associated tests.

   investigate ckFormat.c

=============== Diff against CMakeVMMakerSqueak-tty.82 ===============

Item was added:
+ ----- Method: CPlatformConfigForSqueak class>>pluginsCMake (in category 'as yet unclassified') -----
+ pluginsCMake
+ 	^'# Figure out which plugins to build and create a configuration for each.
+ # 
+ # Last edited: 2013-11-18 15:12:57 by piumarta on emilia
+ #
+ # Modified by tty to only include the macros. Hopefully, I can transform this to create the config.h for all the plugins on unix
+ #
+ #IF (EXISTS ${bld}/plugins.int)
+ #  FILE (STRINGS ${bld}/plugins.int plugins_int)
+ #ELSEIF (EXISTS ${config}/plugins.int)
+ #  FILE (STRINGS ${config}/plugins.int plugins_int)
+ #ELSEIF (EXISTS ${src}/plugins.int)
+ #  FILE (STRINGS ${src}/plugins.int plugins_int)
+ #ELSE (EXISTS ${src}/plugins.int)
+ #  MESSAGE (FATAL_ERROR "Cannot find plugins.int in ${bld}, ${config} or ${src}")
+ #ENDIF (EXISTS ${bld}/plugins.int)
+ #
+ #STRING (REGEX REPLACE ".*= *(.*)" "\\1" plugins_int ${plugins_int})
+ #STRING (REPLACE " " ";" plugins_int "${plugins_int}")
+ #
+ #IF (EXISTS ${bld}/plugins.ext)
+ #  FILE (STRINGS ${bld}/plugins.ext plugins_ext)
+ #ELSEIF (EXISTS ${config}/plugins.ext)
+ #  FILE (STRINGS ${config}/plugins.ext plugins_ext)
+ #ELSEIF (EXISTS ${src}/plugins.ext)
+ #  FILE (STRINGS ${src}/plugins.ext plugins_ext)
+ #ELSE (EXISTS ${src}/plugins.ext)
+ #  MESSAGE (FATAL_ERROR "Cannot find plugins.ext in ${bld}, ${config} or ${src}")
+ #ENDIF (EXISTS ${bld}/plugins.ext)
+ #
+ #STRING (REGEX REPLACE ".*= *(.*)" "\\1" plugins_ext ${plugins_ext})
+ #STRING (REPLACE " " ";" plugins_ext "${plugins_ext}")
+ #
+ #IF (EXISTS ${bld}/plugins.exc)
+ #  FILE (STRINGS ${bld}/plugins.exc plugins_exc)
+ #ELSEIF (EXISTS ${config}/plugins.exc)
+ #  FILE (STRINGS ${config}/plugins.exc plugins_exc)
+ #ELSEIF (EXISTS ${src}/plugins.exc)
+ #  FILE (STRINGS ${src}/plugins.exc plugins_exc)
+ #ENDIF (EXISTS ${bld}/plugins.exc)
+ #
+ #IF (DEFINED plugins_exc)
+ #  STRING (REGEX REPLACE ".*= *(.*)" "\\1" plugins_exc ${plugins_exc})
+ #  STRING (REPLACE " " ";" plugins_exc "${plugins_exc}")
+ #  FOREACH (plugin ${plugins_exc})
+ #    MESSAGE ("!!!! excluding plugin ${plugin}")
+ #    LIST (REMOVE_ITEM plugins_int ${plugin})
+ #    LIST (REMOVE_ITEM plugins_ext ${plugin})
+ #  ENDFOREACH (plugin)
+ #ENDIF (DEFINED plugins_exc)
+ #
+ #FILE (GLOB plugins_vm RELATIVE ${unix} ${unix}/vm-*)
+ #
+ ## copy generated headers to ${bld} to eliminate ${src} from the include search path
+ #
+ #FILE_COPY (${bld}/interp.h ${src}/vm/interp.h)
+ 
+ MACRO (INTERNAL_PLUGIN plugin)
+   SET (plugin_sources "")
+   IF (DEFINED ${plugin}_sources)
+     SET (plugin_sources ${${plugin}_sources})
+   ELSE (DEFINED ${plugin}_sources)
+     FOREACH (dir ${src}/plugins ${cross}/plugins ${unix}/plugins)
+       SET (tmp "")
+       AUX_SOURCE_DIRECTORY (${dir}/${plugin} tmp)
+       STRING_APPEND (plugin_sources "${tmp}")
+     ENDFOREACH (dir)
+   ENDIF (DEFINED ${plugin}_sources)
+   IF (DEFINED ${plugin}_extra_sources)
+     STRING_APPEND (plugin_sources "${${plugin}_extra_sources}")
+   ENDIF (DEFINED ${plugin}_extra_sources)
+   FILE (WRITE ${bld}/${plugin}/CMakeLists.in "")
+   FOREACH (dir ${unix}/plugins ${unix})
+     FILE_APPEND (${bld}/${plugin}/CMakeLists.in ${dir}/${plugin}/build.cmake)
+   ENDFOREACH (dir)
+   FILE_APPEND (${bld}/${plugin}/CMakeLists.in ${config}/PluginInternal.cmake)
+   CONFIGURE_FILE (${bld}/${plugin}/CMakeLists.in ${bld}/${plugin}/CMakeLists.txt @ONLY)
+   ADD_SUBDIRECTORY (${bld}/${plugin} ${bld}/${plugin})
+ ENDMACRO (INTERNAL_PLUGIN)
+ 
+ MACRO (EXTERNAL_PLUGIN plugin)
+   SET (plugin_sources)
+   IF (DEFINED ${plugin}_sources)
+     SET (plugin_sources ${${plugin}_sources})
+   ELSE (DEFINED ${plugin}_sources)
+     FOREACH (dir ${src}/plugins ${cross}/plugins ${unix}/plugins ${unix})
+       SET (tmp "")
+       AUX_SOURCE_DIRECTORY (${dir}/${plugin} tmp)
+       STRING_APPEND (plugin_sources "${tmp}")
+     ENDFOREACH (dir)
+   ENDIF (DEFINED ${plugin}_sources)
+   IF (DEFINED ${plugin}_extra_sources)
+     STRING_APPEND (plugin_sources "${${plugin}_extra_sources}")
+   ENDIF (DEFINED ${plugin}_extra_sources)
+   FILE (WRITE ${bld}/${plugin}/CMakeLists.in "")
+   FOREACH (dir ${unix}/plugins ${unix})
+     FILE_APPEND (${bld}/${plugin}/CMakeLists.in ${dir}/${plugin}/build.cmake)
+   ENDFOREACH (dir)
+   FILE_APPEND (${bld}/${plugin}/CMakeLists.in ${config}/PluginExternal.cmake)
+   CONFIGURE_FILE (${bld}/${plugin}/CMakeLists.in ${bld}/${plugin}/CMakeLists.txt @ONLY)
+   ADD_SUBDIRECTORY (${bld}/${plugin} ${bld}/${plugin})
+ ENDMACRO (EXTERNAL_PLUGIN)
+ 
+ MACRO (PLUGIN_DISABLE)
+   SET (plugin_disabled 1)
+ ENDMACRO (PLUGIN_DISABLE)
+ 
+ MACRO (PLUGIN_SOURCES)
+   SET (${plugin}_sources ${ARGV})
+ ENDMACRO (PLUGIN_SOURCES)
+ 
+ MACRO (PLUGIN_DEFINITIONS)
+   LIST_APPEND (${plugin}_definitions ${ARGV})
+ ENDMACRO (PLUGIN_DEFINITIONS)
+ 
+ MACRO (PLUGIN_INCLUDE_DIRECTORIES)
+   LIST_APPEND (${plugin}_include_directories ${ARGV})
+ ENDMACRO (PLUGIN_INCLUDE_DIRECTORIES)
+ 
+ MACRO (PLUGIN_LINK_DIRECTORIES)
+   LIST_APPEND (${plugin_target}_link_directories ${ARGV})
+ ENDMACRO (PLUGIN_LINK_DIRECTORIES)
+ 
+ MACRO (PLUGIN_LINK_LIBRARIES)
+   LIST_APPEND (${plugin_target}_link_libraries ${ARGV})
+ ENDMACRO (PLUGIN_LINK_LIBRARIES)
+ 
+ MACRO (CONFIGURE_PLUGIN_LIST plugins_list)
+   SET (plugins ${${plugins_list}})
+   FOREACH (plugin ${plugins})
+     FILE (MAKE_DIRECTORY ${bld}/${plugin})
+     FILE (WRITE ${bld}/${plugin}/config.cmake "")
+     FOREACH (dir ${unix}/plugins ${unix})
+       FILE_APPEND (${bld}/${plugin}/config.cmake ${dir}/${plugin}/config.cmake)
+     ENDFOREACH (dir)
+     #MESSAGE ("-- plugin ${plugin}")
+     IF (${plugins_list} STREQUAL "plugins_int")
+       SET (plugin_target "vm")
+       SET (${plugin}_source_dir "${src}/plugins/${plugin}")
+     ELSE ()
+       SET (plugin_target "${plugin}")
+       SET (${plugin}_source_dir "${src}/plugins/${plugin}")
+     ENDIF (${plugins_list} STREQUAL "plugins_int")
+     SET (plugin_disabled)
+     INCLUDE (${bld}/${plugin}/config.cmake)
+     IF (without-${plugin})
+       SET (plugin_disabled 1)
+     ENDIF ()
+     IF (DEFINED plugin_disabled)
+       LIST (REMOVE_ITEM ${plugins_list} ${plugin})
+       MESSAGE ("!!!! ${plugin} disabled")
+       SET (${plugin}_disabled 1)
+     ELSE (DEFINED plugin_disabled)
+       IF (${plugins_list} STREQUAL "plugins_int")
+         USE_LIBRARY (${plugin})
+       ENDIF (${plugins_list} STREQUAL "plugins_int")
+       SET (${plugin}_disabled)
+     ENDIF (DEFINED plugin_disabled)
+   ENDFOREACH (plugin)
+ ENDMACRO (CONFIGURE_PLUGIN_LIST)
+ 
+ MACRO (CONFIGURE_PLUGINS)
+   CONFIGURE_PLUGIN_LIST (plugins_int)
+   CONFIGURE_PLUGIN_LIST (plugins_ext)
+   CONFIGURE_PLUGIN_LIST (plugins_vm)
+ ENDMACRO (CONFIGURE_PLUGINS)
+ 
+ MACRO (BUILD_PLUGINS)
+   FOREACH (plugin ${plugins_int})
+     INTERNAL_PLUGIN (${plugin})
+   ENDFOREACH (plugin)
+   FOREACH (plugin ${plugins_ext})
+     EXTERNAL_PLUGIN (${plugin})
+   ENDFOREACH (plugin)
+   FOREACH (plugin ${plugins_vm})
+     EXTERNAL_PLUGIN (${plugin})
+   ENDFOREACH (plugin)
+   # create sqNamedPrims.h containing a list of exports for all configured internal plugins
+   SET (exports_h "${bld}/sqNamedPrims.h")
+   FILE (WRITE ${exports_h} "/* Automatically generated by Plugins.cmake from plugins.int */\n")
+   FILE (APPEND ${exports_h} "extern sqExport vm_exports[];\n")
+   FILE (APPEND ${exports_h} "extern sqExport os_exports[];\n")
+   FOREACH (plugin ${plugins_int})
+     FILE (APPEND ${exports_h} "extern sqExport ")
+     FILE (APPEND ${exports_h} ${plugin})
+     FILE (APPEND ${exports_h} "_exports[];\n")
+   ENDFOREACH (plugin)
+   FILE (APPEND ${exports_h} "\n")
+   FILE (APPEND ${exports_h} "sqExport *pluginExports[] = {\n")
+   FILE (APPEND ${exports_h} "\tvm_exports,\n")
+   FILE (APPEND ${exports_h} "\tos_exports,\n")
+   FOREACH (plugin ${plugins_int})
+     FILE (APPEND ${exports_h} "\t")
+     FILE (APPEND ${exports_h} ${plugin})
+     FILE (APPEND ${exports_h} "_exports,\n")
+   ENDFOREACH (plugin)
+   FILE (APPEND ${exports_h} "\tNULL\n")
+   FILE (APPEND ${exports_h} "};\n")
+ ENDMACRO (BUILD_PLUGINS)
+ 
+ MACRO (PLUGIN_MESSAGE msg)
+   MESSAGE (STATUS "${plugin}: ${msg}")
+ ENDMACRO (PLUGIN_MESSAGE)
+ 
+ MACRO (PLUGIN_FIND_INCLUDE VAR NAME)
+   FIND_PATH (${VAR}_H ${NAME} ${${plugin_target}_include_directories} ${ARGN})
+   IF (${VAR}_H)
+     PLUGIN_MESSAGE ("${${VAR}_H}/${NAME}")
+     SET (HAVE_${VAR}_H 1)
+     PLUGIN_INCLUDE_DIRECTORIES (${${VAR}_H})
+   ELSE ()
+     PLUGIN_MESSAGE ("${NAME} not found")
+   ENDIF ()
+ ENDMACRO ()
+ 
+ MACRO (PLUGIN_REQUIRE_INCLUDE VAR NAME)
+   PLUGIN_FIND_INCLUDE(${VAR} ${NAME} ${ARGN})
+   IF (NOT ${VAR}_H)
+     PLUGIN_DISABLE ()
+   ENDIF ()
+ ENDMACRO ()
+ 
+ MACRO (PLUGIN_FIND_LIBRARY VAR NAME)
+   FIND_LIBRARY (LIB${VAR} ${NAME})
+   IF (LIB${VAR})
+     PLUGIN_MESSAGE ("${LIB${VAR}}")
+     SET (HAVE_LIB${VAR} 1)
+     PLUGIN_LINK_LIBRARIES (${LIB${VAR}})
+   ELSE ()
+     PLUGIN_MESSAGE ("lib${NAME} not found")
+   ENDIF ()
+ ENDMACRO ()
+ 
+ MACRO (PLUGIN_REQUIRE_LIBRARY VAR NAME)
+   PLUGIN_FIND_LIBRARY(${VAR} ${NAME})
+   if (NOT LIB${VAR})
+     PLUGIN_DISABLE ()
+   ENDIF ()
+ ENDMACRO ()
+ 
+ MACRO (PLUGIN_FIND_PACKAGE VAR NAME)
+   IF (PKG_CONFIG_FOUND)
+     PKG_CHECK_MODULES (${VAR} ${NAME})
+     IF (${VAR}_FOUND)
+       PLUGIN_MESSAGE ("${NAME} found")
+       SET (HAVE_${VAR} 1)
+       PLUGIN_INCLUDE_DIRECTORIES (${${VAR}_INCLUDE_DIRS})
+       PLUGIN_LINK_DIRECTORIES (${${VAR}_LIBRARY_DIRS})
+       PLUGIN_LINK_LIBRARIES (${${VAR}_LIBRARIES})
+     ENDIF ()
+   ENDIF ()
+ ENDMACRO ()
+ 
+ MACRO (PLUGIN_REQUIRE_PACKAGE VAR NAME)
+   PLUGIN_FIND_PACKAGE(${VAR} ${NAME})
+   IF (NOT ${VAR}_FOUND)
+     PLUGIN_DISABLE ()
+   ENDIF ()
+ ENDMACRO ()
+ 
+ MACRO (EXPECT_UNDEFINED_SYMBOLS)
+   IF (APPLE)
+     SET (CMAKE_SHARED_MODULE_CREATE_C_FLAGS "${CMAKE_SHARED_MODULE_CREATE_C_FLAGS} -flat_namespace -undefined suppress")
+     SET (CMAKE_SHARED_MODULE_CREATE_CXX_FLAGS "${CMAKE_SHARED_MODULE_CREATE_CXX_FLAGS} -flat_namespace -undefined suppress")
+   ENDIF (APPLE)
+ ENDMACRO (EXPECT_UNDEFINED_SYMBOLS)
+ '!

Item was added:
+ ----- Method: CPlatformConfigForSqueak class>>testDoubleWordAlignmentC (in category 'as yet unclassified') -----
+ testDoubleWordAlignmentC
+ 	"used in config.cmake"
+ 	^' 
+ int f(void *i)
+ {
+   *(double *)i= *(double *)(i + 4);
+   return *(char *)i;
+ }
+ 
+ int main()
+ {
+   char b[12];
+   b[0]=1; b[1]=2; b[2]=3; b[3]=4; b[4]=0; b[5]=0; b[6]=0; b[7]=0; b[8]=0; b[9]=0; b[10]=0; b[11]=0;
+   return f(b);
+ }
+ '
+ 
+ !

Item was added:
+ ----- Method: CPlatformConfigForSqueak class>>testDoubleWordOrderC (in category 'as yet unclassified') -----
+ testDoubleWordOrderC 
+ 	"used by config.cmake"
+ 	^'
+ union { double d; int i[2]; } d;
+ 
+ int main(void)
+ {
+   d.d= 1.0;
+   return d.i[0] == 0;
+ }
+ '!

Item was added:
+ ----- Method: CPlatformConfigForSqueak class>>testLanginfoCodesetC (in category 'as yet unclassified') -----
+ testLanginfoCodesetC
+ 	^'
+ #include <langinfo.h>
+ 
+ int main(int argc, char **argv)
+ {
+   char *cs= nl_langinfo(CODESET);
+   return 0;
+ }
+ '!

Item was added:
+ ----- Method: CPlatformConfigForSqueak class>>utilsCMake (in category 'as yet unclassified') -----
+ utilsCMake
+ 	^'# Some random useful things to avoid repetition
+ # 
+ # Last edited: 2009-08-26 10:41:32 by piumarta on ubuntu.piumarta.com
+ 
+ MACRO (STRING_APPEND var str)
+   IF (DEFINED ${var})
+     SET (${var} "${${var}} ${str}")
+   ELSE (DEFINED ${var})
+     SET (${var} "${str}")
+   ENDIF (DEFINED ${var})
+ ENDMACRO (STRING_APPEND)
+ 
+ MACRO (LIST_APPEND list)
+   LIST (APPEND ${list} "${ARGN}")
+   LIST (REMOVE_DUPLICATES ${list})
+ ENDMACRO (LIST_APPEND)
+ 
+ MACRO (FILE_APPEND to from)
+   IF (EXISTS ${from})
+     FILE (READ ${from} tmp)
+     FILE (APPEND ${to} "${tmp}")
+   ENDIF (EXISTS ${from})
+ ENDMACRO (FILE_APPEND)
+ 
+ MACRO (FILE_COPY to from)
+   IF (EXISTS ${from})
+     FILE (READ ${from} tmp)
+     FILE (WRITE ${to} "${tmp}")
+   ENDIF (EXISTS ${from})
+ ENDMACRO (FILE_COPY)
+ 
+ 
+ ##added by tty. cut-n-paste from ian CMakeLists.txt
+ MACRO (USE_LIBRARY lib)
+   LIST (APPEND squeak_libs "${lib}")
+ ENDMACRO (USE_LIBRARY)
+ 
+ MACRO (USE_FRAMEWORK fwk)
+   USE_LIBRARY ("-framework ${fwk}")
+ ENDMACRO (USE_FRAMEWORK)
+ 
+ MACRO (CONFIG_DEFINE var)
+   LIST (APPEND config_vars "${var}")
+ ENDMACRO (CONFIG_DEFINE var)
+ 
+ ##End tty additions
+ 
+ 
+ '!

Item was added:
+ ----- Method: CPlatformConfigForSqueak class>>vmBuildCmake (in category 'as yet unclassified') -----
+ vmBuildCmake
+ 	self flag: 'tty'. "I probably do not want this as this is what we currently do in Squeak. Ian appears to have farmed it out to its own file"
+ 	^'
+ LINK_DIRECTORIES (${vm_link_directories})
+ 
+ ADD_EXECUTABLE (squeakvm${scriptsuffix}
+   ${bld}/${interp}.c
+   ${unix}/vm/aio.c
+   ${unix}/vm/debug.c
+   ${unix}/vm/osExports.c
+   ${unix}/vm/sqUnixCharConv.c
+   ${unix}/vm/sqUnixExternalPrims.c
+   ${unix}/vm/sqUnixMain.c
+   ${unix}/vm/sqUnixMemory.c
+   ${cross}/vm/sqNamedPrims.c
+   ${cross}/vm/sqVirtualMachine.c
+   ${bld}/version.c
+ )
+ 
+ ADD_CUSTOM_COMMAND (
+   OUTPUT  version.c
+   COMMAND ${config}/verstamp ${bld}/version.c ${CMAKE_C_COMPILER}
+ )
+ 
+ ADD_CUSTOM_COMMAND (
+   DEPENDS ${src}/vm/interp.c
+   OUTPUT  ${bld}/interp.c
+   COMMAND tr ''\\015'' ''\\012'' < ${src}/vm/interp.c > ${bld}/interp.c
+ )
+ 
+ ADD_CUSTOM_COMMAND (
+   DEPENDS ${bld}/interp.c
+   OUTPUT  ${bld}/gnu-interp.c
+   COMMAND ${config}/gnuify ${config}/gnuify.awk ${bld}/interp.c ${bld}/gnu-interp.c
+ )
+ 
+ INCLUDE_DIRECTORIES (
+   ${bld}
+ # ${src}/vm # files are now copied/generated in ${bld}
+   ${unix}/vm
+   ${cross}/vm
+   ${unix}/plugins/B3DAcceleratorPlugin	# for sqUnixOpenGL.h
+   ${X11_INCLUDE_DIR}
+   ${OPENGL_INCLUDE_DIR}
+   ${vm_include_directories}
+ )
+ 
+ SET_TARGET_PROPERTIES (squeakvm${scriptsuffix} PROPERTIES LINK_FLAGS "${CMAKE_EXE_EXPORTS_C_FLAG}")
+ 
+ TARGET_LINK_LIBRARIES (squeakvm${scriptsuffix} m ${squeak_libs} ${vm_link_libraries})
+ 
+ INSTALL (PROGRAMS ${bld}/squeakvm${scriptsuffix} DESTINATION ${plgdir})
+ 
+ IF (vm-sound-OSS_disabled)
+   SET (useoss "false")
+ ELSE ()
+   SET (useoss "true")
+ ENDIF ()
+ 
+ CONFIGURE_FILE (${config}/config.in ${bld}/config @ONLY)
+ 
+ # launcher scripts
+ 
+ ADD_CUSTOM_TARGET (squeak
+   DEPENDS ${config}/squeak.in
+   COMMAND sh ${bld}/config ${config}/squeak.in ${bld}/squeak
+   COMMAND chmod +x ${bld}/squeak
+ )
+ 
+ INSTALL (PROGRAMS ${bld}/squeak DESTINATION bin)
+ 
+ ADD_CUSTOM_TARGET (squeak.sh
+   DEPENDS ${config}/squeak.sh.in
+   COMMAND sh ${bld}/config ${config}/squeak.sh.in ${bld}/squeak.sh
+   COMMAND chmod +x ${bld}/squeak.sh
+ )
+ 
+ INSTALL (PROGRAMS ${bld}/squeak.sh DESTINATION bin)
+ 
+ ADD_EXECUTABLE (ckformat
+   ${src}/ckformat.c
+ )
+ 
+ INSTALL (PROGRAMS ${bld}/ckformat DESTINATION ${plgdir})
+ 
+ ADD_DEPENDENCIES (squeakvm${scriptsuffix} squeak squeak.sh ckformat)
+ 
+ # manual page
+ 
+ ADD_CUSTOM_TARGET (squeak.1
+   DEPENDS ${unix}/doc/squeak.1
+   COMMAND sh ${bld}/config ${unix}/doc/squeak.1 ${bld}/squeak.1
+ )
+ ADD_DEPENDENCIES (squeakvm${scriptsuffix} squeak.1)
+ INSTALL (FILES ${bld}/squeak.1 DESTINATION share/man/man1)
+ '!

Item was added:
+ ----- Method: CPlatformConfigForSqueak class>>vmConfigCmake (in category 'as yet unclassified') -----
+ vmConfigCmake
+ 	self flag:'tty'. "parse me. look at that set(interp...) command and others"
+ 	"${version} was generated in Ian's script from interp.h and svn stuff. I fake it here. Address later"
+ 	^'SET (OS_TYPE \"unix\")
+ 
+ CONFIG_DEFINE (OS_TYPE)
+ SET (version  \"1.2.3.4\")
+ MESSAGE("FIX ME: version is a bogus number: ${version}")
+ 
+ STRING (REGEX REPLACE "(.*)\\.(.*)\\.(.*)-(.*)" "\\1" major   ${version})
+ STRING (REGEX REPLACE "(.*)\\.(.*)\\.(.*)-(.*)" "\\2" minor   ${version})
+ STRING (REGEX REPLACE "(.*)\\.(.*)\\.(.*)-(.*)" "\\3" patch   ${version})
+ STRING (REGEX REPLACE "(.*)\\.(.*)\\.(.*)-(.*)" "\\4" release ${version})
+ 
+ IF (APPLE)
+   SET (DARWIN 1)
+   STRING_APPEND (CMAKE_C_FLAGS -DMACOSX)		# ffi.h
+   USE_FRAMEWORK (CoreFoundation)
+   USE_FRAMEWORK (CoreServices)
+ ENDIF (APPLE)
+ 
+ CONFIG_DEFINE (DARWIN)
+ 
+ IF (CMAKE_COMPILER_IS_GNUCC)
+   SET (interp gnu-interp)
+ ELSE ()
+   SET (interp interp)
+   MESSAGE ("!!!! Cannot optimise interpreter performance for GCC")
+ ENDIF (CMAKE_COMPILER_IS_GNUCC)
+ 
+ INCLUDE (TestBigEndian)
+ INCLUDE (CheckIncludeFile)
+ INCLUDE (CheckLibraryExists)
+ INCLUDE (CheckTypeSize)
+ INCLUDE (CheckFunctionExists)
+ INCLUDE (CheckVariableExists)
+ INCLUDE (CheckStructHasMember)
+ INCLUDE (FindPkgConfig)
+ 
+ FIND_PACKAGE (X11)
+ IF (X11_FOUND)
+   LIST (REMOVE_DUPLICATES X11_INCLUDE_DIR)
+ ENDIF ()
+ 
+ IF (NOT without-gl)
+   FIND_PACKAGE (OpenGL)
+   LIST (REMOVE_DUPLICATES OPENGL_INCLUDE_DIR)
+ ENDIF ()
+ 
+ IF (APPLE AND NOT without-gl)
+   SET (AGL_FOUND	${OPENGL_FOUND})
+   SET (AGL_INCLUDE_DIR	${OPENGL_INCLUDE_DIR})
+   SET (AGL_LIBRARIES	${OPENGL_LIBRARIES})
+   IF (X11_FOUND)
+     FIND_PATH    (GLX_INCLUDE_DIR GL/gl.h /usr/X11/include /usr/X11R6/include)
+     FIND_LIBRARY (GLX_LIBRARIES   GL      /usr/X11/lib /usr/X11R6/lib)
+     IF (GLX_INCLUDE_DIR AND GLX_LIBRARIES)
+       SET (OPENGL_INCLUDE_DIR	${GLX_INCLUDE_DIR})
+       SET (OPENGL_LIBRARIES	${GLX_LIBRARIES})
+     ELSE ()
+       SET (OPENGL_FOUND)
+     ENDIF ()
+   ELSE (X11_FOUND)
+     SET (OPENGL_FOUND)
+   ENDIF (X11_FOUND)
+ ENDIF (APPLE AND NOT without-gl)
+ 
+ IF (NOT OPENGL_FOUND)
+   SET (OPENGL_INCLUDE_DIR "")
+ ENDIF ()
+ 
+ # FOREACH (var AGL_FOUND AGL_INCLUDE_DIR AGL_LIBRARIES OPENGL_FOUND OPENGL_INCLUDE_DIR OPENGL_LIBRARIES)
+ #   MESSAGE ("${var} = ${${var}}")
+ # ENDFOREACH ()
+ 
+ TEST_BIG_ENDIAN (WORDS_BIGENDIAN)
+ IF (WORDS_BIGENDIAN)
+   SET (MSB_FIRST 1)
+ ELSE ()
+   SET (LSB_FIRST 1)
+ ENDIF ()
+ 
+ CONFIG_DEFINE (WORDS_BIGENDIAN)
+ CONFIG_DEFINE (LSB_FIRST)
+ CONFIG_DEFINE (MSB_FIRST)
+ 
+ CHECK_FUNCTION_EXISTS (atexit		HAVE_ATEXIT)
+ CHECK_FUNCTION_EXISTS (on_exit		HAVE_ON_EXIT)
+ 
+ IF (HAVE_ATEXIT)
+   SET (AT_EXIT atexit)
+ ELSEIF (HAVE_ON_EXIT)
+   SET (AT_EXIT on_exit)
+ ENDIF ()
+ 
+ CONFIG_DEFINE (AT_EXIT)
+ 
+ # sqMemoryAccess.h
+ 
+ # tty. set in outer CMakeLists.txt as well. oy vey./src/vm/interp.h
+ CHECK_INCLUDE_FILE (interp.h HAVE_INTERP_H -I${srcVMDir})
+ CONFIG_DEFINE (HAVE_INTERP_H)
+ 
+ CHECK_TYPE_SIZE (int SIZEOF_INT)
+ CHECK_TYPE_SIZE (long SIZEOF_LONG)
+ CHECK_TYPE_SIZE ("long long" SIZEOF_LONG_LONG)
+ CHECK_TYPE_SIZE ("void *" SIZEOF_VOID_P)
+ 
+ CONFIG_DEFINE (SIZEOF_INT)
+ CONFIG_DEFINE (SIZEOF_LONG)
+ CONFIG_DEFINE (SIZEOF_LONG_LONG)
+ CONFIG_DEFINE (SIZEOF_VOID_P)
+ MESSAGE("CMAKE_BINARY_DIR ${CMAKE_BINARY_DIR} ")
+ MESSAGE("CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR} ")
+ TRY_RUN (DOUBLE_WORD_ALIGNMENT tmp ${CMAKE_BINARY_DIR}  ${CMAKE_BINARY_DIR}/testDoubleWordAlignment.c)
+ TRY_RUN (DOUBLE_WORD_ORDER tmp ${CMAKE_BINARY_DIR}  ${CMAKE_BINARY_DIR}/testDoubleWordOrder.c)
+ 
+ CONFIG_DEFINE (DOUBLE_WORD_ALIGNMENT)
+ CONFIG_DEFINE (DOUBLE_WORD_ORDER)
+ 
+ # sqPlatformSpecific.h
+ 
+ CHECK_INCLUDE_FILE (alloca.h HAVE_ALLOCA_H)
+ 
+ CONFIG_DEFINE (HAVE_ALLOCA_H)
+ 
+ IF (HAVE_ALLOCA_H)
+   SET (HAVE_ALLOCA 1)
+ ELSE ()
+   CHECK_FUNCTION_EXISTS (alloca HAVE_ALLOCA)
+ ENDIF ()
+ 
+ CONFIG_DEFINE (HAVE_ALLOCA)
+ 
+ # aio.c
+ 
+ CHECK_INCLUDE_FILE (sys/time.h HAVE_SYS_TIME_H)
+ CHECK_INCLUDE_FILE (sys/filio.h HAVE_SYS_FILIO_H)
+ 
+ CONFIG_DEFINE (HAVE_SYS_TIME_H)
+ CONFIG_DEFINE (HAVE_SYS_FILIO_H)
+ 
+ CHECK_FUNCTION_EXISTS (nanosleep HAVE_NANOSLEEP)
+ 
+ CONFIG_DEFINE (HAVE_NANOSLEEP)
+ 
+ # sqUnixCharConv.c
+ 
+ CHECK_INCLUDE_FILE (iconv.h HAVE_ICONV_H)
+ CHECK_INCLUDE_FILE (langinfo.h HAVE_LANGINFO_H)
+ 
+ IF (HAVE_LANGINFO_H)
+   TRY_COMPILE (HAVE_LANGINFO_CODESET ${CMAKE_BINARY_DIR}  ${CMAKE_BINARY_DIR}/testLanginfoCodeset.c)
+ ENDIF (HAVE_LANGINFO_H)
+ 
+ CHECK_LIBRARY_EXISTS (iconv libiconv_open "" HAVE_LIBICONV)
+ IF (HAVE_LIBICONV)
+   USE_LIBRARY (iconv)
+ ENDIF (HAVE_LIBICONV)
+ 
+ CONFIG_DEFINE (HAVE_ICONV_H)
+ CONFIG_DEFINE (HAVE_LANGINFO_CODESET)
+ 
+ # sqUnixExternalPrims.c
+ 
+ CHECK_INCLUDE_FILE (dlfcn.h HAVE_DLFCN_H)
+ 
+ CHECK_LIBRARY_EXISTS (dl dlopen "" HAVE_LIBDL)
+ IF (HAVE_LIBDL)
+   USE_LIBRARY (dl)
+ ENDIF (HAVE_LIBDL)
+ IF (HAVE_LIBDL)
+   SET (HAVE_DLOPEN 1)
+ ELSE ()
+   CHECK_FUNCTION_EXISTS (dlopen HAVE_DLOPEN)
+ ENDIF (HAVE_LIBDL)
+ 
+ CHECK_FUNCTION_EXISTS (_dyld_present HAVE_DYLD)
+ CHECK_FUNCTION_EXISTS (snprintf HAVE_SNPRINTF)
+ CHECK_FUNCTION_EXISTS (__snprintf HAVE___SNPRINTF)
+ 
+ CONFIG_DEFINE (HAVE_DLFCN_H)
+ CONFIG_DEFINE (HAVE_DLOPEN)
+ CONFIG_DEFINE (HAVE_DYLD)
+ CONFIG_DEFINE (HAVE_SNPRINTF)
+ CONFIG_DEFINE (HAVE___SNPRINTF)
+ 
+ SET (VM_X11DIR \"${X11_LIBRARY_DIR}\")
+ 
+ CONFIG_DEFINE (VM_X11DIR)
+ 
+ SET (VM_MODULE_PREFIX \"${CMAKE_SHARED_MODULE_PREFIX}\")
+ 
+ CONFIG_DEFINE (VM_MODULE_PREFIX)
+ 
+ SET (CMAKE_SHARED_MODULE_PREFIX "so.")
+ SET (CMAKE_SHARED_MODULE_SUFFIX "")
+ 
+ SET (MODULE_PREFIX  \"${CMAKE_SHARED_MODULE_PREFIX}\")
+ SET (MODULE_SUFFIX  \"${CMAKE_SHARED_MODULE_SUFFIX}\")
+ SET (LIBRARY_PREFIX \"${CMAKE_SHARED_LIBRARY_PREFIX}\")
+ SET (LIBRARY_SUFFIX \"${CMAKE_SHARED_LIBRARY_SUFFIX}\")
+ 
+ CONFIG_DEFINE (MODULE_PREFIX)
+ CONFIG_DEFINE (MODULE_SUFFIX)
+ CONFIG_DEFINE (LIBRARY_PREFIX)
+ CONFIG_DEFINE (LIBRARY_SUFFIX)
+ 
+ # sqUnixMain.c
+ 
+ SET (VM_BUILD_STRING "\"Unix built on \"__DATE__ \" \"__TIME__\" Compiler: \"__VERSION__")
+ 
+ CONFIG_DEFINE (VM_BUILD_STRING)
+ 
+ SET (VM_LIBDIR "\"${prefix}/${plgdir}\"")
+ 
+ CONFIG_DEFINE (VM_LIBDIR)
+ 
+ SET (VM_HOST        \"${VM_HOST}\")
+ SET (VM_HOST_CPU    \"${VM_HOST_CPU}\")
+ SET (VM_HOST_VENDOR \"${VM_HOST_VENDOR}\")
+ SET (VM_HOST_OS     \"${VM_HOST_OS}\")
+ 
+ CONFIG_DEFINE (VM_HOST)
+ CONFIG_DEFINE (VM_HOST_CPU)
+ CONFIG_DEFINE (VM_HOST_VENDOR)
+ CONFIG_DEFINE (VM_HOST_OS)
+ 
+ SET (VM_VERSION_INFO \"${VM_VERSION}${versionsuffix}\")
+ SET (VM_VERSION \"${VM_VERSION}\")
+ SET (PLATFORM_SOURCE_VERSION \"${PLATFORM_SOURCE_VERSION}\")
+ 
+ CONFIG_DEFINE (VM_VERSION)
+ CONFIG_DEFINE (VM_VERSION_INFO)
+ CONFIG_DEFINE (PLATFORM_SOURCE_VERSION)
+ CONFIG_DEFINE (SQ_VERSION)
+ 
+ CHECK_FUNCTION_EXISTS (tzset	HAVE_TZSET)
+ CHECK_VARIABLE_EXISTS (timezone	HAVE_TIMEZONE)
+ CHECK_STRUCT_HAS_MEMBER ("struct tm" tm_gmtoff time.h HAVE_TM_GMTOFF)
+ 
+ CONFIG_DEFINE (HAVE_TZSET)
+ CONFIG_DEFINE (HAVE_TIMEZONE)
+ CONFIG_DEFINE (HAVE_TM_GMTOFF)
+ 
+ CONFIG_DEFINE (IMAGE_DUMP)
+ 
+ # sqUnixMemory.c
+ 
+ CHECK_FUNCTION_EXISTS (mmap HAVE_MMAP)
+ 
+ CONFIG_DEFINE (HAVE_MMAP)
+ 
+ # OLPC
+ 
+ IF (NOT without-SUGAR)
+   SET (SUGAR 1)
+ ENDIF ()
+ 
+ CONFIG_DEFINE (SUGAR)
+ 
+ IF (DEFINED SQ_VI_BYTES_PER_WORD)
+   CONFIG_DEFINE (SQ_VI_BYTES_PER_WORD)
+ ENDIF (DEFINED SQ_VI_BYTES_PER_WORD)
+ '!

Item was added:
+ ----- Method: CPlatformConfigForSqueak class>>vmConfigIn (in category 'as yet unclassified') -----
+ vmConfigIn
+ 	"used in build.cmake"
+ 	^'#!!/bin/sh
+ 
+ # echo "Configuring `basename $1` -> `basename $2`" >&2
+ 
+ sed "
+ s%\[version\]%@version@%g
+ s%\[major\]%@major@%g
+ s%\[minor\]%@minor@%g
+ s%\[patch\]%@patch@%g
+ s%\[bindir\]%@prefix@/@bindir@%g
+ s%\[imgdir\]%@prefix@/@imgdir@%g
+ s%\[plgdir\]%@prefix@/@plgdir@%g
+ s%\[mandir\]%@prefix@/@mandir@%g
+ s%\[docdir\]%@prefix@/@docdir@%g
+ s%\[useoss\]%@useoss@%g
+ " < $1 > $2'!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>generate (in category 'source generation') -----
- ----- Method: CPlatformConfigForSqueak>>generate (in category 'squeak compatability') -----
  generate
+ 	self 
+ 		generatePluginsList;
+ 		generateLicense;
+ 		generateUtilsCmake;
+ 		generatePluginsCmake;
+ 		generateVmBuildCmake;
+ 		generateVmConfigCmake;
+ 		generateVmConfigIn;
+ 		generateTestDoubleWordAlignmentC;
+ 		generateTestDoubleWordOrderC;
+ 		generateTestLanginfoCodesetC.
- 	self generatePluginsList. 
- 	self generateLicense. 
  	^ CMakeVMGeneratorForSqueak generate: self !

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>generateConfigH (in category 'source generation') -----
- ----- Method: CPlatformConfigForSqueak>>generateConfigH (in category 'headers generation') -----
  generateConfigH
  	"	
  	used to be: 	
  		self write: self configH toFile: 'config.h'
  "
  	self subclassResponsibility
  
  !

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>generateConfigH: (in category 'source generation') -----
- ----- Method: CPlatformConfigForSqueak>>generateConfigH: (in category 'headers generation') -----
  generateConfigH: aBuildType
  	"self write: self configH toFile: 'config.h'"
  
  	|d |
  	d:= SqueakCMakeVMMakerAbstractBuilder default buildTypeAndDirectoryInfo copy.
  	d 
  		at: #build put: [self configHBuild];
  		at: #buildAssert  put: [self configHBuildAssert];
  		at: #buildAssertITimerHeartbeat  put: [self configHBuildAssertITimerHeartbeat];
              at:#buildDebug  put: [self configHBuildDebug];   "located in CMakeVMMaker CPlatformConfig"
  		at: #buildDebugITimerHeartbeat  put: [self configHBuildDebugITimerHeartbeat ];
  		at: #buildITimerHeartbeat  put: [self configHBuildITimerHeartbeat];
  		at: #buildMultiThreaded  put: [self configHBuildMultiThreaded ];
  		at: #buildMultiThreadedAssert  put: [self configHBuildMultiThreadedAssert];
  		at: #buildMultiThreadedDebug   put: [self configHBuildMultiThreadedDebug ];
  		at: #buildNone put:[self configHNoBuildType].
  
  
  	 ^(d at: ( aBuildType)) value
  
  
  
  !

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>generateLicense (in category 'source generation') -----
- ----- Method: CPlatformConfigForSqueak>>generateLicense (in category 'accessing') -----
  generateLicense 
  	self 
  		write:  (self class licenseTemplate 
  			format: { self version })
  		toFile: 'LICENSE.txt'
  	!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>generatePluginsCmake (in category 'source generation') -----
+ generatePluginsCmake
+ 	self 
+ 		write:  (self class pluginsCMake)
+ 		toFile: 'Plugins.cmake'
+ 	!

Item was changed:
+ ----- Method: CPlatformConfigForSqueak>>generatePluginsList (in category 'source generation') -----
- ----- Method: CPlatformConfigForSqueak>>generatePluginsList (in category 'accessing') -----
  generatePluginsList 
  	self 
  		write:  (self class pluginsTemplate 
  			format: {
  				self version. 
  				String streamContents: [ :stream | self internalPlugins asStringOn: stream delimiter: String cr ].
  				String streamContents: [ :stream | self externalPlugins asStringOn: stream delimiter: String cr ].
  				self executableName })
  		toFile: 'PLUGINS.txt'
  	!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>generateTestDoubleWordAlignmentC (in category 'source generation') -----
+ generateTestDoubleWordAlignmentC
+ 	self 
+ 		write:  (self class testDoubleWordAlignmentC)
+ 		toFile: 'testDoubleWordAlignment.c'
+ 	!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>generateTestDoubleWordOrderC (in category 'source generation') -----
+ generateTestDoubleWordOrderC
+ 	self 
+ 		write:  (self class testDoubleWordOrderC)
+ 		toFile: 'testDoubleWordOrder.c'
+ 	!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>generateTestLanginfoCodesetC (in category 'source generation') -----
+ generateTestLanginfoCodesetC
+ 	self 
+ 		write:  (self class testLanginfoCodesetC)
+ 		toFile: 'testLanginfoCodeset.c'
+ 	!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>generateUtilsCmake (in category 'source generation') -----
+ generateUtilsCmake
+ 	self 
+ 		write:  (self class utilsCMake)
+ 		toFile: 'Utils.cmake'
+ 	!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>generateVmBuildCmake (in category 'source generation') -----
+ generateVmBuildCmake
+ 	self 
+ 		write:  (self class vmBuildCmake)
+ 		toFile: 'build.cmake'
+ 	!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>generateVmConfigCmake (in category 'source generation') -----
+ generateVmConfigCmake
+ 	self 
+ 		write:  (self class vmConfigCmake)
+ 		toFile: 'config.cmake'
+ 	!

Item was added:
+ ----- Method: CPlatformConfigForSqueak>>generateVmConfigIn (in category 'source generation') -----
+ generateVmConfigIn
+ 	self 
+ 		write:  (self class vmConfigIn)
+ 		toFile: 'config.in'
+ 	!

Item was changed:
  ----- Method: Linux32x86Config>>extraVMSettingsBuild: (in category 'cmake buildType redirects') -----
  extraVMSettingsBuild: aMaker
  	| versionC |
+ 	"self generateConfigH.   supplanted by new auto generate of config"
- 	self generateConfigH.
  	
  	"add a generated version.c"
  	
  	versionC := 'version.c'.
  	
  	aMaker cmd: 'add_custom_command' params: 'OUTPUT ',
  		versionC , '
  		COMMAND ${platformsDir}/unix/config/verstamp ',versionC,' gcc
  		COMMENT "Generating version.c"
  	'.
  	
  	!

Item was changed:
  ----- Method: Linux64x86w32BitConfig>>extraVMSettingsBuild: (in category 'cmake buildType redirects') -----
  extraVMSettingsBuild: aMaker
  	"SystemNavigation default browseMethodsWhoseNamesContain: 'extraVMSettingsBuild:'"
  
  	| versionC |
  	aMaker message: 'extraVMSettingsBuild: aMaker'.
+ 	"self generateConfigH.   supplanted by new auto generate of config"
- 	self generateConfigH.
  	
  	"add a generated version.c"
  	
  	versionC := 'version.c'.
  	
  	aMaker cmd: 'add_custom_command' params: 'OUTPUT ',
  		versionC , '
  		COMMAND ${platformsDir}/unix/config/verstamp ',versionC,' gcc
  		COMMENT "Generating version.c"
  	'.
  	
  	!

Item was changed:
  ----- Method: Linux64x86w32BitConfig>>postBuildActionsBuild: (in category 'cmake buildType redirects') -----
  postBuildActionsBuild: aMaker
  	"SystemNavigation default browseMethodsWhoseNamesContain: 'postBuildActionsBuild:'"
+ 	aMaker message: 'postBuildActionsBuild: aMaker'.
+ 	aMaker  include: 'config.cmake'.!
- 	aMaker message: 'postBuildActionsBuild: aMaker'.!

Item was changed:
  ----- Method: Linux64x86w32BitConfig>>setGlobalOptionsAfterDetermineSystemBuild: (in category 'cmake buildType redirects') -----
  setGlobalOptionsAfterDetermineSystemBuild: aMaker
  	"
  	SystemNavigation default browseMethodsWhoseNamesContain: 'setGlobalOptionsAfterDetermineSystemBuild:'"
  	aMaker message: 'setGlobalOptionsAfterDetermineSystemBuild: aMaker'.	
+ 	aMaker  include: 'Utils.cmake'.
+ 	aMaker  include: 'Plugins.cmake'
+ 
  "	aMaker set: 'CMAKE_FIND_ROOT_PATH' to: '/usr/lib  ' "	!

Item was changed:
  ----- Method: SqueakUnixConfig>>extraSources (in category 'source files') -----
  extraSources	
+ 	self flag:'tty'. "okey-dokey. the testXYZ are from Ian's config.cmake. I don't know where version.c comes from"
+ 	^ 'testDoubleWordAlignment.c testDoubleWordOrder.c  testLanginfoCodeset.c'!
- 	self flag:'tty'. "?"
- 	^ 'version.c'!



More information about the Vm-dev mailing list