1 Index: cmake/modules/OCIVersion.c
  2 ===================================================================
  3 --- cmake/modules/OCIVersion.c  (revision 0)
  4 +++ cmake/modules/OCIVersion.c  (revision 0)
  5 @@ -0,0 +1,18 @@
  6 +#include <stdio.h>
  7 +#include <oci.h>
  8 +
  9 +int main()
 10 +{
 11 +/*   signed int major_version, minor_version, update_num, patch_num, port_update_num;   */
 12 +/*   /\*signed int res =*\/ OCIClientVersion (  &major_version, */
 13 +/*                        &minor_version, */
 14 +/*                        &update_num, */
 15 +/*                        &patch_num, */
 16 +/*                        &port_update_num ); */
 17 +  
 18 +/*   printf("%d.%d.%d.%d.%d\n", */
 19 +/*      major_version, minor_version, update_num, patch_num, port_update_num); */
 20 +
 21 +/*  printf("%dR%d\n",  OCI_MAJOR_VERSION, OCI_MINOR_VERSION); */
 22 +  return OCI_MAJOR_VERSION * 10 + OCI_MINOR_VERSION;
 23 +}
 24 Index: cmake/modules/FindOracle.cmake
 25 ===================================================================
 26 --- cmake/modules/FindOracle.cmake  (revision 0)
 27 +++ cmake/modules/FindOracle.cmake  (revision 0)
 28 @@ -0,0 +1,209 @@
 29 +# TOra: Configure Oracle libraries
 30 +#
 31 +# ORACLE_FOUND - system has Oracle OCI
 32 +# ORACLE_HAS_XML - Oracle has XDK support(thick client installed)
 33 +# ORACLE_INCLUDES - where to find oci.h
 34 +# ORACLE_LIBRARIES - the libraries to link against to use Oracle OCI
 35 +#
 36 +# Components: CLNTSH, OCCI, XML, OCIEI
 37 +# CLNTSH is enabled by default
 38 +# for example: FIND_PACKAGE(Oracle REQUIRED CLNTSH OCCI)
 39 +#
 40 +# copyright (c) 2007 Petr Vanek <petr@scribus.info>
 41 +# copyright (c) 2009 Ivan Brezina <ibre5041@ibrezina.net>
 42 +# Redistribution and use is allowed according to the terms of the GPLv2 license.
 43 +#
 44 +
 45 +SET(ORACLE_FOUND "NO")
 46 +SET(ORACLE_HAS_XML "NO")
 47 +SET(ORACLE_HOME $ENV{ORACLE_HOME})
 48 +
 49 +# "components" handling. It enables to find various independent libraries,
 50 +IF( Oracle_FIND_COMPONENTS )
 51 +  FOREACH( component ${Oracle_FIND_COMPONENTS} )
 52 +    STRING( TOUPPER ${component} _COMPONENT )
 53 +    SET( ORACLE_USE_${_COMPONENT} 1 )
 54 +  ENDFOREACH( component )
 55 +
 56 +  # legacy behaviour
 57 +  IF (NOT ORACLE_USE_CLNTSH)
 58 +    SET(ORACLE_USE_CLNTSH 1)
 59 +  ENDIF (NOT ORACLE_USE_CLNTSH)
 60 +
 61 +  # it looks like it's mandatory on macosx
 62 +  IF (APPLE)
 63 +    SET(ORACLE_USE_OCIEI 1)
 64 +  ENDIF (APPLE)
 65 +
 66 +ENDIF( Oracle_FIND_COMPONENTS )
 67 +
 68 +
 69 +IF (ORACLE_PATH_INCLUDES)
 70 +  SET (ORACLE_INCLUDES_LOCATION ${ORACLE_PATH_INCLUDES})
 71 +ELSE (ORACLE_PATH_INCLUDES)
 72 +    SET (ORACLE_INCLUDES_LOCATION
 73 +            ${ORACLE_HOME}/rdbms/public
 74 +            ${ORACLE_HOME}/include
 75 +            # xdk
 76 +            ${ORACLE_HOME}/xdk/include
 77 +            # sdk
 78 +            ${ORACLE_HOME}/sdk/include
 79 +            # xe on windows
 80 +            ${ORACLE_HOME}/OCI/include
 81 +       )
 82 +ENDIF (ORACLE_PATH_INCLUDES)
 83 +
 84 +IF (ORACLE_PATH_LIB)
 85 +    SET (ORACLE_LIB_LOCATION ${ORACLE_PATH_LIB})
 86 +ELSE (ORACLE_PATH_LIB)
 87 +    SET (ORACLE_LIB_LOCATION
 88 +            # TODO add 32/64bit version here (lib32/lib64 on some platforms)
 89 +            ${ORACLE_HOME}/lib
 90 +            # xe on windows
 91 +            ${ORACLE_HOME}/OCI/lib/MSVC
 92 +            ${ORACLE_HOME}
 93 +        )
 94 +ENDIF (ORACLE_PATH_LIB)
 95 +
 96 +FIND_PATH(
 97 +    ORACLE_INCLUDES
 98 +    oci.h
 99 +    ${ORACLE_INCLUDES_LOCATION}
100 +    NO_DEFAULT_PATH NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH
101 +)
102 +
103 +SET(FORCE_ERROR 0)
104 +
105 +IF (ORACLE_USE_CLNTSH)
106 +    FIND_LIBRARY(
107 +        ORACLE_LIBRARY_CLNTSH
108 +        NAMES libclntsh clntsh oci
109 +        PATHS ${ORACLE_LIB_LOCATION}
110 +        NO_DEFAULT_PATH NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH
111 +    )
112 +    IF (NOT ORACLE_LIBRARY_CLNTSH AND Oracle_FIND_REQUIRED)
113 +        SET(FORCE_ERROR "CLNTSH")
114 +    ENDIF (NOT ORACLE_LIBRARY_CLNTSH AND Oracle_FIND_REQUIRED)
115 +ENDIF (ORACLE_USE_CLNTSH)
116 +
117 +
118 +IF (ORACLE_USE_OCCI)
119 +    FIND_LIBRARY(
120 +        ORACLE_LIBRARY_OCCI
121 +        NAMES libocci occi
122 +        PATHS ${ORACLE_LIB_LOCATION}
123 +        NO_DEFAULT_PATH NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH
124 +    )
125 +    IF (NOT ORACLE_LIBRARY_OCCI AND Oracle_FIND_REQUIRED)
126 +        SET(FORCE_ERROR "OCCI")
127 +    ENDIF (NOT ORACLE_LIBRARY_OCCI AND Oracle_FIND_REQUIRED)
128 +ENDIF (ORACLE_USE_OCCI)
129 +
130 +IF (ORACLE_USE_XML)
131 +    FIND_PATH(
132 +        ORACLE_INCLUDES_XML
133 +        xml.h
134 +        ${ORACLE_INCLUDES_LOCATION}
135 +        NO_DEFAULT_PATH NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH
136 +    )
137 +    IF (NOT ORACLE_INCLUDES_XML AND Oracle_FIND_REQUIRED)
138 +        SET(FORCE_ERROR "XML")
139 +    ENDIF (NOT ORACLE_INCLUDES_XML AND Oracle_FIND_REQUIRED)
140 +
141 +    FIND_LIBRARY(
142 +        ORACLE_LIBRARY_XML
143 +        NAMES libxml xml libxml10 xml10 libxml11 xml11 oraxml10 oraxml11
144 +        PATHS ${ORACLE_LIB_LOCATION}
145 +        NO_DEFAULT_PATH NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH
146 +    )
147 +    IF (NOT ORACLE_LIBRARY_XML AND Oracle_FIND_REQUIRED)
148 +        SET(FORCE_ERROR "XML")
149 +    ENDIF (NOT ORACLE_LIBRARY_XML AND Oracle_FIND_REQUIRED)
150 +ENDIF (ORACLE_USE_XML)
151 +
152 +IF (ORACLE_USE_OCIEI)
153 +    FIND_LIBRARY(ORACLE_LIBRARY_OCIEI
154 +        NAMES libociei ociei
155 +        PATHS ${ORACLE_LIB_LOCATION}
156 +        NO_DEFAULT_PATH NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH
157 +    )
158 +    IF (NOT ORACLE_LIBRARY_OCIEI AND Oracle_FIND_REQUIRED)
159 +        SET(FORCE_ERROR "OCIEI")
160 +    ENDIF (NOT ORACLE_LIBRARY_OCIEI AND Oracle_FIND_REQUIRED)
161 +ENDIF (ORACLE_USE_OCIEI)
162 +
163 +MESSAGE("fer ${FORCE_ERROR}")
164 +IF (NOT FORCE_ERROR)
165 +    SET (ORACLE_LIBRARY ${ORACLE_LIBRARY_CLNTSH} ${ORACLE_LIBRARY_OCCI} ${ORACLE_LIBRARY_XML} ${ORACLE_LIBRARY_OCIEI})
166 +ENDIF (NOT FORCE_ERROR)
167 +
168 +
169 +IF (ORACLE_INCLUDES AND ORACLE_LIBRARY)
170 +    SET(ORACLE_LIBRARIES ${ORACLE_LIBRARY})
171 +    SET(ORACLE_FOUND "YES")
172 +ENDIF (ORACLE_INCLUDES AND ORACLE_LIBRARY)
173 +
174 +IF (ORACLE_INCLUDES_XML AND ORACLE_LIBRARY_XML)
175 +    ADD_DEFINITIONS(-DORACLE_HAS_XML)
176 +    SET(ORACLE_HAS_XML "YES")
177 +    LIST(APPEND ORACLE_INCLUDES ${ORACLE_INCLUDES_XML})
178 +ENDIF (ORACLE_INCLUDES_XML AND ORACLE_LIBRARY_XML)
179 +  
180 +# guess OCI version
181 +IF (NOT DEFINED ORACLE_OCI_VERSION AND ORACLE_INCLUDES)
182 +  TRY_RUN(OCIVER_TYPE OCIVER_COMPILED
183 +    ${CMAKE_BINARY_DIR}
184 +    ${CMAKE_SOURCE_DIR}/cmake/modules/OCIVersion.c
185 +    CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${ORACLE_INCLUDES}"
186 +    OUTPUT_VARIABLE OCIVER)
187 +
188 +  IF (${OCIVER_TYPE} GREATER "110")
189 +    SET(ORACLE_OCI_VERSION "11G")
190 +  ELSEIF (${OCIVER_TYPE} EQUAL "102")
191 +    SET(ORACLE_OCI_VERSION "10G_R2")
192 +  ELSEIF (${OCIVER_TYPE} EQUAL "101")
193 +    SET(ORACLE_OCI_VERSION "10G")
194 +  ELSEIF (${OCIVER_TYPE} EQUAL "91")
195 +    SET(ORACLE_OCI_VERSION "9")
196 +  ELSEIF (${OCIVER_TYPE} EQUAL "92")
197 +    SET(ORACLE_OCI_VERSION "9")
198 +  ELSEIF (NOT ${OCIVER_TYPE} GREATER "90")
199 +    SET(ORACLE_OCI_VERSION "8I")
200 +  ELSE (${OCIVER_TYPE} GREATER "110")
201 +    SET(ORACLE_OCI_VERSION "10G_R2")
202 +  ENDIF (${OCIVER_TYPE} GREATER "110")
203 +  
204 +  MESSAGE(STATUS "Guessed ORACLE_OCI_VERSION value: ${ORACLE_OCI_VERSION} for ${OCIVER_TYPE}")
205 +ENDIF (NOT DEFINED ORACLE_OCI_VERSION AND ORACLE_INCLUDES)
206 +
207 +MESSAGE(STATUS "Found Oracle: ${ORACLE_LIBRARY} (ORACLE_HOME='${ORACLE_HOME}')")
208 +MESSAGE(STATUS "    includes: ${ORACLE_INCLUDES}")
209 +MESSAGE(STATUS "Found XML Oracle: ${ORACLE_INCLUDES_XML} ${ORACLE_LIBRARY_XML}")
210 +
211 +IF (ORACLE_FOUND)
212 +    # there *must* be OCI version defined for internal libraries
213 +    IF (ORACLE_OCI_VERSION)
214 +        ADD_DEFINITIONS(-DOTL_ORA${ORACLE_OCI_VERSION})
215 +    ELSE (ORACLE_OCI_VERSION)
216 +        MESSAGE(FATAL_ERROR "Set -DORACLE_OCI_VERSION for your oci. [8, 8I, 9I, 10G, 10G_R2]")
217 +    ENDIF (ORACLE_OCI_VERSION)
218 +
219 +ELSE (ORACLE_FOUND)
220 +
221 +    MESSAGE(STATUS "Oracle not found.")
222 +    MESSAGE(STATUS "Oracle: You can specify includes: -DORACLE_PATH_INCLUDES=/usr/include/oracle/10.2.0.3/client")
223 +    MESSAGE(STATUS "   currently found includes: ${ORACLE_INCLUDES}")
224 +    MESSAGE(STATUS "Oracle: You can specify libs: -DORACLE_PATH_LIB=/usr/lib/oracle/10.2.0.3/client/lib")
225 +    MESSAGE(STATUS "   currently found libs: ${ORACLE_LIBRARY}")
226 +
227 +    IF (FORCE_ERROR)
228 +        MESSAGE(STATUS "Failed module info: ${FORCE_ERROR}")
229 +    ENDIF (FORCE_ERROR)
230 +    IF (Oracle_FIND_REQUIRED)
231 +        MESSAGE(FATAL_ERROR "Could not find Oracle library")
232 +    ELSE (Oracle_FIND_REQUIRED)
233 +        # setup the variables for silent continue
234 +        SET (ORACLE_INCLUDES "")
235 +    ENDIF (Oracle_FIND_REQUIRED)
236 +
237 +ENDIF (ORACLE_FOUND)
238 Index: oraload/CMakeLists.txt
239 ===================================================================
240 --- oraload/CMakeLists.txt  (revision 76)
241 +++ oraload/CMakeLists.txt  (working copy)
242 @@ -1,29 +1,14 @@
243 -set(DESIRED_QT_VERSION 4.5)
244 -find_package(Qt4 REQUIRED)
245  include(${QT_USE_FILE})
246 -include_directories(${CMAKE_SOURCE_DIR}/lib)
247 -include_directories(${CMAKE_SOURCE_DIR}/lobwizard)
248 -include_directories(${ORACLE_HOME}/rdbms/public)
249 -include_directories(${ORACLE_HOME}/sdk/include)
250 -# InstantClient 11 Linux
251 -find_file(NNZ10 libnnz11.so ${ORACLE_HOME} ${ORACLE_HOME}/lib)
252 -find_file(OCCI libocci.so.11.1 ${ORACLE_HOME} ${ORACLE_HOME}/lib)
253 -find_file(CLNTSH libclntsh.so.11.1 ${ORACLE_HOME} ${ORACLE_HOME}/lib)
254 -# InstantClient 10 Linux
255 -#find_file(NNZ10 libnnz10.so ${ORACLE_HOME} ${ORACLE_HOME}/lib)
256 -#find_file(OCCI libocci.so.10.1 ${ORACLE_HOME} ${ORACLE_HOME}/lib)
257 -#find_file(CLNTSH libclntsh.so.10.1 ${ORACLE_HOME} ${ORACLE_HOME}/lib)
258 -# InstantClient 11 Mac
259 -#find_file(NNZ10 libnnz10.dylib ${ORACLE_HOME} ${ORACLE_HOME}/lib)
260 -#find_file(OCCI libocci.dylib.10.1 ${ORACLE_HOME} ${ORACLE_HOME}/lib)
261 -#find_file(CLNTSH libclntsh.dylib.10.1 ${ORACLE_HOME} ${ORACLE_HOME}/lib)
262 -set(libnnz ${NNZ10})
263 -set(libocci ${OCCI})
264 -set(libclntsh ${CLNTSH})
265 +
266 +include_directories( ${ORACLE_INCLUDES} )
267 +include_directories( ${CMAKE_SOURCE_DIR}/lib )
268 +include_directories( ${CMAKE_SOURCE_DIR}/lobwizard )
269 +include_directories(${CMAKE_BINARY_DIR}/lobwizard)
270 +
271  set(AppSrcs main.cpp)
272 -cmake_policy(SET CMP0003 NEW)
273 -link_directories(${CMAKE_SOURCE_DIR}/lib ${CMAKE_SOURCE_DIR}/lobwizard)
274 +
275 +link_directories(${CMAKE_BINARY_DIR}/lib ${CMAKE_BINARY_DIR}/lobwizard)
276  add_executable(oraload ${AppSrcs})
277 -target_link_libraries(oraload loadutil lobwizard ${libnnz} ${libocci} ${libclntsh})
278 +target_link_libraries(oraload loadutil lobwizard ${ORACLE_LIBRARIES})
279  
280  install(TARGETS oraload DESTINATION bin)
281 Index: lib/CMakeLists.txt
282 ===================================================================
283 --- lib/CMakeLists.txt  (revision 76)
284 +++ lib/CMakeLists.txt  (working copy)
285 @@ -1,11 +1,9 @@
286  set(LibSrcs BasicDML.cpp BinLob.cpp Connection.cpp CharLob.cpp Lob.cpp Log.cpp)
287 -include_directories(${CMAKE_SOURCE_DIR}/lib)
288 -include_directories(${ORACLE_HOME}/rdbms/public)
289 -include_directories(${ORACLE_HOME}/sdk/include)
290 -include_directories(${ORACLE_HOME}/rdbms/public)
291 -#add_library(loadutil SHARED ${LibSrcs})
292 +
293 +include_directories( ${ORACLE_INCLUDES} )
294 +
295  add_library(loadutil  ${LibSrcs})
296  
297 -target_link_libraries(loadutil ${libnnz} ${libocci} ${libclntsh})
298 +target_link_libraries(loadutil ${ORACLE_LIBRARIES} )
299  
300  install(TARGETS loadutil DESTINATION lib)
301 Index: lobwizard/CMakeLists.txt
302 ===================================================================
303 --- lobwizard/CMakeLists.txt    (revision 76)
304 +++ lobwizard/CMakeLists.txt    (working copy)
305 @@ -1,24 +1,21 @@
306 -# Qt 4.5 is required, make sure that at least 4.5 is installed
307 -# via "qmake -v".
308 -# find_package(Qt4) looks for qmake in the system path
309 -find_package(Qt4 REQUIRED)
310  include_directories(${CMAKE_SOURCE_DIR}/lib)
311 -include_directories(${ORACLE_HOME}/rdbms/public)
312 -include_directories(${ORACLE_HOME}/sdk/include)
313 -include_directories(${ORACLE_HOME}/rdbms/public)
314 +include_directories(${CMAKE_SOURCE_DIR}/lobwizard)
315 +include_directories(${CMAKE_BINARY_DIR}/lobwizard)
316 +include_directories(${ORACLE_INCLUDES})
317 +
318  include(${QT_USE_FILE})
319  set(LobSrcs LobWizard.cpp)
320  set(LobMocSrcs LobWizard.h)
321  set(LobUis LobWizard.ui)
322 -set(LobUis_H ui_LobWizard.h)
323 +# set(LobUis_H ui_LobWizard.h)
324  
325  qt4_wrap_cpp(LobMoc ${LobMocSrcs})
326  qt4_wrap_ui(LobUi ${LobUis})
327 -qt4_wrap_cpp(LobMocUi ${LobUis_H})
328 +# qt4_wrap_cpp(LobMocUi ${LobUis_H})
329  
330  add_definitions(-DQT_NO_DEBUG -FLAT_NAMESPACE)
331  cmake_policy(SET CMP0003 OLD)
332 -add_library(lobwizard ${LobSrcs} ${LobMoc} ${LobMocUi})
333 +add_library(lobwizard ${LobSrcs} ${LobMoc} ${LobUi})
334  target_link_libraries(lobwizard ${QT_LIBRARIES} pthread)
335  
336  install(TARGETS lobwizard DESTINATION lobwizard)
337 Index: CMakeLists.txt
338 ===================================================================
339 --- CMakeLists.txt  (revision 76)
340 +++ CMakeLists.txt  (working copy)
341 @@ -1,18 +1,23 @@
342  cmake_minimum_required(VERSION 2.4)
343 -set(ORACLE_HOME $ENV{ORACLE_HOME})
344 +project(LobShooter)
345 +cmake_policy(SET CMP0003 NEW)
346 +
347 +set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules")
348 +
349 +find_package(Oracle REQUIRED OCCI CLNTSH)
350 +
351 +set(DESIRED_QT_VERSION 4.5)
352 +find_package(Qt4 REQUIRED)
353 +
354 +
355  project(oraload)
356  add_subdirectory(lib)
357 +add_subdirectory(lobwizard)
358  add_subdirectory(oraload)
359 -add_subdirectory(lobwizard)
360 -MESSAGE("----------------------------------------------------------------------------------------------------------------------------------------------------------")
361 -MESSAGE("Your ORACLE_HOME is set to $ENV{ORACLE_HOME}")
362 -MESSAGE("Please make sure that it points to your local Oracle Installation.")
363 -MESSAGE("ORACLE_HOME is needed at compile time.")
364 -MESSAGE("----------------------------------------------------------------------------------------------------------------------------------------------------------")
365 -MESSAGE("Your LD_LIBRARY_PATH is set to $ENV{LD_LIBRARY_PATH}")
366 -MESSAGE("LD_LIBRARY_PATH is needed at runtime and should be added to your environment like this:")
367 -MESSAGE(" ")
368 -MESSAGE("LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ENV{ORACLE_HOME}/lib:$ENV{ORACLE_HOME}/ctx/lib")
369 -MESSAGE("LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:/usr/lib")
370 -MESSAGE("export LD_LIBRARY_PATH")
371 -MESSAGE("----------------------------------------------------------------------------------------------------------------------------------------------------------")
372 +
373 +MESSAGE(STATUS "")
374 +MESSAGE(STATUS "Your ORACLE_HOME is set to $ENV{ORACLE_HOME}")
375 +MESSAGE(STATUS "")
376 +MESSAGE(STATUS "Your LD_LIBRARY_PATH is set to $ENV{LD_LIBRARY_PATH}")
377 +MESSAGE(STATUS "It's required to contain oracle libraries in LD_LIBRARY_PATH")
378 +MESSAGE(STATUS "")