瀏覽代碼

Automate compiler flags selection.

RDR8 8 年之前
父節點
當前提交
e23c120c8b
共有 3 個文件被更改,包括 55 次插入31 次删除
  1. 25 21
      examples/Makefile
  2. 1 1
      examples/audio_standalone.c
  3. 29 9
      src/Makefile

+ 25 - 21
examples/Makefile

@@ -40,7 +40,7 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP)
     else
         UNAMEOS:=$(shell uname)
         ifeq ($(UNAMEOS),Linux)
-            PLATFORM_OS=linux
+            PLATFORM_OS=LINUX
             LIBPATH=linux
         else
         ifeq ($(UNAMEOS),Darwin)
@@ -66,15 +66,24 @@ endif
 endif
 
 # define compiler flags:
-#  -O2         defines optimization level
-#  -s          strip unnecessary data from build
-#  -Wall       turns on most, but not all, compiler warnings
-#  -std=c99    use standard C from 1999 revision
-ifeq ($(PLATFORM),PLATFORM_RPI)
-    CFLAGS = -O2 -s -Wall -std=gnu99 -fgnu89-inline
-else
+#  -O2                  defines optimization level
+#  -Og                  enable debugging
+#  -s                   strip unnecessary data from build
+#  -Wall                turns on most, but not all, compiler warnings
+#  -std=c99             defines C language mode (standard C from 1999 revision)
+#  -std=gnu99           defines C language mode (GNU C from 1999 revision)
+#  -fgnu89-inline       declaring inline functions support (GCC optimized)
+#  -Wno-missing-braces  ignore invalid warning (GCC bug 53119)
+#  -D_DEFAULT_SOURCE    use with -std=c99 on Linux to enable timespec and drflac
+ifeq ($(PLATFORM),PLATFORM_DESKTOP)
+    ifeq ($(PLATFORM_OS),WINDOWS)
+        CFLAGS = -O2 -s -Wall -std=c99
+    endif
     ifeq ($(PLATFORM_OS),LINUX)
-    CFLAGS = -O2 -s -Wall -std=c99 --D_DEFAULT_SOURCE
+        CFLAGS = -O2 -s -Wall -std=c99 -D_DEFAULT_SOURCE
+    endif
+    ifeq ($(PLATFORM_OS),OSX)
+        CFLAGS = -O2 -s -Wall -std=c99
     endif
 endif
 ifeq ($(PLATFORM),PLATFORM_WEB)
@@ -82,7 +91,9 @@ ifeq ($(PLATFORM),PLATFORM_WEB)
     #-s ALLOW_MEMORY_GROWTH=1   # to allow memory resizing
     #-s TOTAL_MEMORY=16777216   # to specify heap memory size (default = 16MB)
 endif
-
+ifeq ($(PLATFORM),PLATFORM_RPI)
+    CFLAGS = -O2 -s -Wall -std=gnu99 -fgnu89-inline 
+endif
 #CFLAGSEXTRA = -Wextra -Wmissing-prototypes -Wstrict-prototypes
 
 # define raylib release directory for compiled library
@@ -90,7 +101,7 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP)
     ifeq ($(PLATFORM_OS),WINDOWS)
         RAYLIB_PATH = ../release/win32/mingw32
     endif
-    ifeq ($(PLATFORM_OS),linux)
+    ifeq ($(PLATFORM_OS),LINUX)
         RAYLIB_PATH = ../release/linux
     endif
     ifeq ($(PLATFORM_OS),OSX)
@@ -112,9 +123,7 @@ ifeq ($(PLATFORM),PLATFORM_RPI)
 endif
 ifeq ($(PLATFORM),PLATFORM_DESKTOP)
     # add standard directories for GNU/Linux
-    ifeq ($(PLATFORM_OS),linux)
-        INCLUDES += -I/usr/local/include/raylib/
-    else ifeq ($(PLATFORM_OS),WINDOWS)
+    ifeq ($(PLATFORM_OS),WINDOWS)
         # external libraries headers
         # GLFW3
             INCLUDES += -I../src/external/glfw3/include
@@ -143,7 +152,7 @@ endif
 # define any libraries to link into executable
 # if you want to link libraries (libname.so or libname.a), use the -lname
 ifeq ($(PLATFORM),PLATFORM_DESKTOP)
-    ifeq ($(PLATFORM_OS),linux)
+    ifeq ($(PLATFORM_OS),LINUX)
         # libraries for Debian GNU/Linux desktop compiling
         # requires the following packages:
         # libglfw3-dev libopenal-dev libegl1-mesa-dev
@@ -187,11 +196,6 @@ ifeq ($(PLATFORM_OS),WINDOWS)
     WINFLAGS = ../src/resources -Wl,--subsystem,windows
 endif
 
-# Linux Fix to timespect from 
-ifeq ($(PLATFORM_OS),linux)
-        CFLAGS += -D_DEFAULT_SOURCE
-    endif
-
 ifeq ($(PLATFORM),PLATFORM_WEB)
     EXT = .html
 endif
@@ -536,7 +540,7 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP)
 		find . -type f -perm +ugo+x -delete
 		rm -f *.o
     else
