|
|
1.1 root 1:
2: cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
3:
4: project(Previous)
5:
6: SET(APP_NAME "Previous")
7:
8: set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
9:
10: include(CheckIncludeFiles)
11: include(CheckFunctionExists)
1.1.1.2 ! root 12: include(CheckCCompilerFlag)
1.1 root 13: include(DistClean)
14:
15: # Set build type to "Release" if user did not specify any build type yet
16: # Other possible values: Debug, Release, RelWithDebInfo and MinSizeRel
17: if(NOT CMAKE_BUILD_TYPE)
18: set(CMAKE_BUILD_TYPE Release)
19: endif(NOT CMAKE_BUILD_TYPE)
20:
21: # set(CMAKE_VERBOSE_MAKEFILE 1)
22:
23: # ##########################
24: # Conditional build features
25: # ##########################
26:
27: set(ENABLE_TRACING 1
28: CACHE BOOL "Enable tracing messages for debugging")
1.1.1.2 ! root 29: set(ENABLE_WINUAE_CPU 1
! 30: CACHE BOOL "Enable WinUAE CPU core (experimental!)")
1.1 root 31:
32: if(APPLE)
33: set(ENABLE_OSX_BUNDLE 1
1.1.1.2 ! root 34: CACHE BOOL "Built Previous as Mac OS X application bundle")
1.1 root 35: # set(CMAKE_OSX_ARCHITECTURES "i386" CACHE STRING "Target architectures" FORCE)
36: # set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.6.sdk" CACHE STRING "10.6 SDK" FORCE)
37: # set(CMAKE_OSX_DEPLOYMENT_TARGET "10.5" CACHE STRING "Target Min 10.5" FORCE)
38: set(ADDITIONAL_INCLUDES ${FRAMEWORKS})
39: set_source_files_properties(${FRAMEWORKS} PROPERTIES MACOSX_PACKAGE_LOCATION Frameworks)
40: else()
41: set(ENABLE_OSX_BUNDLE 0
42: CACHE BOOL "Built Hatari as Mac OS X application bundle")
43: endif(APPLE)
44:
45: # ####################
46: # Check for libraries:
47: # ####################
48:
49: find_package(SDL REQUIRED)
50: if(NOT SDL_FOUND)
51: message(FATAL_ERROR "SDL library not found!")
52: endif(NOT SDL_FOUND)
53:
54: find_package(Math)
55:
56: find_package(Readline)
57: if(READLINE_FOUND)
58: set(CMAKE_REQUIRED_LIBRARIES "readline")
59: check_function_exists(rl_filename_completion_function HAVE_RL_COMPLETION_FUNCTION)
60: if(HAVE_RL_COMPLETION_FUNCTION)
61: set(HAVE_LIBREADLINE 1)
62: else()
63: unset(READLINE_FOUND)
64: endif(HAVE_RL_COMPLETION_FUNCTION)
65: set(CMAKE_REQUIRED_LIBRARIES "")
66: endif(READLINE_FOUND)
67:
68: find_package(ZLIB)
69: if(ZLIB_FOUND)
70: set(HAVE_LIBZ 1)
71: set(HAVE_ZLIB_H 1)
72: endif(ZLIB_FOUND)
73:
74: find_package(PNG)
75: if(PNG_FOUND)
76: set(HAVE_LIBPNG 1)
77: endif(PNG_FOUND)
78:
79: find_package(X11)
80: if(X11_FOUND)
81: set(HAVE_X11 1)
82: endif(X11_FOUND)
83:
84: find_package(PortAudio)
85: if(PORTAUDIO_FOUND)
86: set(HAVE_PORTAUDIO 1)
87: endif(PORTAUDIO_FOUND)
88:
89: # ################
90: # CPP Definitions:
91: # ################
92:
93: add_definitions(-DCONFDIR=\"/etc\")
94:
95: # Test for large file support:
96: execute_process(COMMAND getconf LFS_CFLAGS
97: OUTPUT_VARIABLE DETECTED_LFS_CFLAGS
98: ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
99: if(DETECTED_LFS_CFLAGS)
100: add_definitions(${DETECTED_LFS_CFLAGS})
101: # message(STATUS "Large filesystem flags: ${DETECTED_LFS_CFLAGS}")
102: endif(DETECTED_LFS_CFLAGS)
103:
104: # Additional CFLAGS suggested by the SDL library:
105: execute_process(COMMAND pkg-config --cflags-only-other sdl
106: OUTPUT_VARIABLE DETECTED_SDL_CFLAGS
107: ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
108: if(DETECTED_SDL_CFLAGS)
109: add_definitions(${DETECTED_SDL_CFLAGS})
110: # message(STATUS "Additional CFLAGS of SDL: ${DETECTED_SDL_CFLAGS}")
111: endif(DETECTED_SDL_CFLAGS)
112:
113: # ###########################
114: # Check for optional headers:
115: # ###########################
116:
117: check_include_files(termios.h HAVE_TERMIOS_H)
118: check_include_files(strings.h HAVE_STRINGS_H)
119: check_include_files(malloc.h HAVE_MALLOC_H)
120: check_include_files(SDL/SDL_config.h HAVE_SDL_SDL_CONFIG_H)
121: check_include_files(sys/times.h HAVE_SYS_TIMES_H)
122: check_include_files("sys/socket.h;sys/un.h" HAVE_UNIX_DOMAIN_SOCKETS)
123:
124: # #############################
125: # Check for optional functions:
126: # #############################
127:
128: check_function_exists(cfmakeraw HAVE_CFMAKERAW)
129: check_function_exists(setenv HAVE_SETENV)
130: check_function_exists(select HAVE_SELECT)
131: check_function_exists(posix_memalign HAVE_POSIX_MEMALIGN)
132: check_function_exists(memalign HAVE_MEMALIGN)
133:
1.1.1.2 ! root 134: check_function_exists(gettimeofday HAVE_GETTIMEOFDAY)
! 135: check_function_exists(nanosleep HAVE_NANOSLEEP)
! 136: check_function_exists(alphasort HAVE_ALPHASORT)
! 137: check_function_exists(scandir HAVE_SCANDIR)
! 138:
! 139:
1.1 root 140: # #############
141: # Other CFLAGS:
142: # #############
143:
144: # Warning flags:
145: if(CMAKE_COMPILER_IS_GNUCC)
146: set(CMAKE_C_FLAGS "-Wcast-qual -g -O0 -Wbad-function-cast -Wpointer-arith ${CMAKE_C_FLAGS}")
147: set(CMAKE_C_FLAGS "-Wmissing-prototypes -Wstrict-prototypes ${CMAKE_C_FLAGS}")
148: set(CMAKE_C_FLAGS "-Wall -Wwrite-strings -Wsign-compare ${CMAKE_C_FLAGS}")
1.1.1.2 ! root 149: #set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wextra -Wno-unused-parameter -Wno-empty-body")
! 150: set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wformat-security")
! 151: #set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wshadow -D_FORTIFY_SOURCE=2 -Werror")
1.1 root 152: endif(CMAKE_COMPILER_IS_GNUCC)
153:
1.1.1.2 ! root 154: # Building Previous w/o optimization is no fun...
1.1 root 155: IF (CMAKE_BUILD_TYPE STREQUAL "Debug")
156: set(CMAKE_C_FLAGS "-O ${CMAKE_C_FLAGS}")
157: ENDIF (CMAKE_BUILD_TYPE STREQUAL "Debug")
158:
159: # ####################
160: # Paths configuration:
161: # ####################
162:
163: if(NOT BINDIR)
164: set(BINDIR bin)
165: endif()
166:
167: if(NOT DATADIR)
168: set(DATADIR share/previous)
169: endif()
170:
171: if(NOT BIN2DATADIR)
172: if(WIN32)
173: set(BIN2DATADIR "."
174: CACHE STRING "Relative path from bindir to datadir")
175: elseif(ENABLE_OSX_BUNDLE)
176: set(BIN2DATADIR "../Resources"
177: CACHE STRING "Relative path from bindir to datadir")
178: else()
179: set(BIN2DATADIR "../share/hatari"
180: CACHE STRING "Relative path from bindir to datadir")
181: endif(WIN32)
182: mark_as_advanced(BIN2DATADIR)
183: endif()
184:
185: if(NOT MANDIR)
186: set(MANDIR share/man/man1)
187: endif()
188:
189: if(NOT DOCDIR)
190: set(DOCDIR share/doc/previous)
191: endif()
192:
193: # #########################################
194: # Create config.h and recurse into subdirs:
195: # #########################################
196:
197: configure_file(${CMAKE_SOURCE_DIR}/cmake/config-cmake.h
198: ${CMAKE_BINARY_DIR}/config.h)
199:
200: add_subdirectory(src)
201:
202: include(FindPythonInterp)
203: if(PYTHONINTERP_FOUND)
204: add_subdirectory(python-ui)
205: endif(PYTHONINTERP_FOUND)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.