# Copyright (C) 2007-2009 LuaDist. # Created by Peter Kapec # Redistribution and use of this file is allowed according to the terms of the MIT license. # For details see the COPYRIGHT file distributed with LuaDist. # Please note that the package source code is licensed under its own license. PROJECT(luajava Java) # CMake configuration: CMAKE_MINIMUM_REQUIRED(VERSION 2.6 ) SET (CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true) # Where to install module parts: SET (INSTALL_BIN bin CACHE PATH "Where to install binaries to.") SET (INSTALL_LIB lib CACHE PATH "Where to install libraries to.") SET (INSTALL_DATA . CACHE PATH "Directory the package can store documentation, tests or other data in.") SET (INSTALL_DOC ${INSTALL_DATA}/doc CACHE PATH "Recommended directory to install documentation into.") SET (INSTALL_TEST ${INSTALL_DATA}/test CACHE PATH "Recommended directory to install tests into.") # We need Lua to compile FIND_PACKAGE (Lua51 REQUIRED) INCLUDE_DIRECTORIES( ${LUA_INCLUDE_DIR}) # We need Java to compile FIND_PACKAGE (Java REQUIRED) FIND_PACKAGE (JNI REQUIRED) INCLUDE_DIRECTORIES( #~ $ENV{JAVA_HOME}/include #~ $ENV{JAVA_HOME}/include/win32 ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2} ) #~ SET(JAVA_BIN $ENV{JAVA_HOME}/bin) FIND_PROGRAM(JAVA_HEAD NAMES javah PATHS ${JAVA_BIN_PATH}) # LuaJava JAVA parts SET(VERSION 1.1) SET(PKG luajava-${VERSION}) SET(JAR_FILE ${PKG}.jar) FILE(GLOB JAVA_FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/java/org/keplerproject/luajava/*.java) ADD_CUSTOM_TARGET(LUAJAVA_CLASSES #~ COMMAND ${JAVA_BIN}/javac -sourcepath ${CMAKE_CURRENT_SOURCE_DIR}/src/java -d ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/src/java/org/keplerproject/luajava/*.java #~ COMMAND ${JAVA_COMPILE} -sourcepath ${CMAKE_CURRENT_SOURCE_DIR}/src/java -d ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/src/java/org/keplerproject/luajava/*.java COMMAND ${JAVA_COMPILE} -sourcepath ${CMAKE_CURRENT_SOURCE_DIR}/src/java -d ${CMAKE_CURRENT_BINARY_DIR} ${JAVA_FILES} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Creating luajava classes" VERBATIM ) FILE(GLOB JAVA_COMPILED_FILES ${CMAKE_CURRENT_BINARY_DIR}/org/keplerproject/luajava/*.class) ADD_CUSTOM_TARGET(LUAJAVA_JAR #~ COMMAND ${JAVA_BIN}/jar cvf ${JAR_FILE} org/keplerproject/luajava/*.class #~ COMMAND ${JAVA_ARCHIVE} cvf ${JAR_FILE} org/keplerproject/luajava/*.class COMMAND ${JAVA_ARCHIVE} cvf ${JAR_FILE} ${JAVA_COMPILED_FILES} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Creating luajava.jar" VERBATIM ) ADD_DEPENDENCIES(LUAJAVA_JAR LUAJAVA_CLASSES) ADD_CUSTOM_TARGET(LUAJAVA_H #~ COMMAND ${JAVA_BIN}/javah -o ${CMAKE_CURRENT_BINARY_DIR}/luajava.h -classpath ${CMAKE_CURRENT_BINARY_DIR} org.keplerproject.luajava.LuaState COMMAND ${JAVA_HEAD} -o ${CMAKE_CURRENT_BINARY_DIR}/luajava.h -classpath ${CMAKE_CURRENT_BINARY_DIR} org.keplerproject.luajava.LuaState WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Creating luajava.h" VERBATIM ) ADD_DEPENDENCIES(LUAJAVA_H LUAJAVA_JAR) # LuaJava module INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) SET (LUAJAVA_SRC src/c/luajava.c ) ADD_LIBRARY(luajava-${VERSION} SHARED "${LUAJAVA_SRC}") ADD_DEPENDENCIES(luajava-${VERSION} LUAJAVA_H) ADD_DEFINITIONS(-O2 -Wall -fPIC -W -Waggregate-return -Wcast-align -Wmissing-prototypes -Wnested-externs -Wshadow -Wwrite-strings) SET_TARGET_PROPERTIES(luajava-${VERSION} PROPERTIES PREFIX "") IF(WIN32) SET_TARGET_PROPERTIES(luajava-${VERSION} PROPERTIES LINK_FLAGS "-Wl,--add-stdcall-alias -Wl,--kill-at") ENDIF() TARGET_LINK_LIBRARIES(luajava-${VERSION} ${LUA_LIBRARIES}) INSTALL(TARGETS luajava-${VERSION} DESTINATION ${INSTALL_LIB}) INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${JAR_FILE} DESTINATION ${INSTALL_LIB} ) # LuaJava Batch & Shell scripts IF (WIN32 AND NOT CYGWIN AND NOT MSYS) SET(CONF_SUFFIX .bat) ENDIF () CONFIGURE_FILE (${CMAKE_CURRENT_SOURCE_DIR}/luajava${CONF_SUFFIX}.cmake ${CMAKE_CURRENT_BINARY_DIR}/luajava${CONF_SUFFIX} @ONLY) INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/luajava${CONF_SUFFIX} DESTINATION ${INSTALL_BIN}) # Install docs and tests INSTALL(FILES License.txt DESTINATION ${INSTALL_DATA}) INSTALL(DIRECTORY doc/ DESTINATION ${INSTALL_DOC}) INSTALL(DIRECTORY test/ DESTINATION ${INSTALL_TEST})