-    ifeq ($(PLATFORM_OS),linux)
+    ifeq ($(PLATFORM_OS),LINUX)
 		find -type f -executable | xargs file -i | grep -E 'x-object|x-archive|x-sharedlib|x-executable' | rev | cut -d ':' -f 2- | rev | xargs rm -f
     else
 		del *.o *.exe

+ 1 - 1
examples/audio_standalone.c

@@ -29,7 +29,7 @@
 #endif
 #include "audio.h"
 
-#if defined(__linux)
+#if defined(__linux__)
 
 #include <stdio.h>
 #include <termios.h>

+ 29 - 9
src/Makefile

@@ -60,7 +60,7 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP)
     else
         UNAMEOS:=$(shell uname)
         ifeq ($(UNAMEOS),Linux)
-            PLATFORM_OS=linux
+            PLATFORM_OS=LINUX
         else
         ifeq ($(UNAMEOS),Darwin)
             PLATFORM_OS=OSX
@@ -152,16 +152,36 @@ ifeq ($(PLATFORM),PLATFORM_ANDROID)
 endif
 
 # define compiler flags:
-#  -O1                  defines optimization level
+#  -O2                  defines optimization level
 #  -Og                  enable debugging
 #  -Wall                turns on most, but not all, compiler warnings
 #  -std=c99             defines C language mode (standard C from 1999 revision)
 #  -std=gnu99           defines C language mode (GNU C from 1999 revision)
 #  -fgnu89-inline       declaring inline functions support (GCC optimized)
 #  -Wno-missing-braces  ignore invalid warning (GCC bug 53119)
-#  -D_DEFAULT_SOURCE    use with -std=c99 on Linux to enable timespec and audio
-#CFLAGS = -O1 -Wall -std=gnu99 -fgnu89-inline -Wno-missing-braces
-CFLAGS = -O1 -Wall -std=c99 -D_DEFAULT_SOURCE
+#  -D_DEFAULT_SOURCE    use with -std=c99 on Linux to enable timespec and drflac
+ifeq ($(PLATFORM),PLATFORM_DESKTOP)
+    ifeq ($(PLATFORM_OS),WINDOWS)
+        CFLAGS = -O1 -Wall -std=gnu99 -fgnu89-inline -Wno-missing-braces
+    endif
+    ifeq ($(PLATFORM_OS),LINUX)
+        CFLAGS = -O1 -Wall -std=c99 -D_DEFAULT_SOURCE
+    endif
+    ifeq ($(PLATFORM_OS),OSX)
+        CFLAGS = -O1 -Wall -std=gnu99 -fgnu89-inline -Wno-missing-braces
+    endif
+endif
+ifeq ($(PLATFORM),PLATFORM_WEB)
+    CFLAGS = -O1 -Wall -std=c99 -s USE_GLFW=3 -s ASSERTIONS=1 --preload-file resources
+    #-s ALLOW_MEMORY_GROWTH=1   # to allow memory resizing
+    #-s TOTAL_MEMORY=16777216   # to specify heap memory size (default = 16MB)
+endif
+ifeq ($(PLATFORM),PLATFORM_RPI)
+    CFLAGS = -O1 -Wall -std=gnu99 -fgnu89-inline -Wno-missing-braces
+endif
+#CFLAGSEXTRA = -Wextra -Wmissing-prototypes -Wstrict-prototypes
+
+###########
 
 
 # if shared library required, make sure code is compiled as position independent
@@ -217,7 +237,7 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP)
     ifeq ($(PLATFORM_OS),WINDOWS)
         OUTPUT_PATH = ../release/win32/mingw32
     endif
-    ifeq ($(PLATFORM_OS),linux)
+    ifeq ($(PLATFORM_OS),LINUX)
         OUTPUT_PATH = ../release/linux
     endif
     ifeq ($(PLATFORM_OS),OSX)
@@ -268,7 +288,7 @@ ifeq ($(PLATFORM),PLATFORM_WEB)
 	@echo "libraylib.bc generated (web version)!"
 else
     ifeq ($(SHARED),YES)
-        ifeq ($(PLATFORM_OS),linux)
+        ifeq ($(PLATFORM_OS),LINUX)
             # compile raylib to shared library version for GNU/Linux.
             # WARNING: you should type "make clean" before doing this target 
 			$(CC) -shared -o $(OUTPUT_PATH)/libraylib.so $(OBJS)
@@ -337,7 +357,7 @@ utils.o : utils.c utils.h
 # TODO: add other platforms.
 install :
 ifeq ($(ROOT),root)
-    ifeq ($(PLATFORM_OS),linux)
+    ifeq ($(PLATFORM_OS),LINUX)
         # On GNU/Linux there are some standard directories that contain
         # libraries and header files. These directory (/usr/local/lib and
         # /usr/local/include/) are for libraries that are installed
@@ -360,7 +380,7 @@ endif
 # TODO: see 'install' target.
 unistall :
 ifeq ($(ROOT),root)
-    ifeq ($(PLATFORM_OS),linux)
+    ifeq ($(PLATFORM_OS),LINUX)
 			rm --force /usr/local/include/raylib.h
         ifeq ($(SHARED),YES)
 			rm --force /usr/local/lib/libraylib.so