#To make a solution file to navigate the JACK source code from the Visual Studio GUI: #xcopy /s /y c:\work\osd\jack\1.9.8\patch\*.* c:\work\jack-1.9.8\jack-1.9.8 #cmake -G "Visual Studio 9 2008" -DCMAKE_INSTALL_PREFIX=c:\work\local c:\work\jack-1.9.8\jack-1.9.8 #cmake -G "NMake Makefiles" -DCMAKE_INSTALL_PREFIX=c:\work\local c:\work\jack-1.9.8\jack-1.9.8 project (jack) cmake_minimum_required(VERSION 2.8) find_package (Threads REQUIRED) #Will define CMAKE_THREAD_LIBS_INIT if (MSVC) add_definitions (-D_CRT_SECURE_NO_WARNINGS) #It is a common misunderstanding that stdint.h is part of C++. #Explicitly look up homegrown stdint.h in order to recover from this misunderstanding. find_path (STDINT_INCLUDE_DIR c99/stdint.h) if (NOT STDINT_INCLUDE_DIR) MESSAGE (FATAL_ERROR "Could not find stdint.h") else () MESSAGE (STATUS "Found stdint.h in " ${STDINT_INCLUDE_DIR}/c99) include_directories (${STDINT_INCLUDE_DIR}/c99) endif (NOT STDINT_INCLUDE_DIR) endif (MSVC) #We need a regex implementation. #On WIN32, use TRE. if (WIN32) find_path (TRE_INCLUDE_DIR NAMES regex.h PATHS include PATH_SUFFIXES tre) if (NOT TRE_INCLUDE_DIR) MESSAGE (FATAL_ERROR "Could not find regex.h") else () MESSAGE (STATUS "Found regex.h in " ${TRE_INCLUDE_DIR}) include_directories (${TRE_INCLUDE_DIR}) endif (NOT TRE_INCLUDE_DIR) find_library (TRE_LIBRARY tre) if (NOT TRE_LIBRARY) MESSAGE (FATAL_ERROR "Could not find tre.lib") else () MESSAGE (STATUS "Found tre.lib in " ${TRE_LIBRARY}) endif (NOT TRE_LIBRARY) endif (WIN32) include_directories ( common common/jack ) set (JACK_SOURCE_FILES common/JackDriver.cpp common/JackEngine.cpp common/JackAudioDriver.cpp common/JackActivationCount.cpp common/JackArgParser.cpp common/JackAudioAdapter.cpp common/JackAudioAdapterFactory.cpp common/JackAudioAdapterInterface.cpp common/JackAudioPort.cpp common/JackClient.cpp common/JackDebugClient.cpp common/JackDriverLoader.cpp common/JackEngineControl.cpp common/JackEngineProfiling.cpp common/JackError.cpp common/JackExternalClient.cpp common/JackFrameTimer.cpp common/JackFreewheelDriver.cpp common/JackGlobals.cpp common/JackGraphManager.cpp common/JackInternalClient.cpp common/JackLibAPI.cpp common/JackLibClient.cpp common/JackLibSampleRateResampler.cpp common/JackLoopbackDriver.cpp common/JackMessageBuffer.cpp common/JackMidiAPI.cpp common/JackMidiAsyncQueue.cpp common/JackMidiAsyncWaitQueue.cpp common/JackMidiBufferReadQueue.cpp common/JackMidiBufferWriteQueue.cpp common/JackMidiDriver.cpp common/JackMidiPort.cpp common/JackMidiRawInputWriteQueue.cpp common/JackMidiRawOutputWriteQueue.cpp common/JackMidiReadQueue.cpp common/JackMidiReceiveQueue.cpp common/JackMidiSendQueue.cpp common/JackMidiUtil.cpp common/JackMidiWriteQueue.cpp common/JackNetAdapter.cpp common/JackNetAPI.cpp common/JackNetDriver.cpp common/JackNetInterface.cpp common/JackNetManager.cpp common/JackNetOneDriver.cpp common/JackNetTool.cpp common/JackPort.cpp common/JackPortType.cpp common/JackProfiler.cpp common/JackResampler.cpp common/JackRestartThreadedDriver.cpp common/JackServer.cpp common/JackServerAPI.cpp common/JackServerGlobals.cpp common/JackShmMem.cpp common/JackThreadedDriver.cpp common/JackTimedDriver.cpp common/JackTools.cpp common/JackTransportEngine.cpp common/JackWaitThreadedDriver.cpp common/JackControlAPI.cpp common/shm.c common/JackAPI.cpp common/JackConnectionManager.cpp ) set (JACK_HEADER_FILES common/JackSystemDeps.h common/JackDriver.h common/JackEngine.h common/JackLockedEngine.h common/JackAudioDriver.h common/JackTime.h common/JackError.h common/JackEngineControl.h common/JackPort.h common/JackGraphManager.h common/JackException.h common/JackActivationCount.h common/JackArgParser.h common/JackAudioAdapter.h common/JackAudioAdapterInterface.h common/JackProfiler.h common/JackNetOneDriver.h common/JackNetManager.h common/JackNetDriver.h common/JackNetAdapter.h common/JackLoopbackDriver.h common/JackInternalClient.h common/JackConnectionManager.h ) if (WIN32) add_definitions (-DWIN32) #To avoid conflicts between winsock2.h and windows.h, define WIN32_LEAN_AND_MEAN add_definitions (-DWIN32_LEAN_AND_MEAN) include_directories (windows) include_directories (windows/portaudio) set (JACK_SOURCE_FILES ${JACK_SOURCE_FILES} windows/JackMMCSS.cpp windows/JackMMCSS.h windows/JackNetWinSocket.cpp windows/JackNetWinSocket.h windows/JackWinEvent.cpp windows/JackWinNamedPipe.cpp windows/JackWinNamedPipe.h windows/JackWinNamedPipeClientChannel.cpp windows/JackWinNamedPipeClientChannel.h windows/JackWinNamedPipeNotifyChannel.cpp windows/JackWinNamedPipeNotifyChannel.h windows/JackWinNamedPipeServerChannel.cpp windows/JackWinNamedPipeServerChannel.h windows/JackWinNamedPipeServerNotifyChannel.cpp windows/JackWinNamedPipeServerNotifyChannel.h windows/JackWinProcessSync.cpp windows/JackWinProcessSync.h windows/JackWinSemaphore.cpp windows/JackWinSemaphore.h windows/JackWinServerLaunch.cpp windows/JackWinThread.cpp windows/JackWinThread.h windows/JackWinTime.c windows/portaudio/JackPortAudioAdapter.cpp windows/portaudio/JackPortAudioAdapter.h windows/portaudio/JackPortAudioDevices.cpp windows/portaudio/JackPortAudioDevices.h windows/portaudio/JackPortAudioDriver.cpp windows/portaudio/JackPortAudioDriver.h windows/portaudio/pa_asio.h windows/portaudio/portaudio.h ) endif (WIN32) #Compiling shared library, so all public declarations must be decorated as exports. #add_definitions (-DSERVER_SIDE) add_library (jack ${JACK_SOURCE_FILES} ${JACK_HEADER_FILES} ) target_link_libraries (jack ${CMAKE_THREAD_LIBS_INIT} ) if (WIN32) target_link_libraries (jack ws2_32 mswsock psapi) endif (WIN32) set (JACKDMP_SOURCE_FILES common/Jackdmp.cpp ) if (WIN32) set (JACKDMP_SOURCE_FILES ${JACKDMP_SOURCE_FILES} windows/getopt.c windows/getopt1.c windows/getopt.h ) endif (WIN32) #add_executable (jackdmp # ${JACKDMP_SOURCE_FILES} #) # #target_link_libraries (jackdmp # jack # ${TRE_LIBRARY} #) # #install (TARGETS jackdmp ARCHIVE DESTINATION lib RUNTIME DESTINATION bin) install (TARGETS jack ARCHIVE DESTINATION lib RUNTIME DESTINATION bin) install (DIRECTORY common/jack DESTINATION include)