Index: llvm/trunk/bindings/ocaml/backends/CMakeLists.txt =================================================================== --- llvm/trunk/bindings/ocaml/backends/CMakeLists.txt +++ llvm/trunk/bindings/ocaml/backends/CMakeLists.txt @@ -23,5 +23,5 @@ "${LLVM_LIBRARY_DIR}/ocaml/META.llvm_${TARGET}") install(FILES "${LLVM_LIBRARY_DIR}/ocaml/META.llvm_${TARGET}" - DESTINATION lib/ocaml) + DESTINATION "${LLVM_OCAML_INSTALL_PATH}") endforeach() Index: llvm/trunk/bindings/ocaml/backends/META.llvm_backend.in =================================================================== --- llvm/trunk/bindings/ocaml/backends/META.llvm_backend.in +++ llvm/trunk/bindings/ocaml/backends/META.llvm_backend.in @@ -4,4 +4,4 @@ requires = "llvm" archive(byte) = "llvm_@TARGET@.cma" archive(native) = "llvm_@TARGET@.cmxa" -directory = "." +directory = "llvm" Index: llvm/trunk/bindings/ocaml/llvm/CMakeLists.txt =================================================================== --- llvm/trunk/bindings/ocaml/llvm/CMakeLists.txt +++ llvm/trunk/bindings/ocaml/llvm/CMakeLists.txt @@ -8,4 +8,4 @@ "${LLVM_LIBRARY_DIR}/ocaml/META.llvm") install(FILES "${LLVM_LIBRARY_DIR}/ocaml/META.llvm" - DESTINATION lib/ocaml) + DESTINATION "${LLVM_OCAML_INSTALL_PATH}") Index: llvm/trunk/bindings/ocaml/llvm/META.llvm.in =================================================================== --- llvm/trunk/bindings/ocaml/llvm/META.llvm.in +++ llvm/trunk/bindings/ocaml/llvm/META.llvm.in @@ -3,7 +3,7 @@ description = "LLVM OCaml bindings" archive(byte) = "llvm.cma" archive(native) = "llvm.cmxa" -directory = "." +directory = "llvm" package "analysis" ( requires = "llvm" Index: llvm/trunk/cmake/config-ix.cmake =================================================================== --- llvm/trunk/cmake/config-ix.cmake +++ llvm/trunk/cmake/config-ix.cmake @@ -554,6 +554,9 @@ message(STATUS "OCaml bindings enabled.") find_ocamlfind_package(oUnit VERSION 2 OPTIONAL) set(LLVM_BINDINGS "${LLVM_BINDINGS} ocaml") + + set(LLVM_OCAML_INSTALL_PATH "${OCAML_STDLIB_PATH}" CACHE STRING + "Install directory for LLVM OCaml packages") else() message(STATUS "OCaml bindings disabled, need ctypes >=0.4.") endif() Index: llvm/trunk/cmake/modules/AddOCaml.cmake =================================================================== --- llvm/trunk/cmake/modules/AddOCaml.cmake +++ llvm/trunk/cmake/modules/AddOCaml.cmake @@ -53,8 +53,8 @@ endif() set(ocaml_flags "-lstdc++" "-ldopt" "-L${LLVM_LIBRARY_DIR}" - "-ccopt" "-L\\$CAMLORIGIN/.." - "-ccopt" "-Wl,-rpath,\\$CAMLORIGIN/.." + "-ccopt" "-L\\$CAMLORIGIN/../.." + "-ccopt" "-Wl,-rpath,\\$CAMLORIGIN/../.." ${ocaml_pkgs}) foreach( ocaml_dep ${ARG_OCAMLDEP} ) @@ -135,9 +135,9 @@ endforeach() if( APPLE ) - set(ocaml_rpath "@executable_path/../../lib") + set(ocaml_rpath "@executable_path/../../../lib${LLVM_LIBDIR_SUFFIX}") elseif( UNIX ) - set(ocaml_rpath "\\$ORIGIN/../../lib") + set(ocaml_rpath "\\$ORIGIN/../../../lib${LLVM_LIBDIR_SUFFIX}") endif() list(APPEND ocaml_flags "-ldopt" "-Wl,-rpath,${ocaml_rpath}") @@ -152,7 +152,7 @@ OUTPUT "${bin}/${name}.odoc" COMMAND "${OCAMLFIND}" "ocamldoc" "-I" "${bin}" - "-I" "${LLVM_LIBRARY_DIR}/ocaml/" + "-I" "${LLVM_LIBRARY_DIR}/ocaml/llvm/" "-dump" "${bin}/${name}.odoc" ${ocaml_pkgs} ${ocaml_inputs} DEPENDS ${ocaml_inputs} ${ocaml_outputs} @@ -193,22 +193,25 @@ endforeach() install(FILES ${install_files} - DESTINATION lib/ocaml) + DESTINATION "${LLVM_OCAML_INSTALL_PATH}/llvm") install(FILES ${install_shlibs} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE - DESTINATION lib/ocaml) + DESTINATION "${LLVM_OCAML_INSTALL_PATH}/llvm") foreach( install_file ${install_files} ${install_shlibs} ) get_filename_component(filename "${install_file}" NAME) add_custom_command(TARGET "ocaml_${name}" POST_BUILD COMMAND "${CMAKE_COMMAND}" "-E" "copy" "${install_file}" - "${LLVM_LIBRARY_DIR}/ocaml/" + "${LLVM_LIBRARY_DIR}/ocaml/llvm/" COMMENT "Copying OCaml library component ${filename} to intermediate area" VERBATIM) + add_dependencies("ocaml_${name}" ocaml_make_directory) endforeach() endfunction() +add_custom_target(ocaml_make_directory + COMMAND "${CMAKE_COMMAND}" "-E" "make_directory" "${LLVM_LIBRARY_DIR}/ocaml/llvm") add_custom_target("ocaml_all") -set_target_properties(ocaml_all PROPERTIES FOLDER "Misc") \ No newline at end of file +set_target_properties(ocaml_all PROPERTIES FOLDER "Misc") Index: llvm/trunk/test/lit.cfg =================================================================== --- llvm/trunk/test/lit.cfg +++ llvm/trunk/test/lit.cfg @@ -102,13 +102,13 @@ llvm_lib_dir = os.path.join(llvm_obj_root, 'lib') if llvm_lib_dir is not None: - llvm_ocaml_lib = os.path.join(llvm_lib_dir, 'ocaml') + top_ocaml_lib = os.path.join(llvm_lib_dir, 'ocaml') + llvm_ocaml_lib = os.path.join(top_ocaml_lib, 'llvm') if llvm_ocaml_lib is not None: + ocamlpath = os.path.pathsep.join((llvm_ocaml_lib, top_ocaml_lib)) if 'OCAMLPATH' in os.environ: - ocamlpath = os.path.pathsep.join((llvm_ocaml_lib, os.environ['OCAMLPATH'])) - config.environment['OCAMLPATH'] = ocamlpath - else: - config.environment['OCAMLPATH'] = llvm_ocaml_lib + ocamlpath = os.path.pathsep.join((ocamlpath, os.environ['OCAMLPATH'])) + config.environment['OCAMLPATH'] = ocamlpath if 'CAML_LD_LIBRARY_PATH' in os.environ: caml_ld_library_path = os.path.pathsep.join((llvm_ocaml_lib,