From: <ai...@us...> - 2008-07-18 17:22:54
|
Revision: 8528 http://plplot.svn.sourceforge.net/plplot/?rev=8528&view=rev Author: airwin Date: 2008-07-18 17:23:01 +0000 (Fri, 18 Jul 2008) Log Message: ----------- Serialize two ocamlbuilds (which apparently interfere with each other) and put in correct dependencies on libplplot so that parallel build works. Modified Paths: -------------- trunk/bindings/ocaml/CMakeLists.txt Modified: trunk/bindings/ocaml/CMakeLists.txt =================================================================== --- trunk/bindings/ocaml/CMakeLists.txt 2008-07-18 01:45:06 UTC (rev 8527) +++ trunk/bindings/ocaml/CMakeLists.txt 2008-07-18 17:23:01 UTC (rev 8528) @@ -73,17 +73,22 @@ # Build bytecode version add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${OCAML_BUILD_DIR}/plplot.cma - COMMAND ${OCAMLBUILD} -tag debug -classic-display -build-dir ${OCAML_BUILD_DIR} plplot.cma - DEPENDS ${DEPENDS_LIST} + COMMAND ${OCAMLBUILD} -tag debug -classic-display + -build-dir ${OCAML_BUILD_DIR} plplot.cma + DEPENDS ${DEPENDS_LIST} plplot${LIB_TAG} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) - # Build native version + # Build native version. Use DEPENDS to serialize against plplot.cma + # since the two ocamlbuilds interfere with each other when in parallel + # build mode. add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${OCAML_BUILD_DIR}/plplot.cmxa ${CMAKE_CURRENT_BINARY_DIR}/${OCAML_BUILD_DIR}/plplot.a - COMMAND ocamlbuild -tag debug -build-dir ${OCAML_BUILD_DIR} plplot.cmxa - DEPENDS ${DEPENDS_LIST} + COMMAND ${OCAMLBUILD} -tag debug -classic-display + -build-dir ${OCAML_BUILD_DIR} plplot.cmxa + DEPENDS ${DEPENDS_LIST} plplot${LIB_TAG} + ${CMAKE_CURRENT_BINARY_DIR}/${OCAML_BUILD_DIR}/plplot.cma WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2008-07-19 20:06:27
|
Revision: 8541 http://plplot.svn.sourceforge.net/plplot/?rev=8541&view=rev Author: airwin Date: 2008-07-19 20:03:20 +0000 (Sat, 19 Jul 2008) Log Message: ----------- Configure and install pkg-config file that will help with external applications that want to use the ocaml bindings and which will eventually be used to help build the install-tree ocaml examples. Modified Paths: -------------- trunk/bindings/ocaml/CMakeLists.txt Modified: trunk/bindings/ocaml/CMakeLists.txt =================================================================== --- trunk/bindings/ocaml/CMakeLists.txt 2008-07-19 18:48:22 UTC (rev 8540) +++ trunk/bindings/ocaml/CMakeLists.txt 2008-07-19 20:03:20 UTC (rev 8541) @@ -49,8 +49,50 @@ endforeach(OCAML_FILE ${OCAML_INSTALL_FILES}) # Configure the META file +# Configure pkg-config *.pc file corresponding to plplot.cma +if(PKG_CONFIG_EXECUTABLE) + if(LIB_TAG) + set(PC_PRECISION "double") + else(LIB_TAG) + set(PC_PRECISION "single") + endif(LIB_TAG) + # Each list element must consist of a colon-separated string with the + # following fields which are parsed out in the foreach loop below and + # used to configure the corresponding pkg-config *.pc file. + # BINDING - ENABLE_${BINDING} keeps track of whether a + # binding has been enabled (ON) or not (OFF). + # Also, ${BINDING} used to determine PC_FILE_SUFFIX + # which helps to determine name of configured + # *.pc file. + # PC_SHORT_NAME - Used in *.pc NAME: field + # PC_LONG_NAME - Used in *.pc Description: field + # PC_LIBRARY_NAME - Used in *.pc Libs: field + # Also used to determine PC_LINK_FLAGS and + # PC_COMPILE_FLAGS used in *.pc Libs: and Cflags: + # fields. + set(PC_DATA "ocaml:::plplot${LIB_TAG}") + + string(REGEX REPLACE "^(.*):.*:.*:.*$" "\\1" BINDING ${PC_DATA}) + set(PC_FILE_SUFFIX "-${BINDING}") + set(PC_REQUIRES "plplot${LIB_TAG}") + string(REGEX REPLACE "^.*:(.*):.*:.*$" "\\1" PC_SHORT_NAME ${PC_DATA}) + string(REGEX REPLACE "^.*:.*:(.*):.*$" "\\1" PC_LONG_NAME ${PC_DATA}) + string(REGEX REPLACE "^.*:.*:.*:(.*)$" "\\1" PC_LIBRARY_NAME ${PC_DATA}) + set(PC_LINK_FLAGS "${lib${PC_LIBRARY_NAME}_LINK_FLAGS}") + set(PC_COMPILE_FLAGS "${lib${PC_LIBRARY_NAME}_COMPILE_FLAGS}") + set(PC_LINK_FLAGS "-l${PC_LIBRARY_NAME} ${PC_LINK_FLAGS}") + set(PC_CONFIGURED_FILE + ${CMAKE_BINARY_DIR}/pkgcfg/plplot${LIB_TAG}${PC_FILE_SUFFIX}.pc + ) + configure_file( + ${CMAKE_SOURCE_DIR}/pkgcfg/plplot-template.pc.cmake + ${PC_CONFIGURED_FILE} + @ONLY + ) + install(FILES ${PC_CONFIGURED_FILE} DESTINATION ${PKG_CONFIG_DIR}) configure_file(META.cmake ${CMAKE_CURRENT_BINARY_DIR}/META) - +endif(PKG_CONFIG_EXECUTABLE) + # Configure the file controlling the ocamlbuild process configure_file(myocamlbuild.ml.cmake ${CMAKE_CURRENT_BINARY_DIR}/myocamlbuild.ml) set(DEPENDS_LIST ${GEN_SOURCE_LIST}) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2009-09-14 18:06:55
|
Revision: 10408 http://plplot.svn.sourceforge.net/plplot/?rev=10408&view=rev Author: airwin Date: 2009-09-14 18:06:42 +0000 (Mon, 14 Sep 2009) Log Message: ----------- Implement experimental detailed build of ocaml bindings under control of CMake (rather than ocamlbuild). Must specify -DOCAML_EXPERIMENTAL_BUILD=ON to use this variant which is not complete yet, and is only for experimental use. OCAML_EXPERIMENTAL_BUILD defaults to OFF in which case the normal (and working) bindings for ocaml are built using ocamlbuild. Modified Paths: -------------- trunk/bindings/ocaml/CMakeLists.txt Modified: trunk/bindings/ocaml/CMakeLists.txt =================================================================== --- trunk/bindings/ocaml/CMakeLists.txt 2009-09-14 17:54:39 UTC (rev 10407) +++ trunk/bindings/ocaml/CMakeLists.txt 2009-09-14 18:06:42 UTC (rev 10408) @@ -22,6 +22,70 @@ if(ENABLE_ocaml) + option(OCAML_EXPERIMENTAL_BUILD "Try experimental OCaml build?" OFF) + if(OCAML_EXPERIMENTAL_BUILD) + #experimental CMake logic to build ocaml bindings for PLplot. + set(camlidl_GENERATED_SOURCE + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.h + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.ml + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.mli + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.c + ) + # file must occur in the directory where + # the output files are generated. + add_custom_command( + OUTPUT + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.idl +# ${CMAKE_CURRENT_BINARY_DIR}/plplot_impl.c + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/plplot_core.idl ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.idl +# COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/plplot_impl.c ${CMAKE_CURRENT_BINARY_DIR}/plplot_impl.c + DEPENDS + ${CMAKE_CURRENT_SOURCE_DIR}/plplot_core.idl +# ${CMAKE_CURRENT_SOURCE_DIR}/plplot_impl.c + ) + + add_custom_command( + OUTPUT ${camlidl_GENERATED_SOURCE} + COMMAND camlidl -header -I ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.idl + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.idl + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) + + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.o + COMMAND ocamlc -verbose -c ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.c + DEPENDS + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.c + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) + + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/plplot_impl.o + COMMAND ocamlc -verbose -ccopt -I${CMAKE_SOURCE_DIR}/include -ccopt -I${CMAKE_BINARY_DIR}/include -ccopt -I${CMAKE_SOURCE_DIR}/lib/qsastime -c ${CMAKE_CURRENT_SOURCE_DIR}/plplot_impl.c + DEPENDS + ${CMAKE_CURRENT_SOURCE_DIR}/plplot_impl.c + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) + + add_custom_command( + OUTPUT + ${CMAKE_CURRENT_BINARY_DIR}/dllplplot_stubs.so + ${CMAKE_CURRENT_BINARY_DIR}/libplplot_stubs.a + COMMAND ocamlmklib -v -o plplot_stubs -dllpath ${CMAKE_BINARY_DIR}/src -L${CAMLIDL_LIB_DIR} -lcamlidl -L${CMAKE_BINARY_DIR}/src -lplplot${LIB_TAG} ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.o ${CMAKE_CURRENT_BINARY_DIR}/plplot_impl.o + DEPENDS + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.o + ${CMAKE_CURRENT_BINARY_DIR}/plplot_impl.o + plplot${LIB_TAG} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) + + add_custom_target(experimental DEPENDS + ${CMAKE_CURRENT_BINARY_DIR}/dllplplot_stubs.so + + ) + #end of experiment + else(OCAML_EXPERIMENTAL_BUILD) + set(SOURCE_LIST libplplot_stubs.clib plplot_h @@ -185,5 +249,6 @@ ADDITIONAL_MAKE_CLEAN_FILES ${OCAML_BUILD_DIR} ) + endif(OCAML_EXPERIMENTAL_BUILD) endif(ENABLE_ocaml) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2009-09-15 01:54:10
|
Revision: 10409 http://plplot.svn.sourceforge.net/plplot/?rev=10409&view=rev Author: airwin Date: 2009-09-15 01:54:02 +0000 (Tue, 15 Sep 2009) Log Message: ----------- Link to libcamlrun_shared.so for experimental build of dllplplot_stubs.so. This eliminates many undefined symbols revealed by "ldd -r dllplplot_stubs.so". Modified Paths: -------------- trunk/bindings/ocaml/CMakeLists.txt Modified: trunk/bindings/ocaml/CMakeLists.txt =================================================================== --- trunk/bindings/ocaml/CMakeLists.txt 2009-09-14 18:06:42 UTC (rev 10408) +++ trunk/bindings/ocaml/CMakeLists.txt 2009-09-15 01:54:02 UTC (rev 10409) @@ -71,7 +71,7 @@ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/dllplplot_stubs.so ${CMAKE_CURRENT_BINARY_DIR}/libplplot_stubs.a - COMMAND ocamlmklib -v -o plplot_stubs -dllpath ${CMAKE_BINARY_DIR}/src -L${CAMLIDL_LIB_DIR} -lcamlidl -L${CMAKE_BINARY_DIR}/src -lplplot${LIB_TAG} ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.o ${CMAKE_CURRENT_BINARY_DIR}/plplot_impl.o + COMMAND ocamlmklib -v -o plplot_stubs -L${CAMLIDL_LIB_DIR} -dllpath ${CAMLIDL_LIB_DIR} -lcamlidl -lcamlrun_shared -L${CMAKE_BINARY_DIR}/src -dllpath ${CMAKE_BINARY_DIR}/src -lplplot${LIB_TAG} ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.o ${CMAKE_CURRENT_BINARY_DIR}/plplot_impl.o DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.o ${CMAKE_CURRENT_BINARY_DIR}/plplot_impl.o @@ -81,7 +81,7 @@ add_custom_target(experimental DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/dllplplot_stubs.so - + ${CMAKE_CURRENT_BINARY_DIR}/libplplot_stubs.a ) #end of experiment else(OCAML_EXPERIMENTAL_BUILD) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2009-09-16 04:06:56
|
Revision: 10414 http://plplot.svn.sourceforge.net/plplot/?rev=10414&view=rev Author: airwin Date: 2009-09-16 04:06:46 +0000 (Wed, 16 Sep 2009) Log Message: ----------- Implemented a new building method for OCaml bindings following encouragement and advice from Hez. However, if you do use -DOCAML_NEW_BUILD=ON to try this new method, you will find that ocaml examples do not build with a Unbound module Plplot error. In other words, this new method needs work from Hez (probably on what is linked) to get it to work completely. For now OCAML_NEW_BUILD is OFF by default. Modified Paths: -------------- trunk/bindings/ocaml/CMakeLists.txt Modified: trunk/bindings/ocaml/CMakeLists.txt =================================================================== --- trunk/bindings/ocaml/CMakeLists.txt 2009-09-15 18:22:02 UTC (rev 10413) +++ trunk/bindings/ocaml/CMakeLists.txt 2009-09-16 04:06:46 UTC (rev 10414) @@ -22,70 +22,201 @@ if(ENABLE_ocaml) - option(OCAML_EXPERIMENTAL_BUILD "Try experimental OCaml build?" OFF) - if(OCAML_EXPERIMENTAL_BUILD) - #experimental CMake logic to build ocaml bindings for PLplot. - set(camlidl_GENERATED_SOURCE - ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.h - ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.ml - ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.mli - ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.c - ) - # file must occur in the directory where - # the output files are generated. - add_custom_command( - OUTPUT - ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.idl -# ${CMAKE_CURRENT_BINARY_DIR}/plplot_impl.c - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/plplot_core.idl ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.idl -# COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/plplot_impl.c ${CMAKE_CURRENT_BINARY_DIR}/plplot_impl.c - DEPENDS - ${CMAKE_CURRENT_SOURCE_DIR}/plplot_core.idl -# ${CMAKE_CURRENT_SOURCE_DIR}/plplot_impl.c - ) + option(OCAML_NEW_BUILD "Try new detailed OCaml build method?" OFF) + if(OCAML_NEW_BUILD) - add_custom_command( - OUTPUT ${camlidl_GENERATED_SOURCE} - COMMAND camlidl -header -I ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.idl - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.idl - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - ) + #Detailed CMake logic to build ocaml bindings for PLplot. + set(camlidl_GENERATED_SOURCE + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.h + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.ml + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.mli + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.c + ) - add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.o - COMMAND ocamlc -verbose -c ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.c - DEPENDS - ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.c - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - ) + add_custom_command( + OUTPUT + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.idl + ${camlidl_GENERATED_SOURCE} + # camlidl source file must be in ${CMAKE_CURRENT_BINARY_DIR}. + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/plplot_core.idl ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.idl + COMMAND camlidl -header -I ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.idl + DEPENDS + ${CMAKE_CURRENT_SOURCE_DIR}/plplot_core.idl + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) - add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/plplot_impl.o - COMMAND ocamlc -verbose -ccopt -I${CMAKE_SOURCE_DIR}/include -ccopt -I${CMAKE_BINARY_DIR}/include -ccopt -I${CMAKE_SOURCE_DIR}/lib/qsastime -c ${CMAKE_CURRENT_SOURCE_DIR}/plplot_impl.c - DEPENDS - ${CMAKE_CURRENT_SOURCE_DIR}/plplot_impl.c - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - ) + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.o + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/plplot_impl.o + ${CMAKE_CURRENT_BINARY_DIR}/dllplplot_stubs.so + ${CMAKE_CURRENT_BINARY_DIR}/libplplot_stubs.a + COMMAND ocamlc -verbose -c ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.c + COMMAND ocamlc -verbose -ccopt -I${CMAKE_SOURCE_DIR}/include -ccopt -I${CMAKE_BINARY_DIR}/include -ccopt -I${CMAKE_SOURCE_DIR}/lib/qsastime -c ${CMAKE_CURRENT_SOURCE_DIR}/plplot_impl.c + COMMAND ocamlmklib -v -o plplot_stubs -L${CAMLIDL_LIB_DIR} -lcamlidl -L${CMAKE_BINARY_DIR}/src -dllpath ${CMAKE_BINARY_DIR}/src -lplplot${LIB_TAG} ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.o ${CMAKE_CURRENT_BINARY_DIR}/plplot_impl.o + DEPENDS + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.c + ${CMAKE_CURRENT_SOURCE_DIR}/plplot_impl.c + plplot${LIB_TAG} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) + add_custom_target(target_lib_plplot_stubs + DEPENDS + ${CMAKE_CURRENT_BINARY_DIR}/dllplplot_stubs.so + ${CMAKE_CURRENT_BINARY_DIR}/libplplot_stubs.a + ) - add_custom_command( - OUTPUT - ${CMAKE_CURRENT_BINARY_DIR}/dllplplot_stubs.so - ${CMAKE_CURRENT_BINARY_DIR}/libplplot_stubs.a - COMMAND ocamlmklib -v -o plplot_stubs -L${CAMLIDL_LIB_DIR} -dllpath ${CAMLIDL_LIB_DIR} -lcamlidl -lcamlrun_shared -L${CMAKE_BINARY_DIR}/src -dllpath ${CMAKE_BINARY_DIR}/src -lplplot${LIB_TAG} ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.o ${CMAKE_CURRENT_BINARY_DIR}/plplot_impl.o - DEPENDS - ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.o - ${CMAKE_CURRENT_BINARY_DIR}/plplot_impl.o - plplot${LIB_TAG} - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - ) + add_custom_command( + OUTPUT + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmi + ${CMAKE_CURRENT_BINARY_DIR}/plplot.mli + ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmi + COMMAND ocamlc -verbose -c ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.mli + # ocamlc *.mli source file must be in ${CMAKE_CURRENT_BINARY_DIR}. + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/plplot.mli ${CMAKE_CURRENT_BINARY_DIR}/plplot.mli + COMMAND ocamlc -verbose -c ${CMAKE_CURRENT_BINARY_DIR}/plplot.mli + DEPENDS + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.mli + ${CMAKE_CURRENT_SOURCE_DIR}/plplot.mli + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) + add_custom_target(target_plplot_core_cmi + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmi + ) - add_custom_target(experimental DEPENDS - ${CMAKE_CURRENT_BINARY_DIR}/dllplplot_stubs.so - ${CMAKE_CURRENT_BINARY_DIR}/libplplot_stubs.a - ) - #end of experiment - else(OCAML_EXPERIMENTAL_BUILD) + add_custom_command( + OUTPUT + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmo + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmx + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.o + ${CMAKE_CURRENT_BINARY_DIR}/plplot.ml + ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmo + ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmx + ${CMAKE_CURRENT_BINARY_DIR}/plplot.o + COMMAND ocamlc -verbose -c ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.ml + COMMAND ocamlopt -verbose -c ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.ml + # ocamlc and ocamlopt *.ml source file must be in + # ${CMAKE_CURRENT_BINARY_DIR}. + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/plplot.ml ${CMAKE_CURRENT_BINARY_DIR}/plplot.ml + COMMAND ocamlc -verbose -c ${CMAKE_CURRENT_BINARY_DIR}/plplot.ml + COMMAND ocamlopt -verbose -c ${CMAKE_CURRENT_BINARY_DIR}/plplot.ml + DEPENDS + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.ml + ${CMAKE_CURRENT_SOURCE_DIR}/plplot.ml + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmi + ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmi + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) + add_custom_target(target_plplot_core_cmo + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmo + ) + add_custom_command( + OUTPUT + ${CMAKE_CURRENT_BINARY_DIR}/plplot.cma + ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmxa + ${CMAKE_CURRENT_BINARY_DIR}/plplot.a + COMMAND ocamlc -verbose -a -custom -ccopt -L${CMAKE_CURRENT_BINARY_DIR} -cclib -lplplot_stubs -ccopt -L${CMAKE_BINARY_DIR}/src -cclib -lplplot${LIB_TAG} -o ${CMAKE_CURRENT_BINARY_DIR}/plplot.cma ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmo ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmo +# COMMAND ocamlc -verbose -a -custom -o ${CMAKE_CURRENT_BINARY_DIR}/plplot.cma ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmo ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmo + COMMAND ocamlopt -verbose -a -ccopt -L${CMAKE_CURRENT_BINARY_DIR} -cclib -lplplot_stubs -ccopt -L${CMAKE_BINARY_DIR}/src -cclib -lplplot${LIB_TAG} -o ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmxa ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmx ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmx + DEPENDS + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmo + ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmo + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmx + ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmx + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) + add_custom_target(target_plplot_cma + DEPENDS + ${CMAKE_CURRENT_BINARY_DIR}/plplot.cma + ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmxa + ) + + # These targets depend on common files in their respective + # file-dependency chains. Therefore, to avoid screwing up parallel + # builds must serialize with target depends. + add_dependencies(target_plplot_core_cmi target_lib_plplot_stubs) + add_dependencies(target_plplot_core_cmo target_plplot_core_cmi) + add_dependencies(target_plplot_cma target_plplot_core_cmo) + + # Basic build done, now trying to finish up by adapting bits + # and pieces of old build procedure below. + + # Configure the META file + # Configure pkg-config *.pc file corresponding to plplot.cma + if(PKG_CONFIG_EXECUTABLE) + if(LIB_TAG) + set(PC_PRECISION "double") + else(LIB_TAG) + set(PC_PRECISION "single") + endif(LIB_TAG) + # Each list element must consist of a colon-separated string with the + # following fields which are parsed out in the foreach loop below and + # used to configure the corresponding pkg-config *.pc file. + # BINDING - ENABLE_${BINDING} keeps track of whether a + # binding has been enabled (ON) or not (OFF). + # Also, ${BINDING} used to determine PC_FILE_SUFFIX + # which helps to determine name of configured + # *.pc file. + # PC_SHORT_NAME - Used in *.pc NAME: field + # PC_LONG_NAME - Used in *.pc Description: field + # PC_LIBRARY_NAME - Used in *.pc Libs: field + # Also used to determine PC_LINK_FLAGS and + # PC_COMPILE_FLAGS used in *.pc Libs: and Cflags: + # fields. + set(PC_DATA "ocaml:::plplot${LIB_TAG}") + + string(REGEX REPLACE "^(.*):.*:.*:.*$" "\\1" BINDING ${PC_DATA}) + set(PC_FILE_SUFFIX "-${BINDING}") + set(PC_REQUIRES "plplot${LIB_TAG}") + string(REGEX REPLACE "^.*:(.*):.*:.*$" "\\1" PC_SHORT_NAME ${PC_DATA}) + string(REGEX REPLACE "^.*:.*:(.*):.*$" "\\1" PC_LONG_NAME ${PC_DATA}) + string(REGEX REPLACE "^.*:.*:.*:(.*)$" "\\1" PC_LIBRARY_NAME ${PC_DATA}) + set(PC_LINK_FLAGS "${lib${PC_LIBRARY_NAME}_LINK_FLAGS}") + set(PC_COMPILE_FLAGS "${lib${PC_LIBRARY_NAME}_COMPILE_FLAGS}") + set(PC_LINK_FLAGS "-l${PC_LIBRARY_NAME} ${PC_LINK_FLAGS}") + set(PC_CONFIGURED_FILE + ${CMAKE_BINARY_DIR}/pkgcfg/plplot${LIB_TAG}${PC_FILE_SUFFIX}.pc + ) + configure_file( + ${CMAKE_SOURCE_DIR}/pkgcfg/plplot-template.pc.cmake + ${PC_CONFIGURED_FILE} + @ONLY + ) + install(FILES ${PC_CONFIGURED_FILE} DESTINATION ${PKG_CONFIG_DIR}) + configure_file(META.cmake ${CMAKE_CURRENT_BINARY_DIR}/META) + endif(PKG_CONFIG_EXECUTABLE) + + add_custom_target(plplot_ocaml ALL) + add_dependencies(plplot_ocaml target_plplot_cma) + + # Need to keep track of file dependencies since this is a custom target. + set_property(GLOBAL PROPERTY FILES_plplot_ocaml + ${CMAKE_CURRENT_BINARY_DIR}/plplot.cma + ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmxa + ${CMAKE_CURRENT_BINARY_DIR}/plplot.a + ) + + set(OCAML_FULL_INSTALL_FILES + plplot.cma + plplot.cmxa + plplot.a + plplot.cmi + libplplot_stubs.a + plplot.mli + ) + + # Most files go in the plplot subdirectory + install(FILES ${OCAML_FULL_INSTALL_FILES} ${CMAKE_CURRENT_BINARY_DIR}/META + DESTINATION ${OCAML_INSTALL_DIR}/plplot + ) + + # Shared library stubs go in stublibs + install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${OCAML_BUILD_DIR}/dllplplot_stubs.so + DESTINATION ${OCAML_INSTALL_DIR}/stublibs + ) + + else(OCAML_NEW_BUILD) + set(SOURCE_LIST libplplot_stubs.clib plplot_h @@ -249,6 +380,6 @@ ADDITIONAL_MAKE_CLEAN_FILES ${OCAML_BUILD_DIR} ) - endif(OCAML_EXPERIMENTAL_BUILD) + endif(OCAML_NEW_BUILD) endif(ENABLE_ocaml) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hez...@us...> - 2009-09-18 20:02:54
|
Revision: 10426 http://plplot.svn.sourceforge.net/plplot/?rev=10426&view=rev Author: hezekiahcarty Date: 2009-09-18 20:02:45 +0000 (Fri, 18 Sep 2009) Log Message: ----------- Rearrange argument lists to make the new OCaml compilation scheme work properly OCaml is very sensitive to the order in which compiler arguments are provided, which was apparently causing linking errors for the OCaml PLplot bindings when using the new PLplot OCaml build system. Modified Paths: -------------- trunk/bindings/ocaml/CMakeLists.txt Modified: trunk/bindings/ocaml/CMakeLists.txt =================================================================== --- trunk/bindings/ocaml/CMakeLists.txt 2009-09-18 18:52:15 UTC (rev 10425) +++ trunk/bindings/ocaml/CMakeLists.txt 2009-09-18 20:02:45 UTC (rev 10426) @@ -49,9 +49,9 @@ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/plplot_impl.o ${CMAKE_CURRENT_BINARY_DIR}/dllplplot_stubs.so ${CMAKE_CURRENT_BINARY_DIR}/libplplot_stubs.a - COMMAND ocamlc -verbose -c ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.c - COMMAND ocamlc -verbose -ccopt -I${CMAKE_SOURCE_DIR}/include -ccopt -I${CMAKE_BINARY_DIR}/include -ccopt -I${CMAKE_SOURCE_DIR}/lib/qsastime -c ${CMAKE_CURRENT_SOURCE_DIR}/plplot_impl.c - COMMAND ocamlmklib -v -o plplot_stubs -L${CAMLIDL_LIB_DIR} -lcamlidl -L${CMAKE_BINARY_DIR}/src -dllpath ${CMAKE_BINARY_DIR}/src -lplplot${LIB_TAG} ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.o ${CMAKE_CURRENT_BINARY_DIR}/plplot_impl.o + COMMAND ocamlc -c ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.c + COMMAND ocamlc -ccopt -I${CMAKE_SOURCE_DIR}/include -ccopt -I${CMAKE_BINARY_DIR}/include -ccopt -I${CMAKE_SOURCE_DIR}/lib/qsastime -c ${CMAKE_CURRENT_SOURCE_DIR}/plplot_impl.c + COMMAND ocamlmklib -o plplot_stubs -L${CAMLIDL_LIB_DIR} -lcamlidl -L${CMAKE_BINARY_DIR}/src -lplplot${LIB_TAG} ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.o ${CMAKE_CURRENT_BINARY_DIR}/plplot_impl.o DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.c ${CMAKE_CURRENT_SOURCE_DIR}/plplot_impl.c @@ -69,10 +69,10 @@ ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmi ${CMAKE_CURRENT_BINARY_DIR}/plplot.mli ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmi - COMMAND ocamlc -verbose -c ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.mli + COMMAND ocamlc -c ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.mli # ocamlc *.mli source file must be in ${CMAKE_CURRENT_BINARY_DIR}. COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/plplot.mli ${CMAKE_CURRENT_BINARY_DIR}/plplot.mli - COMMAND ocamlc -verbose -c ${CMAKE_CURRENT_BINARY_DIR}/plplot.mli + COMMAND ocamlc -c ${CMAKE_CURRENT_BINARY_DIR}/plplot.mli DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.mli ${CMAKE_CURRENT_SOURCE_DIR}/plplot.mli @@ -91,13 +91,13 @@ ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmo ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmx ${CMAKE_CURRENT_BINARY_DIR}/plplot.o - COMMAND ocamlc -verbose -c ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.ml - COMMAND ocamlopt -verbose -c ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.ml + COMMAND ocamlc -c ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.ml + COMMAND ocamlopt -c ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.ml # ocamlc and ocamlopt *.ml source file must be in # ${CMAKE_CURRENT_BINARY_DIR}. COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/plplot.ml ${CMAKE_CURRENT_BINARY_DIR}/plplot.ml - COMMAND ocamlc -verbose -c ${CMAKE_CURRENT_BINARY_DIR}/plplot.ml - COMMAND ocamlopt -verbose -c ${CMAKE_CURRENT_BINARY_DIR}/plplot.ml + COMMAND ocamlc -c ${CMAKE_CURRENT_BINARY_DIR}/plplot.ml + COMMAND ocamlopt -c ${CMAKE_CURRENT_BINARY_DIR}/plplot.ml DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.ml ${CMAKE_CURRENT_SOURCE_DIR}/plplot.ml @@ -114,8 +114,8 @@ ${CMAKE_CURRENT_BINARY_DIR}/plplot.cma ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmxa ${CMAKE_CURRENT_BINARY_DIR}/plplot.a - COMMAND ocamlc -verbose -a -custom -ccopt -L${CAMLIDL_LIB_DIR} -cclib -lcamlidl -ccopt -L${CMAKE_CURRENT_BINARY_DIR} -cclib -lplplot_stubs -ccopt -L${CMAKE_BINARY_DIR}/src -cclib -lplplot${LIB_TAG} -dllpath ${CMAKE_BINARY_DIR}/src -o ${CMAKE_CURRENT_BINARY_DIR}/plplot.cma ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmo ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmo - COMMAND ocamlopt -verbose -a -ccopt -L${CAMLIDL_LIB_DIR} -cclib -lcamlidl -ccopt -L${CMAKE_CURRENT_BINARY_DIR} -cclib -lplplot_stubs -ccopt -L${CMAKE_BINARY_DIR}/src -cclib -lplplot${LIB_TAG} -o ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmxa ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmx ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmx + COMMAND ocamlc -a -custom -o ${CMAKE_CURRENT_BINARY_DIR}/plplot.cma ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmo ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmo -dllib -lplplot_stubs -ccopt -L${CMAKE_CURRENT_BINARY_DIR} -cclib -lplplot_stubs -ccopt -L${CAMLIDL_LIB_DIR} -cclib -lcamlidl -ccopt -L${CMAKE_BINARY_DIR}/src -cclib -lplplot${LIB_TAG} -dllpath ${CMAKE_BINARY_DIR}/src + COMMAND ocamlopt -a -o ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmxa ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmx ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmx -ccopt -L${CMAKE_CURRENT_BINARY_DIR} -cclib -lplplot_stubs -ccopt -L${CAMLIDL_LIB_DIR} -cclib -lcamlidl -ccopt -L${CMAKE_BINARY_DIR}/src -cclib -lplplot${LIB_TAG} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmo ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmo This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hez...@us...> - 2009-09-18 21:20:07
|
Revision: 10427 http://plplot.svn.sourceforge.net/plplot/?rev=10427&view=rev Author: hezekiahcarty Date: 2009-09-18 21:19:47 +0000 (Fri, 18 Sep 2009) Log Message: ----------- Add binary+build prefix to the installed OCaml files Without this, CMake looks in the install tree rather than the build tree for the installable OCaml files when using the new OCaml build system. Modified Paths: -------------- trunk/bindings/ocaml/CMakeLists.txt Modified: trunk/bindings/ocaml/CMakeLists.txt =================================================================== --- trunk/bindings/ocaml/CMakeLists.txt 2009-09-18 20:02:45 UTC (rev 10426) +++ trunk/bindings/ocaml/CMakeLists.txt 2009-09-18 21:19:47 UTC (rev 10427) @@ -195,12 +195,12 @@ ) set(OCAML_FULL_INSTALL_FILES - plplot.cma - plplot.cmxa - plplot.a - plplot.cmi - libplplot_stubs.a - plplot.mli + ${CMAKE_CURRENT_BINARY_DIR}/${OCAML_BUILD_DIR}/plplot.cma + ${CMAKE_CURRENT_BINARY_DIR}/${OCAML_BUILD_DIR}/plplot.cmxa + ${CMAKE_CURRENT_BINARY_DIR}/${OCAML_BUILD_DIR}/plplot.a + ${CMAKE_CURRENT_BINARY_DIR}/${OCAML_BUILD_DIR}/plplot.cmi + ${CMAKE_CURRENT_BINARY_DIR}/${OCAML_BUILD_DIR}/libplplot_stubs.a + ${CMAKE_CURRENT_BINARY_DIR}/${OCAML_BUILD_DIR}/plplot.mli ) # Most files go in the plplot subdirectory This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2009-09-21 06:30:13
|
Revision: 10446 http://plplot.svn.sourceforge.net/plplot/?rev=10446&view=rev Author: airwin Date: 2009-09-21 06:30:05 +0000 (Mon, 21 Sep 2009) Log Message: ----------- Take advantage of new fullpath capabilities of touchup.ml to simplify add_custom_command that generates generated_plplot_h.inc. Modified Paths: -------------- trunk/bindings/ocaml/CMakeLists.txt Modified: trunk/bindings/ocaml/CMakeLists.txt =================================================================== --- trunk/bindings/ocaml/CMakeLists.txt 2009-09-21 02:35:09 UTC (rev 10445) +++ trunk/bindings/ocaml/CMakeLists.txt 2009-09-21 06:30:05 UTC (rev 10446) @@ -25,20 +25,13 @@ # optional command to generate generated_plplot_h.inc. This generated # version of the file should be identical to plplot_h.inc. if(GENERATE_PLPLOT_H_INC) - # N.B. remove the first OUTPUT file and all the copy_if_different and - # remove commands once touchup.ml is changed to have multi-directory - # capability. add_custom_command( OUTPUT - ${CMAKE_CURRENT_BINARY_DIR}/plplot_h ${CMAKE_CURRENT_BINARY_DIR}/generated_plplot_h.inc - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/plplot_h ${CMAKE_CURRENT_BINARY_DIR}/plplot_h - COMMAND ${OCAML} ${CMAKE_CURRENT_SOURCE_DIR}/touchup.ml - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/plplot_h.inc ${CMAKE_CURRENT_BINARY_DIR}/generated_plplot_h.inc - COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_CURRENT_BINARY_DIR}/plplot_h.inc + COMMAND ${OCAML} ${CMAKE_CURRENT_SOURCE_DIR}/touchup.ml ${CMAKE_CURRENT_SOURCE_DIR}/plplot_h ${CMAKE_CURRENT_BINARY_DIR}/generated_plplot_h.inc DEPENDS - ${CMAKE_CURRENT_SOURCE_DIR}/plplot_h ${CMAKE_CURRENT_SOURCE_DIR}/touchup.ml + ${CMAKE_CURRENT_SOURCE_DIR}/plplot_h WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) add_custom_target(generate_plplot_h.inc This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2009-09-27 00:58:35
|
Revision: 10479 http://plplot.svn.sourceforge.net/plplot/?rev=10479&view=rev Author: airwin Date: 2009-09-27 00:58:25 +0000 (Sun, 27 Sep 2009) Log Message: ----------- Fix serialization bug (add_dependency mentioned the wrong target) for parallel builds Improve logic for the case where OCAMLOPT is not true. Improve commentary. Modified Paths: -------------- trunk/bindings/ocaml/CMakeLists.txt Modified: trunk/bindings/ocaml/CMakeLists.txt =================================================================== --- trunk/bindings/ocaml/CMakeLists.txt 2009-09-26 18:25:56 UTC (rev 10478) +++ trunk/bindings/ocaml/CMakeLists.txt 2009-09-27 00:58:25 UTC (rev 10479) @@ -5,6 +5,7 @@ # # Copyright (C) 2008 Andrew Ross # Copyright (C) 2009 Hezekiah M. Carty +# Copyright (C) 2009 Alan W. Irwin # # This file is part of PLplot. # @@ -61,9 +62,12 @@ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) + # ocamlc -c compiles *.c into *.o. + # ocamlmklib links *.o into *.so and *.a add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.o - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/plplot_impl.o + OUTPUT + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.o + ${CMAKE_CURRENT_BINARY_DIR}/plplot_impl.o ${CMAKE_CURRENT_BINARY_DIR}/dllplplot_stubs.so ${CMAKE_CURRENT_BINARY_DIR}/libplplot_stubs.a COMMAND ${OCAMLC} -c ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.c @@ -81,6 +85,7 @@ ${CMAKE_CURRENT_BINARY_DIR}/libplplot_stubs.a ) + # ocamlc -c compiles *.mli into *.cmi add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmi @@ -99,7 +104,8 @@ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmi ) - # ocamlc + # ocamlc -c compiles *.ml into *.cmo and simultaneously checks against + # *.cmi produced from *.mli above. add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmo @@ -121,33 +127,9 @@ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmo ) - # ocamlopt + # ocamlc -a -custom builds a *.cma library from *.cmo add_custom_command( OUTPUT - ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmx - ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.o - ${CMAKE_CURRENT_BINARY_DIR}/plplot.ml - ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmx - ${CMAKE_CURRENT_BINARY_DIR}/plplot.o - COMMAND ${OCAMLOPT} -c ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.ml - # ocamlc and ocamlopt *.ml source file must be in - # ${CMAKE_CURRENT_BINARY_DIR}. - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/plplot.ml ${CMAKE_CURRENT_BINARY_DIR}/plplot.ml - COMMAND ${OCAMLOPT} -c ${CMAKE_CURRENT_BINARY_DIR}/plplot.ml - DEPENDS - ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.ml - ${CMAKE_CURRENT_SOURCE_DIR}/plplot.ml - ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmi - ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmi - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - ) - add_custom_target(target_plplot_core_cmx - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmx - ) - - # ocamlc - add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/plplot.cma COMMAND ${OCAMLC} -a -custom -o ${CMAKE_CURRENT_BINARY_DIR}/plplot.cma ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmo ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmo -dllib -lplplot_stubs -ccopt -L${CMAKE_CURRENT_BINARY_DIR} -cclib -lplplot_stubs -ccopt -L${CAMLIDL_LIB_DIR} -cclib -lcamlidl -ccopt -L${CMAKE_BINARY_DIR}/src -cclib -lplplot${LIB_TAG} -dllpath ${CMAKE_BINARY_DIR}/src DEPENDS @@ -160,33 +142,72 @@ ${CMAKE_CURRENT_BINARY_DIR}/plplot.cma ) - # ocamlopt - add_custom_command( - OUTPUT - ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmxa - ${CMAKE_CURRENT_BINARY_DIR}/plplot.a - COMMAND ${OCAMLOPT} -a -o ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmxa ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmx ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmx -ccopt -L${CMAKE_CURRENT_BINARY_DIR} -cclib -lplplot_stubs -ccopt -L${CAMLIDL_LIB_DIR} -cclib -lcamlidl -ccopt -L${CMAKE_BINARY_DIR}/src -cclib -lplplot${LIB_TAG} - DEPENDS - ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmx - ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmx - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - ) - add_custom_target(target_plplot_cmxa - DEPENDS - ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmxa - ) - # These targets depend on common files in their respective # file-dependency chains. Therefore, to avoid screwing up parallel # builds must serialize with target depends. add_dependencies(target_plplot_core_cmi target_lib_plplot_stubs) - # ocamlc add_dependencies(target_plplot_core_cmo target_plplot_core_cmi) add_dependencies(target_plplot_cma target_plplot_core_cmo) - # ocamlopt - add_dependencies(target_plplot_core_cmx target_plplot_core_cmi) - add_dependencies(target_plplot_cmxa target_plplot_core_cmx) + add_custom_target(plplot_ocaml ALL) + + if(OCAMLOPT) + # ocamlopt compiles *.ml into *.o and *.cmx and simultaneously + # checks against *.cmi produced from *.mli above. + add_custom_command( + OUTPUT + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmx + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.o + ${CMAKE_CURRENT_BINARY_DIR}/plplot.ml + ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmx + ${CMAKE_CURRENT_BINARY_DIR}/plplot.o + COMMAND ${OCAMLOPT} -c ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.ml + # ocamlc and ocamlopt *.ml source file must be in + # ${CMAKE_CURRENT_BINARY_DIR}. + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/plplot.ml ${CMAKE_CURRENT_BINARY_DIR}/plplot.ml + COMMAND ${OCAMLOPT} -c ${CMAKE_CURRENT_BINARY_DIR}/plplot.ml + DEPENDS + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.ml + ${CMAKE_CURRENT_SOURCE_DIR}/plplot.ml + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmi + ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmi + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) + add_custom_target(target_plplot_core_cmx + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmx + ) + + # ocamlopt -a builds the libraries *.cmxa and *.a respectively from + # the *.cmx and *.o files. The plplot_stubs library also plays + # a role. + add_custom_command( + OUTPUT + ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmxa + ${CMAKE_CURRENT_BINARY_DIR}/plplot.a + COMMAND ${OCAMLOPT} -a -o ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmxa ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmx ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmx -ccopt -L${CMAKE_CURRENT_BINARY_DIR} -cclib -lplplot_stubs -ccopt -L${CAMLIDL_LIB_DIR} -cclib -lcamlidl -ccopt -L${CMAKE_BINARY_DIR}/src -cclib -lplplot${LIB_TAG} + DEPENDS + ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmx + ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmx + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) + add_custom_target(target_plplot_cmxa + DEPENDS + ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmxa + ) + + # Must serialize these targets against highest dependency ocamlc + # target, target_plplot_cma, because of common custom commands in + # their file-dependency chains which would be screwed up in a + # parallel build without this serialization. + + add_dependencies(target_plplot_core_cmx target_plplot_cma) + add_dependencies(target_plplot_cmxa target_plplot_core_cmx) + + add_dependencies(plplot_ocaml target_plplot_cmxa) + else (OCAMLOPT) + add_dependencies(plplot_ocaml target_plplot_cma) + endif(OCAMLOPT) + # Basic build done, now trying to finish up by adapting bits # and pieces of old build procedure below. @@ -235,13 +256,6 @@ configure_file(META.cmake ${CMAKE_CURRENT_BINARY_DIR}/META) endif(PKG_CONFIG_EXECUTABLE) - add_custom_target(plplot_ocaml ALL) - if (OCAMLOPT) - add_dependencies(plplot_ocaml target_plplot_cma target_plplot_cmxa) - else (OCAMLOPT) - add_dependencies(plplot_ocaml target_plplot_cma) - endif (OCAMLOPT) - # Need to keep track of file dependencies since this is a custom target. set_property(GLOBAL PROPERTY FILES_plplot_ocaml ${CMAKE_CURRENT_BINARY_DIR}/plplot.cma This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2009-09-27 01:29:25
|
Revision: 10480 http://plplot.svn.sourceforge.net/plplot/?rev=10480&view=rev Author: airwin Date: 2009-09-27 01:29:16 +0000 (Sun, 27 Sep 2009) Log Message: ----------- Change plplot_core ==> plplot in target names. Do not combine file depends for the OCAMLOPT chain with those from the OCAMLC chain when exporting the file depends associated with the plplot_ocaml target. Instead, rely just on file depends of either target_plplot_cmxa (OCAMLOPT is true) or target_plplot_cma (OCAMLOPT is false). In other words, we assume the chain of file depends associated with each of these targets is correct. Modified Paths: -------------- trunk/bindings/ocaml/CMakeLists.txt Modified: trunk/bindings/ocaml/CMakeLists.txt =================================================================== --- trunk/bindings/ocaml/CMakeLists.txt 2009-09-27 00:58:25 UTC (rev 10479) +++ trunk/bindings/ocaml/CMakeLists.txt 2009-09-27 01:29:16 UTC (rev 10480) @@ -100,8 +100,8 @@ ${CMAKE_CURRENT_SOURCE_DIR}/plplot.mli WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) - add_custom_target(target_plplot_core_cmi - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmi + add_custom_target(target_plplot_cmi + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmi ) # ocamlc -c compiles *.ml into *.cmo and simultaneously checks against @@ -123,8 +123,8 @@ ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmi WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) - add_custom_target(target_plplot_core_cmo - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmo + add_custom_target(target_plplot_cmo + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmo ) # ocamlc -a -custom builds a *.cma library from *.cmo @@ -145,9 +145,9 @@ # These targets depend on common files in their respective # file-dependency chains. Therefore, to avoid screwing up parallel # builds must serialize with target depends. - add_dependencies(target_plplot_core_cmi target_lib_plplot_stubs) - add_dependencies(target_plplot_core_cmo target_plplot_core_cmi) - add_dependencies(target_plplot_cma target_plplot_core_cmo) + add_dependencies(target_plplot_cmi target_lib_plplot_stubs) + add_dependencies(target_plplot_cmo target_plplot_cmi) + add_dependencies(target_plplot_cma target_plplot_cmo) add_custom_target(plplot_ocaml ALL) @@ -173,7 +173,7 @@ ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmi WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) - add_custom_target(target_plplot_core_cmx + add_custom_target(target_plplot_cmx DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.cmx ) @@ -200,12 +200,22 @@ # their file-dependency chains which would be screwed up in a # parallel build without this serialization. - add_dependencies(target_plplot_core_cmx target_plplot_cma) - add_dependencies(target_plplot_cmxa target_plplot_core_cmx) + add_dependencies(target_plplot_cmx target_plplot_cma) + add_dependencies(target_plplot_cmxa target_plplot_cmx) add_dependencies(plplot_ocaml target_plplot_cmxa) + + # Need to keep track of file dependencies since this is a custom target. + set_property(GLOBAL PROPERTY FILES_plplot_ocaml + ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmxa + ${CMAKE_CURRENT_BINARY_DIR}/plplot.a + ) else (OCAMLOPT) add_dependencies(plplot_ocaml target_plplot_cma) + # Need to keep track of file dependencies since this is a custom target. + set_property(GLOBAL PROPERTY FILES_plplot_ocaml + ${CMAKE_CURRENT_BINARY_DIR}/plplot.cma + ) endif(OCAMLOPT) # Basic build done, now trying to finish up by adapting bits @@ -256,17 +266,6 @@ configure_file(META.cmake ${CMAKE_CURRENT_BINARY_DIR}/META) endif(PKG_CONFIG_EXECUTABLE) - # Need to keep track of file dependencies since this is a custom target. - set_property(GLOBAL PROPERTY FILES_plplot_ocaml - ${CMAKE_CURRENT_BINARY_DIR}/plplot.cma - ) - if (OCAMLOPT) - set_property(GLOBAL APPEND PROPERTY FILES_plplot_ocaml - ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmxa - ${CMAKE_CURRENT_BINARY_DIR}/plplot.a - ) - endif (OCAMLOPT) - set(OCAML_FULL_INSTALL_FILES ${CMAKE_CURRENT_BINARY_DIR}/plplot.cma ${CMAKE_CURRENT_BINARY_DIR}/plplot.cmi This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hez...@us...> - 2009-09-29 05:33:05
|
Revision: 10487 http://plplot.svn.sourceforge.net/plplot/?rev=10487&view=rev Author: hezekiahcarty Date: 2009-09-29 05:32:56 +0000 (Tue, 29 Sep 2009) Log Message: ----------- Always prepare the OCaml META file if the OCaml bindings are built Configuring META should not depend on pkg-config. This also has a small, unrelated comment update. Modified Paths: -------------- trunk/bindings/ocaml/CMakeLists.txt Modified: trunk/bindings/ocaml/CMakeLists.txt =================================================================== --- trunk/bindings/ocaml/CMakeLists.txt 2009-09-28 16:27:28 UTC (rev 10486) +++ trunk/bindings/ocaml/CMakeLists.txt 2009-09-29 05:32:56 UTC (rev 10487) @@ -50,6 +50,7 @@ ${CMAKE_CURRENT_BINARY_DIR}/plplot_core_stubs.c ) + # camlidl produces most of the C and OCaml code required to bind PLplot add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/plplot_core.idl @@ -222,6 +223,7 @@ # and pieces of old build procedure below. # Configure the META file + configure_file(META.cmake ${CMAKE_CURRENT_BINARY_DIR}/META) # Configure pkg-config *.pc file corresponding to plplot.cma if(PKG_CONFIG_EXECUTABLE) if(LIB_TAG) @@ -263,7 +265,6 @@ @ONLY ) install(FILES ${PC_CONFIGURED_FILE} DESTINATION ${PKG_CONFIG_DIR}) - configure_file(META.cmake ${CMAKE_CURRENT_BINARY_DIR}/META) endif(PKG_CONFIG_EXECUTABLE) set(OCAML_FULL_INSTALL_FILES This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hez...@us...> - 2009-09-29 05:46:26
|
Revision: 10489 http://plplot.svn.sourceforge.net/plplot/?rev=10489&view=rev Author: hezekiahcarty Date: 2009-09-29 05:46:16 +0000 (Tue, 29 Sep 2009) Log Message: ----------- Comment out the inclusion of Plcairo as it has missing dependencies Plcairo does not properly depend on the plplot.(cma|cmxa) which can break builds if those modules are not built first. Modified Paths: -------------- trunk/bindings/ocaml/CMakeLists.txt Modified: trunk/bindings/ocaml/CMakeLists.txt =================================================================== --- trunk/bindings/ocaml/CMakeLists.txt 2009-09-29 05:42:40 UTC (rev 10488) +++ trunk/bindings/ocaml/CMakeLists.txt 2009-09-29 05:46:16 UTC (rev 10489) @@ -25,7 +25,7 @@ if(ENABLE_ocaml) # Try to build the Plcairo module - add_subdirectory(plcairo) + #add_subdirectory(plcairo) # optional command to generate generated_plplot_h.inc. This generated # version of the file should be identical to plplot_h.inc. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2011-11-26 02:42:22
|
Revision: 12048 http://plplot.svn.sourceforge.net/plplot/?rev=12048&view=rev Author: airwin Date: 2011-11-26 02:42:16 +0000 (Sat, 26 Nov 2011) Log Message: ----------- OCaml building is complicated so stick with what has worked before (including setting of PC_REQUIRES_TAG to the transitive linking value for the pkg-config case) and ignore the NON_TRANSITIVE option altogether. Modified Paths: -------------- trunk/bindings/ocaml/CMakeLists.txt Modified: trunk/bindings/ocaml/CMakeLists.txt =================================================================== --- trunk/bindings/ocaml/CMakeLists.txt 2011-11-26 02:20:29 UTC (rev 12047) +++ trunk/bindings/ocaml/CMakeLists.txt 2011-11-26 02:42:16 UTC (rev 12048) @@ -297,6 +297,11 @@ configure_file(META.in ${CMAKE_CURRENT_BINARY_DIR}/META) # Configure pkg-config *.pc file corresponding to plplot.cma if(PKG_CONFIG_EXECUTABLE) + # This configures the pkg-config method to use transitive linking + # (since we don't really know how to deal with non-transitive + # linking for ocaml). + set(PC_REQUIRES_TAG "Requires") + if(LIB_TAG) set(PC_PRECISION "double") else(LIB_TAG) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2013-09-28 16:52:24
|
Revision: 12539 http://sourceforge.net/p/plplot/code/12539 Author: airwin Date: 2013-09-28 16:52:20 +0000 (Sat, 28 Sep 2013) Log Message: ----------- Make check_plplot_h.inc target to check consistency of plplot_h.inc. Modified Paths: -------------- trunk/bindings/ocaml/CMakeLists.txt Modified: trunk/bindings/ocaml/CMakeLists.txt =================================================================== --- trunk/bindings/ocaml/CMakeLists.txt 2013-09-27 15:53:14 UTC (rev 12538) +++ trunk/bindings/ocaml/CMakeLists.txt 2013-09-28 16:52:20 UTC (rev 12539) @@ -53,22 +53,20 @@ endforeach(DEP ${plplotd_LIB_DEPENDS}) endif(NOT BUILD_SHARED_LIBS) - # optional command to generate generated_plplot_h.inc. This generated - # version of the file should be identical to plplot_h.inc. + # optional command to check consistency of plplot_h.inc. if(GENERATE_PLPLOT_H_INC) - add_custom_command( - OUTPUT - ${CMAKE_CURRENT_BINARY_DIR}/generated_plplot_h.inc - COMMAND ${OCAML} ${CMAKE_CURRENT_SOURCE_DIR}/touchup.ml ${CMAKE_CURRENT_SOURCE_DIR}/plplot_h ${CMAKE_CURRENT_BINARY_DIR}/generated_plplot_h.inc - DEPENDS - ${CMAKE_CURRENT_SOURCE_DIR}/touchup.ml - ${CMAKE_CURRENT_SOURCE_DIR}/plplot_h + add_custom_target( + check_plplot_h.inc + COMMAND + ${CMAKE_COMMAND} -E remove -f ${CMAKE_CURRENT_BINARY_DIR}/generated_plplot_h.inc + COMMAND + ${OCAML} ${CMAKE_CURRENT_SOURCE_DIR}/touchup.ml ${CMAKE_CURRENT_SOURCE_DIR}/plplot_h ${CMAKE_CURRENT_BINARY_DIR}/generated_plplot_h.inc + COMMAND + ${CMAKE_COMMAND} -E echo "Check that plplot_h.inc is consistent with touchup.ml and plplot_h" + COMMAND + cmp ${CMAKE_CURRENT_SOURCE_DIR}/plplot_h.inc ${CMAKE_CURRENT_BINARY_DIR}/generated_plplot_h.inc WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) - add_custom_target(generate_plplot_h.inc - DEPENDS - ${CMAKE_CURRENT_BINARY_DIR}/generated_plplot_h.inc - ) endif(GENERATE_PLPLOT_H_INC) #Detailed CMake logic to build ocaml bindings for PLplot. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2009-10-12 17:42:21
|
Revision: 10527 http://plplot.svn.sourceforge.net/plplot/?rev=10527&view=rev Author: airwin Date: 2009-10-12 17:42:06 +0000 (Mon, 12 Oct 2009) Log Message: ----------- Fix build of OCaml documentation. Note, similar changes need to be made to ocaml/plcairo/CMakeLists.txt which I leave to Hez. Modified Paths: -------------- trunk/bindings/ocaml/CMakeLists.txt Modified: trunk/bindings/ocaml/CMakeLists.txt =================================================================== --- trunk/bindings/ocaml/CMakeLists.txt 2009-10-12 04:08:02 UTC (rev 10526) +++ trunk/bindings/ocaml/CMakeLists.txt 2009-10-12 17:42:06 UTC (rev 10527) @@ -222,34 +222,47 @@ ) endif(OCAMLOPT) - if(OCAMLDOC AND BUILD_DOC) + if(OCAMLDOC) # Build OCaml API reference documentation set(OCAMLDOC_FILE_LIST - index_attributes.html index_modules.html Plplot.Plot.html - index_classes.html index_module_types.html Plplot.Quick_plot.html - index_class_types.html index_types.html style.css - index_exceptions.html index_values.html type_Plplot.html - index.html Plplot.html type_Plplot.Plot.html - index_methods.html plplot.mli type_Plplot.Quick_plot.html + Plplot.Plot.html + Plplot.Quick_plot.html + Plplot.html + index.html + index_attributes.html + index_class_types.html + index_classes.html + index_exceptions.html + index_methods.html + index_module_types.html + index_modules.html + index_types.html + index_values.html + style.css + type_Plplot.Plot.html + type_Plplot.Quick_plot.html + type_Plplot.html ) + set(OCAMLDOC_FILES) foreach(html_file ${OCAMLDOC_FILE_LIST}) - list(APPEND ${OCAMLDOC_FILES} ${CMAKE_CURRENT_BINARY_DIR}/${html_file}) + list(APPEND OCAMLDOC_FILES ${CMAKE_CURRENT_BINARY_DIR}/${html_file}) endforeach(html_file ${OCAMLDOC_FILE_LIST}) # ocamldoc builds the module's documentation using specially formatted # comments in the source file. add_custom_command( - OUTPUT "${OCAMLDOC_FILES}" + OUTPUT ${OCAMLDOC_FILES} COMMAND ${OCAMLDOC} -html ${CMAKE_CURRENT_SOURCE_DIR}/plplot.mli DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/plplot.mli WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) - add_custom_target(target_plplot_doc - DEPENDS - ${CMAKE_CURRENT_SOURCE_DIR}/plplot.mli - ) - endif(OCAMLDOC AND BUILD_DOC) + add_custom_target(target_build_ocaml_doc DEPENDS ${OCAMLDOC_FILES}) + # associated custom command has common file depends with custom command + # that is associated with target_plplot_cmi. Therefore must serialize + # the two custom targets. + add_dependencies(target_plplot_cmi target_build_ocaml_doc) + endif(OCAMLDOC) # Basic build done, now trying to finish up by adapting bits # and pieces of old build procedure below. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |