diff --git a/CMakeLists.txt b/CMakeLists.txt index ecb759cf..a9d046a7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,6 +2,17 @@ cmake_minimum_required(VERSION 2.8.12) project(PSMoveAPI) +# get rid of Visual Studio's default "Debug" and "Release" output directories +if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}) + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}) + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}) + + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}) + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}) + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}) +endif() + # Step into the subdirectories include("src/CMakeLists.txt") include("examples/CMakeLists.txt") diff --git a/bindings/CMakeLists.txt b/bindings/CMakeLists.txt index 38e75a60..b6ceeaf7 100644 --- a/bindings/CMakeLists.txt +++ b/bindings/CMakeLists.txt @@ -52,14 +52,30 @@ if(SWIG_FOUND) endif() set(INFO_BUILD_JAVA_BINDINGS "Yes") - add_custom_target(psmoveapi.jar ALL - COMMAND ${CMAKE_COMMAND} -E make_directory ${PSMOVEAPI_JAVA_PKG_DIR} - COMMAND cp *.java ${PSMOVEAPI_JAVA_PKG_DIR}/ - COMMAND javac ${PSMOVEAPI_JAVA_PKG_DIR}/*.java - COMMAND jar cf psmoveapi.jar ${PSMOVEAPI_JAVA_PKG_DIR}/*.class - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT "Java bindings JAR archive" - ) + # NOTE: We need a platform-independent copy command for the .java files, but neither the COMMAND + # nor CMake's "-E copy" support wildcards on Windows. We could probably whip up something + # more elegant which only makes the relevant line platform-dependent without copying all + # the other lines. But this simple branching is pretty robust and also works with older + # versions of CMake. + if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") + add_custom_target(psmoveapi.jar + COMMAND ${CMAKE_COMMAND} -E make_directory ${PSMOVEAPI_JAVA_PKG_DIR} + COMMAND ${CMAKE_CURRENT_LIST_DIR}/copy_java.bat ${PSMOVEAPI_JAVA_PKG_DIR}/ + COMMAND javac ${PSMOVEAPI_JAVA_PKG_DIR}/*.java + COMMAND jar cf psmoveapi.jar ${PSMOVEAPI_JAVA_PKG_DIR}/*.class + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Java bindings JAR archive" + ) + else() + add_custom_target(psmoveapi.jar + COMMAND ${CMAKE_COMMAND} -E make_directory ${PSMOVEAPI_JAVA_PKG_DIR} + COMMAND cp *.java ${PSMOVEAPI_JAVA_PKG_DIR}/ + COMMAND javac ${PSMOVEAPI_JAVA_PKG_DIR}/*.java + COMMAND jar cf psmoveapi.jar ${PSMOVEAPI_JAVA_PKG_DIR}/*.class + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Java bindings JAR archive" + ) + endif() set(PSMOVEAPI_PROCESSING_DIR "${CMAKE_CURRENT_LIST_DIR}/processing/libraries/psmove") @@ -69,8 +85,12 @@ if(SWIG_FOUND) set(PSMOVEAPI_PAIRING_TOOL_NAME "psmove") ELSEIF(${CMAKE_SYSTEM_NAME} MATCHES "Windows") set(PSMOVEAPI_LIB_PLATFORM "windows") - set(PSMOVEAPI_NATIVE_LIB "libpsmove_java.dll") + set(PSMOVEAPI_NATIVE_LIB "psmove_java.dll") set(PSMOVEAPI_PAIRING_TOOL_NAME "psmove.exe") + + if(MINGW) + set(PSMOVEAPI_NATIVE_LIB "libpsmove_java.dll") + endif() ELSE() # Linux set(PSMOVEAPI_LIB_PLATFORM "linux") set(PSMOVEAPI_NATIVE_LIB "libpsmove_java.so") diff --git a/bindings/copy_java.bat b/bindings/copy_java.bat new file mode 100644 index 00000000..631cfc35 --- /dev/null +++ b/bindings/copy_java.bat @@ -0,0 +1,8 @@ +if "%~1"=="" ( + echo Destination directory missing + exit /b 1 +) + +copy *.java "%~1" + +exit /b 0 diff --git a/scripts/build_package.sh b/scripts/build_package.sh index ceffcf20..458f61fd 100644 --- a/scripts/build_package.sh +++ b/scripts/build_package.sh @@ -103,14 +103,14 @@ case "$BUILD_TYPE" in WIN_ARCH=${BUILD_TYPE#windows-native-msvc-} BUILDDIR="build-${WIN_ARCH}" PLATFORM_BIN=" - $BUILDDIR/Release/psmove.exe - $BUILDDIR/Release/test_tracker.exe + $BUILDDIR/psmove.exe + $BUILDDIR/test_tracker.exe " PLATFORM_LIB=" - $BUILDDIR/Release/psmoveapi.dll - $BUILDDIR/Release/psmoveapi.lib - $BUILDDIR/Release/psmoveapi_tracker.dll - $BUILDDIR/Release/psmoveapi_tracker.lib + $BUILDDIR/psmoveapi.dll + $BUILDDIR/psmoveapi.lib + $BUILDDIR/psmoveapi_tracker.dll + $BUILDDIR/psmoveapi_tracker.lib " pkg_zipfile_7z